node.js 13 Web框架Koa

上一篇:

之前我们已经介绍过node.js的经典Web框架Express ( ),而Koa框架是由Express框架的原班人马开发的。

node.js 13 Web框架Koa

koa

Koa的官网介绍Koa的时候认为Koa是node.js下一代Web框架。据了解,阿里内部也在使用Koa。

Koa相比于Express一个最大的特点就是引入了async/await,从而避免了回调函数嵌套。这也是为什么我在写这一篇之前介绍了node.js的异步以及async/await。

从历史使用量上来说,Express框架是领先的,但是Koa在新的项目中受欢迎程度还是比较高的。

Koa安装运行

  1. 安装Koa "npm install koa --save"
<code>D:\\Projects\\nodejs\\NodeDemo\\koatest>npm install koa --save
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
added 43 packages from 23 contributors and audited 55 packages in 21.652s
found 0 vulnerabilities/<code>
  1. Koa脚手架 Koa-generator

跟Express一样,Express有express-generator,Koa同样也有自己的脚手架,可以用来生成项目。运行命令"npm install koa-generator -g".

<code>D:\\Projects\\nodejs\\NodeDemo\\koatest>npm install koa-generator -g 

D:\\Program Files\\nodejs\\node_global\\koa2 -> D:\\Program Files\\nodejs\\node_global\\node_modules\\koa-generator\\bin\\koa2
D:\\Program Files\\nodejs\\node_global\\koa -> D:\\Program Files\\nodejs\\node_global\\node_modules\\koa-generator\\bin\\koa
+ [email protected]
added 5 packages from 4 contributors in 19.502s/<code>
  1. 使用Koa2创建项目

注意命令中要使用Koa2,而不是Koa。如果使用Koa那么表示使用Koa1。

<code>D:\\Projects\\nodejs\\NodeDemo\\koatest>koa2 -e
destination is not empty, continue? [y/N] y

create : .
create : ./package.json
create : ./app.js
create : ./public/javascripts
create : ./public
create : ./public/stylesheets
create : ./public/stylesheets/style.css
create : ./routes
create : ./routes/index.js
create : ./routes/users.js
create : ./public/images
create : ./views
create : ./views/index.ejs
create : ./views/error.ejs
create : ./bin
create : ./bin/www

install dependencies:
> cd . && npm install

run the app:
> SET DEBUG=koa* & npm start koatest/<code>

这里我们使用使用了命令"koa2 -e",-e表示使用"ejs"作为模板引擎。由于我们在当前目录下创建,所以命令中不需要添加目录名。如果我们需要创建一个新的目录,并在该目录下创建项目,使用"koa2 -e <project>"即可。/<project>

  1. 安装依赖"npm install",这里就包括 "koa-views"中间件模板引擎,以及其他依赖模块
<code>  "dependencies": {
"debug": "^4.1.1",
"ejs": "~2.3.3",
"koa": "^2.7.0",
"koa-bodyparser": "^4.2.1",
"koa-convert": "^1.2.0",
"koa-json": "^2.0.2",
"koa-logger": "^3.2.0",
"koa-onerror": "^4.1.0",
"koa-router": "^7.4.0",
"koa-static": "^5.0.0",
"koa-views": "^6.2.1"
},/<code>
  1. 运行 "npm start"
<code>D:\\Projects\\nodejs\\NodeDemo\\koatest>npm start

> [email protected] start D:\\Projects\\nodejs\\NodeDemo\\koatest
> node bin/www/<code>

此时就可以通过浏览器进行访问了。

  1. 首页访问 http://localhost:3000/


node.js 13 Web框架Koa

Koa2 首页

Koa2 路由

上面访问了主页,为什么会出现"Hello Koa2!"?这是由Koa2的路由模块来处理的。

Koa2的路由模块是koa-router,我们在安装依赖时通过命令"npm install"已经安装在当前目录下了。所以在访问主页时,koa-router已经起作用了。那么这个路由是如何起作用的?

  1. 创建路由

在<project>/routes目录下创建路由,以Koa2默认创建的index.js路由为例。先引入"koa-router"模块,再针对访问路径进行处理。/<project>

<code>const router = require('koa-router')()

router.get('/', async (ctx, next) => {
await ctx.render('index', {
title: 'Hello Koa 2!'
})
})/<code>

注意上面的ctx.render中有一个参数'index',这就指向了我们的模板引擎ejs中的<project>/views/index.ejs。/<project>

<code>


<title>
<link>




EJS Welcome to



/<code>

这里从router中将title键值对传到了index.ejs模板中。

  1. 在入口app.js中注册index路由
<code>// routes
app.use(index.routes(), index.allowedMethods())/<code>

到这里,一个完整的路由工作就结束了。

欢迎关注本号,后续会对koa以及node.js其他功能作进一步介绍。


分享到:


相關文章: