初始化环境
完整的代码在这
https://github.com/MiYogurt/todo-api
- 通过命令
mkdir todo
创建我们的文件夹 - 通过命令
tsc --init
初始化 typescript 环境。(前提你已经全局安装typescript) - 通过命令
npm init -y
初始化 package.json,保存项目所有依赖项。
Tip:安装 TypeScript 可以通过 npm i -g typescript 进行安装。
安装依赖项
以@types
开头的都是代码提示文件,也就是说这类依赖只是提供代码提示功能。
npm i koa -S
npm i @types/koa @types/node -D
配置 tsconfig.json
配置输出文件夹,且使其支持 async/await 特性。
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"sourceMap": false,
"outDir": "dist",
"lib": [
"es6",
"es7"
]
}
}
创建 src/index.ts 文件
此时你应该可以愉快的看到代码提示。
import * as Koa from 'koa';
const app = new Koa();
app.use(async ctx => {
ctx.body = "Todo App";
});
app.listen(3000, () => {
console.log("Server Stared on http://localhost:3000")
})
由于兼容的问题,请注意 import * as Koa from 'koa'
会被转换为 var Koa = require('koa')
。
而 import Koa from 'koa'
会被转换为 var Koa = require('koa').default
.
为了让它跑起来,我们先在命令行里面输入
tsc
当编译完成之后,我们应该可以看到一个 dist 文件夹。
增加 start 脚本
打开我们的 package.json
文件。在里面添加启动脚本。
"start": "node dist/index.js"
再在命令行里面运行
npm start
打开 localhost:3000 即可看到页面。
小提示: 在终端里面按住 Ctrl 点击 URL 是可以通过默认浏览器打开的。
难道每次写完代码我都需要重启服务器?
为了解决这个问题,我们需要 pm2 这个工具,这是一个部署 node 服务器的工具,能够实现自动重启。
首先全局安装 pm2
npm i -g pm2
此时你应该把你编辑器的自动保存给关掉
在 package.json 里面添加一些脚本
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"tsc": "tsc --watch",
"start": "pm2 start dist/index.js --watch dist"
},
此时我们需要启动俩个控制台,先运行 tsc
命令,之后在运行 start
.
npm run tsc
npm run start
启动start
命令之后,这个容器会在后台运行。
通过 pm2 list
, 可以查看所有的容器运行情况,以及容器的ID。通过 pm2 stop <容器id>
可以关闭运行的容器。通过 pm2 log <容器id>
可以查看容器运行的日志,Ctrl+C
退出
此时修改我们的文件。然后再回到网页,刷新就可以看到变化。