初始化
初始化package.json文件
运行 npm init 初始化package.json
添加scripts
"scripts": {
"dev": "ts-node index.ts",
"test": "jest"
},
下载对应插件和依赖
yarn add koa @types/koa
yarn add koa-router @types/koa-router
yarn add ts-node typescript
创建app文件夹,并在里面创建controller文件夹以及router文件夹
/app/controller/IndexController.ts
创建构造器,返回路由需要的对应数据
import { Context } from "koa";
class IndexController {
async index(ctx: Context) {
ctx.body = '123456'
}
}
export default new IndexController()
/app/router/index.ts
创建路由
import KoaRouter from 'koa-router'
import IndexController from '../controller/IndexController'
const router = new KoaRouter({
// 路由前缀,可以不添加,添加了就需要在路由使用/admin访问
prefix: '/admin'
})
router.get('/', IndexController.index)
export default router
/app/index.ts
导出整个服务
import Koa from 'koa'
import router from './router'
import { Server } from 'http'
const app = new Koa()
app.use(router.routes())
/*
单元测试
*/
const run = (port: number): Server => {
return app.listen(port, () => {
console.log(`server 已经启动了,测试域名是:http://127.0.0.1:${port}`)
})
}
export default run
/index.ts
最后在根目录下运行
import run from './app'
run(8888)
运行
通过package.json的scripts运行index.ts npm run dev
总结
上述操作完了之后,基本上就能运行,然后再浏览器使用 http://127.0.0.1:8888/admin 访问了,但是有一个问题,现在还不是热更新的,更新一次代码就需要重启一次项目。
使用热更新
安装热更新npm install -g nodemon
nodemon.json
{
// 代表监听app、utils下的所有ts文件 以及 根目录下的index.ts文件
"watch": ["app/**/*.ts","./index.ts","utils/**/*.ts"],
// 忽略文件
"ignore": ["node_modules"],
"exec": "ts-node index.ts",
"ext": ".ts"
}
package.json
修改scripts下的dev运行命令
"scripts": {
"dev": "nodemon"
},
使用单元测试
添加依赖 yarn add jest @types/jest ts-jest -D
/tests/index.test.ts
describe('sum set', () => {
it('sum 1', () => {
expect(1+1).toEqual(2)
})
})
Jest-Runner插件
VSCode搜索 Jest-Runner 插件,之后直接在 index.test.ts 文件里点击 Run 运行