【问题标题】:Is there a standard Typescript + Nodejs server boilerplate template? [closed]是否有标准的 Typescript + Nodejs 服务器样板模板? [关闭]
【发布时间】:2017-07-25 18:44:07
【问题描述】:

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

我在互联网上查了一下,发现只有一些博客文章使用 Node 和 Express 手动设置 Typsecript。

我想知道是否有一个标准样板模板可以简单地使用 Typescript 和一个 Hello World 在 Node(也许是 Express)中的 Webservice 启动一个项目。

编辑:我想,这个问题的不同之处在于:是否有为 Typescript 构建的 Web 框架?

EDIT2:我找不到正确的答案,所以我最终放弃了 Typescript,并在 Sails 中使用了一个完整的框架,只使用了他们的 Javascript 版本。

【问题讨论】:

  • 你可以使用 fortjs - fortjs.info 。它完全内置在 typescript 中。

标签: node.js angular express typescript


【解决方案1】:

Nodejs Tools for Visual Studio 附带了几个 Express 入门模板。不幸的是,他们使用的是旧版本的 Express,因此不是一个好的开始。

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

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

此外,使用带有 JavaScript/TypeScript 前端的 NodeJS 后端并没有任何其他后端技术的优势。序列化屏障确实封装了它们,所以只需使用最有意义的后端即可。

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

【讨论】:

  • 我只是想建立一个简单的网络服务。我认为根据我所听到的消息,启动 Node 服务应该比其他技术更简单。因此,为什么我认为它是微服务的不错选择。
  • 如果你真的只是想要一个 API 来测试你的应用程序,你可以使用像 npm:json-server 这样的东西,它只会让你从任意目录托管文件并向它们发出 HTTP 请求。这只是用于测试的东西,但它不是很好。
【解决方案2】:

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

我还启动了一个示例sailstypoescript 应用程序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() {

  });
});

【讨论】:

    【解决方案3】:

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

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

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

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

    该项目还提到了其他一些范例,例如容器化和 CI/CD。欢迎投稿! :)

    【讨论】:

      【解决方案4】:

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

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

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

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

      (注意:我不会以任何方式发布此内容;我只是觉得这门课程很有帮助。)

      【讨论】:

        猜你喜欢
        • 2021-03-20
        • 1970-01-01
        • 1970-01-01
        • 2015-03-01
        • 2019-05-10
        • 1970-01-01
        • 2012-08-16
        • 2011-04-21
        • 2023-03-26
        相关资源
        最近更新 更多