Koa框架的基本使用(一)

官网解释Koa是基于Nodejs平台下的下一代web框架,Koa不在内核方法中调用任何中间件,
它不仅是一个轻量级的函数库,几乎所有的功能都通过第三方来实现。
它提供了一组可以快速优雅的编写服务器应用的方法。
现在有Koa和Koa2两个版本,后者依赖于Nodejs7.6.0版
Koa安装命令 npm i koa
koa-router 监听路由,编写接口时使用,安装命令 npm i koa-router
koa-views 模板引擎解析,比如使用pug模板或其他模板引擎时,需要此模板配置视图模板 ,安装命令 npm i koa-views
koa-static 前端静态文件、图片等静态资源处理模块,配置静态资源目录后,不会出现静态资源Not Found的错误,安装命令 npm i koa-static
koa-body 处理post请求数据,还有文件上传功能,安装命令 npm i koa-body

注意:在项目目录下,安装工具之前先执行一次`npm init -y`命令,会在项目下生成一个默认的package.json配置文件

// 官网地址koajs.com.cn
const Koa = require("koa");//加载koa框架
let app = new Koa();//实例化Koa

/*上下文(Context),ctx--->context
每次请求都将创建一个 Context对象,表示每次对话的上下文(包括http请求与http响应回复),通过加工这个对象,就可以控制返回给用户的内容。
并在中间件中作为接收器引用,或者 ctx 标识符。*/

//为方便起见许多上下文的访问器和方法直接委托给它们的 ctx.request或ctx.response ,不然的话它们是相同的。 
//例如 ctx.type 和 ctx.length 委托给 response 对象,
//ctx.path 和 ctx.method 委托给 request。

//app.use(async ctx => {
//  console.log(ctx); // 这是 Context
//  console.log(ctx.request); // 客户端请求信息
//  console.log(ctx.response); // 服务器响应信息
//  console.log(ctx.response.status);//获取响应状态。默认情况下,response.status 设置为 404 
//  console.log(ctx.request.url);//客户端请求url
//  ctx.response.body = "no pains,no gains.";//服务器响应信息添加到页面body中
  //ctx.body = "hello!Good morning!";
//});

//添加中间件m1
let m1 = async function(ctx,next){
    console.log("m1开始");
    // ctx.state  传递数据(类似于中间件的共享空间)
    ctx.state = {
        name:"tom",
        age:18
    }
 
    next();//m1结束,将控制权交给下一个中间件m2
    console.log("m1结束");
};

//添加中间件m2
let m2 = async function(ctx,next){
    console.log("m2开始");
    ctx.state = {
        id:1,
        hobby:"(>^ω^<)喵"
    }  
    next();// m2结束,控制权交给下一个m3,如果这里没有next()方法,则下面的中间件m3的代码就不会执行
    console.log("m2结束");  
};

//添加中间件m3
 let m3 = async function(ctx,next){
     console.log("m3开始");
     ctx.body = "小桥流水人家";
     console.log("m3结束");
 };

//中间件在实际使用中都是模块 
//app.use()将给定的中间件方法添加到此应用程序
//多个中间件会形成一个栈结构,遵循“现进后出”的执行顺序,如果中间件内部没有调用
//next()方法,那执行权就不会传递下去

app.use(m1); //启用m1
app.use(m2); //启用m2
app.use(m3); //启用m3
app.listen(3300);//设置端口号

// 执行顺序是先进后出
/*         
m1开始
m2开始
m3开始
m3结束
m2结束
m1结束
 */

你可能感兴趣的:(NodeJS)