怎么安裝koa
- 方法一
C:\...\hello-koa> npm install koa@2.0.0
- 方法二
//在hello-koa這個(gè)目錄下創(chuàng)建一個(gè)package.
//json,這個(gè)文件描述了我們的hello-koa工程
//會(huì)用到哪些包御板。完整的文件內(nèi)容如下:
{
"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
關(guān)于定義的問題
var express = require('express');
var app = express();
這里有了==express==,為什么第二行又要有一個(gè)==app==對(duì)象,而且==express()==画髓,這個(gè)方法不是還沒有定義了么
var express = require('express');
//通過引入包獲得一個(gè)express的函數(shù)
var app = express();
//執(zhí)行引入的express()獲得一個(gè)express函數(shù)封裝的一個(gè)閉包函數(shù)
//可能的實(shí)現(xiàn)是這個(gè)樣子的
function express(){
return function (){ //上文的的app
//do something
}
}
module.exports = express;
//也就是所謂的閉包……
關(guān)于middleware
// 導(dǎo)入koa,和koa 1.x不同平委,在koa2中奈虾,我們導(dǎo)入的是一個(gè)class,因此用大寫的Koa表示:
const Koa = require('koa');
// 創(chuàng)建一個(gè)Koa對(duì)象表示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(); // 調(diào)用下一個(gè)middleware
});
app.use(async(ctx, next) => {
const start = new Date().getTime(); // 當(dāng)前時(shí)間
await next(); // 調(diào)用下一個(gè)middleware
const ms = new Date().getTime() - start; // 耗費(fèi)時(shí)間
console.log(`Time: ${ms}ms `); // 打印耗費(fèi)時(shí)間
// 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...');