让koa跑在ts上。。。
发布于 9 年前 作者 Hanggi 11188 次浏览 最后一次编辑是 8 年前 来自 分享

最近ts相关话题经常出现在论坛里,我想很多人还不知道怎么用ts跑node,折腾了一阵,拿出来分享一下。

直入主题。

编辑器

随便选个顺手的好了

需求

  • Node.js
  • tsc
  • typings

安装typescript

npm install -g typescript

创建并初始化工程

老套路。。。

npm init

安装typings

npm install koa typings

tsconfig.json

tsconfig.json 文件是用来告诉Typescript编译器如何编译你的代码,同时告诉你的编辑器如何提供智能提示和错误提醒。

这里我们就用个现成的,因为是koa所以target要用ES6,不然yield什么都会报错。

{
    "compilerOptions": {
        "target": "ES6",
        "module": "commonjs",
        "noEmitOnError": true,
        "noImplicitAny": true,
        "experimentalDecorators": true,
        "sourceMap": true,
        "sourceRoot": "src",
        "outDir": "bld"
    },
    "exclude": [
        "bld",
        "node_modules"
    ]
}

建立应用

创建一个文件:

src/index.ts

例子直接用官网的:

import * as koa from 'koa';
let app = new koa;

app.use(function *(next) {
   let start = new Date;

   yield next;

   let ms = Number(new Date) - Number(start);
   console.log('%s %s - %s', this.method, this.url, ms)
});

app.use(function () {
    this.body = 'Hello World';
});

app.listen(3000);

编译&运行

代码都准备好了接下来就是编译运行,

tsc -w

但在之前要注意一点,我们要导入的koa是js写的,所以需要ts的声明文件。

typings上面已经有koa的声明文件了。

typings install koa --ambient --save

之后可以考虑把typings生成的文件夹里面的ts文件忽略掉。 编译,运行:

node bld/index.js
总结

感觉现在用ts跑node最大问题还是第三方包的引入问题,之前的tsd已经废弃,typings虽然把大部分常用库的声明都实现了,但还是有一种慢人一拍的感觉。而且node本身也实现了es6的大部分功能,感觉提升也不是很大。还是用ts写类似angular这种es6支持较差的浏览器端程序比较爽。

2 回复

koa===‘折腾’

npm i -g ts-node ts-node app.ts

回到顶部