2017-03-06 210 views
-1

我正在开发一个Angular2应用程序,我正在为它构建一个简单的Web服务。因此我想在服务器上使用Typsecript。是否有标准的Typescript + Nodejs服务器样板模板?

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

我想知道是否有一个标准样板模板,可以简单地使用Typescript和Hello World Web服务在节点(也许快车)启动项目。

编辑:我想,问题的一个不同的旋转将是:是否有一个Web框架生成Typescript?编辑2:我无法找到一个正确的答案,所以我最终摆脱了Typescript,并在Sails与一个完整的框架,并只使用他们的Javascript版本。

+1

Downvoter,请评论。 –

回答

1

针对Visual Studio的Nodejs工具附带一对Express启动器模板。不幸的是,他们使用旧版本的Express,并不是一个好的开始。

将TypeScript应用于任何问题的最佳方式是从一些JavaScript开始。所以任何Express模板项目都可以做得很好,如果您使用的是Visual Studio代码或其他一些IDE,则会自动为您安装类型。

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

此外,通过将JavaScript/TypeScript前端与其他后端技术一起使用NodeJS后端,您也没有任何收获。序列化屏障从字面上封装了它们,所以只需使用后端最有意义的东西即可。

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

+0

我只是想建立一个简单的web服务。我认为从我听到的情况来看,Node服务应该比其他技术更简单。因此,为什么我认为这将是微型服务的不错选择。 –

+0

如果你真的只想要一个API来测试你的应用程序,你可以使用像npm:json-server这样的东西,它可以让你将文件托管在任意目录之外并向它们发出HTTP请求。这只是为了测试,但它不是很好。 –

+1

Downvoter请评论。 –

0

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

我也开始一个例子帆typoescript应用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() { 

    }); 
});