美文网首页nodeJS
01,koa简介,安装,简单实用

01,koa简介,安装,简单实用

作者: 随风飞2019 | 来源:发表于2019-02-28 20:42 被阅读0次

Koa 框架介绍

Node.js 是一个异步的世界,异步编程模型会带来回调地域
koa 是由Express 原班人马打造的,可以免除重复繁琐的回调函数嵌套, 并极大地提
升错误处理的效率。阿里内部就在使用Koa 框架,并在Koa 基础上面做了一些扩展和封装。并且基于koa 开发了一个开源框架egg。

Koa2.x 框架的安装使用

基于node.js,所以需要先安装node
首先需要初始化一个package.json文件,使用npm init一路回车
npm install --save koa

最基本的使用如下:
//引入Koa
const koa=require('koa');
const app=new koa();
//配置中间件(可以先当做路由)
app.use( async (ctx)=>{
ctx.body='hello koa2'
})
//监听端口
app.listen(3000);

Koa 异步处理Async 、Await 和Promise的使用

async 是“异步”的简写,而await 可以认为是async wait 的简写。
async 是让方法变成异步。
await 是等待异步方法执行完成,相当于把异步变成同步,必须放到异步方法中使用。
async 会将其后的函数的返回值封装成一个Promise 对象,而await 会等待这个Promise 完成,并将其resolve的结果返回出来。

async function getData() {
    return "nihao!"
}
var d=getData();
console.log(d);  //Promise { 'nihao!' }
d.then((res)=>{
   console.log(res)   //nihao!
});

await的用法,用到一个async方法里面,await之前的async方法返回一个结果
只有执行这个await方法,才能得到结果。
async function getData() {
    return "nihao!"
}
async function d() {
    var res=await getData();
    console.log(res)  //d()执行后打印出nihao!
}
d();

Koa 路由

路由就是根据不同的URL 地址,加载不同的页面实现不同的功能。
Koa 中我们需要安装对应的koa-router 路由模块来实现。
路由安装:npm install --save koa-router
路由引入:const router = require('koa-router')(); //注意:引入的方式,带括号
上面一句话,相当于下面两句
let Router=require("koa-router");
let router=new Router();

koa路由的使用案例
let koa= require("koa");  //引入koa
let app=new koa(); //实例化koa
let router=require("koa-router")();  //引入并实例化koa-router
router.get('/', async (ctx)=> {
    ctx.body="这是首页";
})
    .get("/news",async (ctx)=>{   //这里使用了链式写法,也可以像下面一样写
        ctx.body="这是新闻页"
    });
 router.get("/about",async (ctx)=>{
        ctx.body="这是关于我们"
    });
app.use(router.routes());  //启用路由
app.listen(3000);   //监听3000端口

通过ctx.query获取get传值
router.get("/news",async (ctx)=>{
    ctx.body="这是新闻页";
    console.log(ctx.query);  //通过ctx.query获取get传值
    console.log(ctx.url);   //获取浏览器输入的地址,也可以打印ctx看看里面都什么
});
这时候浏览http://localhost:3000/news?aid=3&age=18
控制台就可以打印一个对象{ aid: '3', age: '18' }

/news?aid=3&age=18这个叫做get传值
/news/123这个叫做动态路由

动态路由和vue动态路由三部曲一样的,形参,接收,实参
router.get("/news/:newsId",async (ctx)=>{
    ctx.body="这是新闻页";
    console.log(ctx.params);    //{ newsId: '12' }
});

汇总使用如下
router.get("/news/:newsId",async (ctx)=>{
    ctx.body="这是新闻页";
    console.log(ctx.params);
    console.log(ctx.query);
});
地址栏里输入/news/12?title="张三丰练就太极八卦掌"&age=81回车后
上面分别打印的是
{ newsId: '12' }
{ title: '"张三丰练就太极八卦掌"', age: '81' }

相关文章

网友评论

    本文标题:01,koa简介,安装,简单实用

    本文链接:https://www.haomeiwen.com/subject/jebkuqtx.html