是否有标准的Typescript + Nodejs服务器样板模板?

时间:2017-03-06 02:05:44

标签: node.js angular express typescript

我正在开发一个Angular2应用程序,我正在尝试为它构建一个简单的Web服务。因此我也想在服务器上使用Typsecript。

我在互联网上看了一下这个问题,发现只有一些博客文章通过Node和Express手动设置Typsecript。

我想知道是否有一个标准的样板模板,它只是简单地使用Typescript和Node中的Hello World Web服务启动一个项目(可能还有Express)。

编辑:我想,问题的另一个不同之处是:是否有针对Typescript的Web框架构建?

EDIT2:我找不到合适的答案,所以我最终离开了Typescript并在Sails中使用了完整的框架,只使用了他们的Javascript版本。

4 个答案:

答案 0 :(得分:1)

Visual Studio的Nodejs工具附带了几个Express入门模板。不幸的是,他们使用的是旧版Express,并不是一个好的起点。

将TypeScript应用于任何问题的最佳方法是从一些JavaScript开始。因此,任何Express模板项目都可以正常运行,如果您使用的是Visual Studio代码或许多其他IDE,则会自动安装这些类型。

或只是npm i --save @types/express

与使用任何其他后端技术的JavaScript / TypeScript前端相比,使用NodeJS后端也没有任何好处。序列化障碍确实封装了它们,所以只需使用后端最有意义的东西。

如果您的目标是共享模型的接口声明,那么有很多工具可以从其他语言源文件生成TypeScript。

答案 1 :(得分:0)

https://github.com/dwyl/hapi-typescript-example

我还开了一个例子sails typoescript app https://github.com/aslanvaroqua/sails-ts

基本要点:

/**
 * WelcomeController
 *
 * @description :: Server-side logic for managing Welcomes
 * @help        :: See http://links.sailsjs.org/docs/controllers
 */

import e = require('express');
import util = require('util');

declare const sails: any;

const WelcomeController = {
  index: function (req: e.Request, res: e.Response, next: Function) {
    console.log('index() from WelcomeController.ts');
    sails.models.welcome.find().limit(1).then((welcome) => {
      /// TODO: add logger
      console.log(`welcome page rendering w/ message ${welcome[0].message}`);
      return res.render('welcome', {
        welcome: welcome[0].message
      });
    }).catch((err:Error) => {
      console.error(err.message);
      return res.render('500', err)
    });


  },
  config: function (req: e.Request, res:e.Response, next:Function) {
    console.log('config() from WelcomeController.ts');
    return res.status(200)
      .send('<h1>sails.config :</h1><pre>' + util.inspect(sails.config) + '<pre>');
  }
};

module.exports = WelcomeController;

模型

export class Welcome {
   attributes: any = {
    id: {
      type: 'integer',
      primaryKey: true
    },
    message: {
      type: 'string',
      required: true,
      defaultsTo: 'default message'
    }
  };
}

typings.json

{
  "dependencies": {
    "bluebird": "registry:npm/bluebird#3.5.0+20170314181206",
    "connect": "registry:dt/connect#3.4.0+20160510010627",
    "express": "registry:dt/express#4.0.0+20170118060322",
    "express-serve-static-core": "registry:dt/express-serve-static-core#4.0.0+20170324160323",
    "sails": "registry:npm/sails#0.12.0+20160610190623",
    "serve-static": "registry:dt/serve-static#1.7.1+20161128184045"
  },
  "globalDependencies": {
    "es6-shim": "registry:dt/es6-shim#0.31.2+20160726072212",
    "node": "registry:dt/node#7.0.0+20170322231424",
    "socket.io": "registry:dt/socket.io#1.4.4+20170313110830"
  }
}

测试

describe("HashSet", function() {
  it("should behave like a set, removing duplicates", function() {

  });
});

答案 2 :(得分:0)

这里是使用Express和TypeScript制作的样板模板。建立在最小的工作设置之上,它使用Mongoose和Inversify体现了模型,服务和数据访问对象(DAO)的面向对象的实现:

https://github.com/omerg/express-mongodb-base

如果您具有Spring MVC和Hibernate的J2EE编程背景,那么项目的结构应该非常熟悉。

该项目已准备好部署到Heroku。您要做的就是为Heroku和MongoDb设置环境变量。

该项目还提到了其他一些范例,例如Containerization和CI / CD。欢迎捐款! :)

答案 3 :(得分:0)

FWIW:这不会直接回答问题,但作为补充答案可能会有所帮助。

Stephen Grider 的 Udemy 课程 Typescript: The Complete Developer's Guide 包含大约 3.5 小时的内容,专门针对将 TS 与 Express 集成。

它提供了样板文件,并深入探讨了开发人员在此过程中可能遇到的许多集成问题(例如 CORS、bodyParser 等)。

我自己参加了这门课程并学到了很多东西,所以我想在这里分享一下,以防对其他人有所帮助。

(注意:我没有动力以任何方式发布此内容;我只是发现该课程很有帮助。)