详解如何用typescript开发koa2的二三事

2020-06-17 05:35:39易采站长站整理

前言

最近在写一个博客的项目,前端用的

vue+typescript+element-ui
,后台则选择了
koa2+typescript+mongoDB
的组合。写这篇博客的目的也是在写后台的过程遇到一些问题,查了很多资料才解决。于是权当总结,亦是记录,可以给别人做一个完整的参考。

基本信息

这里列出来的是会用到的一些配置信息,毕竟一直都在更新,可能这里说的以后某个版本就不支持了。


"nodemon" : "^1.18.3",
"ts-node" : "^7.0.1",
"typescript" : "^3.1.1"
"node" : "9.0.0"

问题描述

这次遇到的问题其实都和typescript有关。koa2已经出来很久了,开发基本成熟,但是这次找资料的时候鲜有发现使用typescript开发的,即便有,也都很简单,而且没法解决我的问题。

那言归正传,使用ts开发koa,因为不涉及webpack打包编译,所以就会遇到几个问题:

编译
实时刷新,重启服务器
debugger

这些确实是初期很困扰我的地方,使用node开发,最简单的无非是

node xxx.js
,进一步也就是热更新。但引入ts后就需要考虑编译和实时刷新的问题。毕竟不像每改一点代码,就手动重启服务器,手动编译。

解决方案

以下是我的解决方案,后面我会说一下为什么这样写,如果来不及看或者只想要答案的话复制就行。


"watch" : "ts-node ./app/index.ts",
"start" : "nodemon --watch app/index.js",
"build" : "tsc",
"debugger" : "nodemon --watch ./app -e ts,tsx --exec node --inspect -r ts-node/register ./app/index.ts",
"watch-serve": "nodemon --watch './app/**/*' -e ts,tsx --exec ts-node ./app/index.ts"

那我们一个一个来说。

npm run watch

这个命令就是在本地使用

ts-node
启动一个服务器。来看一下对
ts-node
的描述。

TypeScript execution and REPL for node.js, with source map support. Works with typescript@>=2.0.

这是一个在

node.js
的执行和交互的typescript环境,简而言之就是为了ts而生的!!

那这条命令就是根据当前的入口运行程序,唯一的一个问题是,不支持热更新。所以pass。

npm run build
&&
npm run start

这俩放一起说是因为相关性比较高。可以说是相互依赖的关系吧。