初始化环境

完整的代码在这

  1. https://github.com/MiYogurt/todo-api
  • 通过命令 mkdir todo 创建我们的文件夹
  • 通过命令 tsc --init 初始化 typescript 环境。(前提你已经全局安装typescript)
  • 通过命令 npm init -y 初始化 package.json,保存项目所有依赖项。

Tip:安装 TypeScript 可以通过 npm i -g typescript 进行安装。

安装依赖项

@types开头的都是代码提示文件,也就是说这类依赖只是提供代码提示功能。

  1. npm i koa -S
  2. npm i @types/koa @types/node -D

配置 tsconfig.json

配置输出文件夹,且使其支持 async/await 特性。

  1. {
  2. "compilerOptions": {
  3. "module": "commonjs",
  4. "target": "es5",
  5. "noImplicitAny": false,
  6. "sourceMap": false,
  7. "outDir": "dist",
  8. "lib": [
  9. "es6",
  10. "es7"
  11. ]
  12. }
  13. }

创建 src/index.ts 文件

此时你应该可以愉快的看到代码提示。

  1. import * as Koa from 'koa';
  2. const app = new Koa();
  3. app.use(async ctx => {
  4. ctx.body = "Todo App";
  5. });
  6. app.listen(3000, () => {
  7. console.log("Server Stared on http://localhost:3000")
  8. })

由于兼容的问题,请注意 import * as Koa from 'koa' 会被转换为 var Koa = require('koa')

import Koa from 'koa' 会被转换为 var Koa = require('koa').default.

为了让它跑起来,我们先在命令行里面输入

  1. tsc

当编译完成之后,我们应该可以看到一个 dist 文件夹。

增加 start 脚本

打开我们的 package.json 文件。在里面添加启动脚本。

  1. "start": "node dist/index.js"

再在命令行里面运行

  1. npm start

打开 localhost:3000 即可看到页面。

小提示: 在终端里面按住 Ctrl 点击 URL 是可以通过默认浏览器打开的。

难道每次写完代码我都需要重启服务器?

为了解决这个问题,我们需要 pm2 这个工具,这是一个部署 node 服务器的工具,能够实现自动重启。

首先全局安装 pm2

  1. npm i -g pm2

此时你应该把你编辑器的自动保存给关掉

在 package.json 里面添加一些脚本

  1. "scripts": {
  2. "test": "echo \"Error: no test specified\" && exit 1",
  3. "tsc": "tsc --watch",
  4. "start": "pm2 start dist/index.js --watch dist"
  5. },

此时我们需要启动俩个控制台,先运行 tsc 命令,之后在运行 start.

  1. npm run tsc
  2. npm run start

启动start命令之后,这个容器会在后台运行。

通过 pm2 list, 可以查看所有的容器运行情况,以及容器的ID。通过 pm2 stop <容器id> 可以关闭运行的容器。通过 pm2 log <容器id> 可以查看容器运行的日志,Ctrl+C 退出

此时修改我们的文件。然后再回到网页,刷新就可以看到变化。