8-廖雪峰-node-web-koa2入门
2017-08-09 本文已影响144人
_panda
怎么安装koa
- 方法一
C:\...\hello-koa> npm install koa@2.0.0
- 方法二
//在hello-koa这个目录下创建一个package.
//json,这个文件描述了我们的hello-koa工程
//会用到哪些包。完整的文件内容如下:
{
"name": "hello-koa2",
"version": "1.0.0",
"description": "Hello Koa 2 example with async",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"keywords": [
"koa",
"async"
],
"author": "Michael Liao",
"license": "Apache-2.0",
"repository": {
"type": "git",
"url": "https://github.com/michaelliao/learn-javascript.git"
},
"dependencies": {
"koa": "2.0.0"
}
}
然后再
C:\...\hello-koa> npm install
关于定义的问题
var express = require('express');
var app = express();
这里有了==express==,为什么第二行又要有一个==app==对象,而且==express()==,这个方法不是还没有定义了么
var express = require('express');
//通过引入包获得一个express的函数
var app = express();
//执行引入的express()获得一个express函数封装的一个闭包函数
//可能的实现是这个样子的
function express(){
return function (){ //上文的的app
//do something
}
}
module.exports = express;
//也就是所谓的闭包……
关于middleware
// 导入koa,和koa 1.x不同,在koa2中,我们导入的是一个class,因此用大写的Koa表示:
const Koa = require('koa');
// 创建一个Koa对象表示web app本身:
const app = new Koa();
app.use(async(ctx, next) => {
console.log(`medthod: ${ctx.request.method} url:${ctx.request.url}`); // 打印URL
// console.log(`ctx: ${ctx.request}`)
await next(); // 调用下一个middleware
});
app.use(async(ctx, next) => {
const start = new Date().getTime(); // 当前时间
await next(); // 调用下一个middleware
const ms = new Date().getTime() - start; // 耗费时间
console.log(`Time: ${ms}ms `); // 打印耗费时间
// console.time("test");
// await next();
// console.timeEnd("test");
});
app.use(async(ctx, next) => {
await next();
ctx.response.type = 'text/html';
ctx.response.body = '<h1>Hello, koa2!</h1>';
});
app.listen(3000);
console.log('app started at port 3000...');