LogoLogo
  • 导航指南
  • javaScript
    • Javascript中的继承
    • 业务中条件渲染的另一种玩法 · Issue #25 · stack-wuh/Blog
    • 从PM2到docker, 离不开的Nginx · Issue #26 · stack-wuh/Blog
    • 闭包在组合查询中的使用 · Issue #24 · stack-wuh/Blog
  • webpack
    • 优化网页的加载速度 · Issue #15 · stack-wuh/Blog
  • NODEJS
    • 为什么选择了Koajs
    • 创建一个简单的Koa服务
    • Koa应用的中间件
    • 我用了30天完成了我的个人网站--Express · Issue #17 · stack-wuh/Blog
  • React
    • 从业务中去学习React · Issue #22 · stack-wuh/Blog
    • Umi--多打包环境配置 · Issue #5 · stack-wuh/Blog
  • OTHER
    • 配置阿里云的OSS+CDN加速
由 GitBook 提供支持
在本页
  • 创建一个工程目录
  • 直接使用npm init 完成仓库
  • 引入Typescript

这有帮助吗?

  1. NODEJS

创建一个简单的Koa服务

创建一个工程目录

直接使用npm init 完成仓库

$ npm init

$ npm i koa

创建Koa app的代码极其简单,可以直接使用node 指令 启动koa的入口文件

在根目录下新建app.js 文件:

app.js
const Koa = require('koa')
const app = new Koa()

app.use(async ctx => {
    ctx.body = 'Hello, Welcome to Koajs'
})

app.listen(9999)

可以使用nodemon托管我们的koa应用,让我们不必多次重启我们的脚本,更新之后可以立即看到效果:

package.json
"script": {
    "start": "node ./app.js",
    "nodemon": "nodemon ./app.js"
}

引入Typescript

想玩ts很久了,在上面创建的基础上,我们继续添加一些额外的配置进我们的脚手架项目。

需要准备以下库: typescript, ts-node, @types/koa, @types/node

全局安装typescript之后,可以使用tsc 指令生成tsconfig.json 文件:

$ npm i -g typescript
$ tsc --init

在将.js后缀的文件改为.ts后,我们的node工程将会终止,因为之上的脚本只启动了app.js,而我们将app.js 变为app.ts 之后,node是没有办法直接编译ts文件的,所以需要我们改一下脚本文件。

package.json
"script": {
    "nodemon": "NODE_ENV=local nodemon --inspect -w src/**/*.ts -e ts --exec 'node -r ts-node/register ./src/app.ts'"
}

在接入了ts后,我们的写法就需要变一下了,因为不出意外的话,你的vscode现在已经到处都是红色的下划线链接了。

下面是一个简单的中间件:

logger.ts
import { Context, Next } from 'koa'

const logger = async (ctx: Context, next: Next) => {
    await next()
    
    ctx.body = `<h1>请求总用时: 200ms</h1>`
}

在引入koa的中间件库后,我们也需要根据提示,将一些申明文件引入。比如:koa-router库需要@types/koa-router。同时,也需要将一些ts编译的范围缩小,排除一些不需要的编译的文件:

tsconfig.json
{
  "include": [
    "src/**/*.ts",
    "typings/**/*.ts"
  ],
  "exclude": [
    "node_modules/*"
  ]
}

上一页为什么选择了Koajs下一页Koa应用的中间件

最后更新于3年前

这有帮助吗?