我正在开发一个Angular2应用程序,我正在尝试为它构建一个简单的Web服务。因此我也想在服务器上使用Typsecript。
我在互联网上看了一下这个问题,发现只有一些博客文章通过Node和Express手动设置Typsecript。
我想知道是否有一个标准的样板模板,它只是简单地使用Typescript和Node中的Hello World
Web服务启动一个项目(可能还有Express)。
编辑:我想,问题的另一个不同之处是:是否有针对Typescript的Web框架构建?
EDIT2:我找不到合适的答案,所以我最终离开了Typescript并在Sails中使用了完整的框架,只使用了他们的Javascript版本。
答案 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 等)。
我自己参加了这门课程并学到了很多东西,所以我想在这里分享一下,以防对其他人有所帮助。
(注意:我没有动力以任何方式发布此内容;我只是发现该课程很有帮助。)