<node.js學習筆記(6)>koa-router,模組化

liangsheng0111發表於2018-12-15

1.koa-router模組

  1. 初始化
    npm init
  2. 安裝模組
npm i -S koa
npm i -S koa-router
複製程式碼
  1. 引入
const Koa = require("koa");
const Router = require("koa-router")
複製程式碼

注意點: 類似Koa和Router等首字母大寫的,表示是一個類,需要new來例項化

demo1

//引入模組
const Koa = require("koa");
const Router = require("koa-router");
//例項化
const koa = new Koa();
const router = new Router(); 

//對get請求做處理   限定必須是根路由
router.get("/", async (ctx, next) => {
    //中介軟體1
    console.log("接收-1");
    await next();
    console.log("響應-1");

}, async (ctx, next) => {
    //中介軟體2
    console.log("接收-2");
    await next();
    console.log("響應-2");
}, async (ctx, next) => {
    //中介軟體3
    console.log("接收-3");
    await next();
    console.log("響應-3");
}); 
//接下面的程式碼
複製程式碼

此處插入說明:在學習koa模組時,是用koa.ues()註冊中介軟體的。當使用koa-router模組時,上面整個route.get()作為一箇中介軟體,以以下的方式註冊:

//接上面的程式碼
koa.use(router.routes())
    .use(router.allowedMethods())
    .listen(3000, () => {
        console.log("開始監聽3000埠");
    });
複製程式碼

執行檔案,請求效果:

<node.js學習筆記(6)>koa-router,模組化

demo2

const Koa = require("koa");
const Router = require("koa-router");
const koa = new Koa();
const router = new Router(); 
//中介軟體1
router.get("/",async (ctx)=>{
    ctx.body = "從根路由過來的請求"
});
//中介軟體2
router.get("/html",async (ctx)=>{
    ctx.body = "從html過來的請求"
});
//中介軟體3
router.get("/sjl",async (ctx)=>{
    ctx.body = "從sjl過來的請求"
});
//註冊監聽
koa.use(router.routes())
    .use(router.allowedMethods())
    .listen(3000, () => {
        console.log("開始監聽3000埠");
    });
複製程式碼

效果:

<node.js學習筆記(6)>koa-router,模組化

<node.js學習筆記(6)>koa-router,模組化

<node.js學習筆記(6)>koa-router,模組化


2. 模組化開發

從上述例子發現,所有的模組都寫在同一個檔案裡,這樣是不妥當的。模組化開發根據不用的功能放在不用的檔案中。例如流水線,每一個工人負責不用的功能。

簡單模組化案例
建立三個檔案: main.js,router.js,dispose.js

1.第一個檔案main.js

//main.js作為入口檔案
const Koa = require("koa");
const router = require("./router"); //匯入router.js

const koa = new Koa();

koa.use(router.routes())
    .use(router.allowedMethods())
    .listen(3000, () => {
        console.log("開始監聽3000埠");
    });
複製程式碼
  1. 第二個檔案router.js
//router.js作為路由功能的檔案
const Router = require("koa-router");
const dispose = require("./dispose");

const router = new Router();

router.get("/", dispose.root);
router.get("/demo", dispose.demo);
router.get("/test", dispose.test);

module.exports = router; //將資料傳遞給main.js
複製程式碼

3.第三個檔案dispose.js

module.exports = {
    "root" : async (ctx) => {
        ctx.body = "從根路由過來的請求";
    },
    "demo" : async (ctx) => {
        ctx.body = "從demo過來的請求";
    },
    "test" : async (ctx) => {
        ctx.body = "從test過來的請求";
    }
}
複製程式碼

3.koa一些模組介紹

  1. koa-static :管理靜態資源的模組

    1. 安裝: npm i -S koa-static
    2. 引用:
      const Koa = requrie("koa");
      const static = require("koa-static");
      const {join} = reurire("path");
      
      const koa = new Koa();
      //指定載入靜態資源的根目錄,指定所有靜態檔案的根目錄
      koa.use(static(join(__dirname, "static")));
      複製程式碼
  2. koa-body :解析post請求的模組,監聽POST請求,將資料存入ctx.request.body中

    1. 安裝: npm i -S koa-body
    2. 引用:
      const Koa = requrie("koa");
      const koaBody = require("koa-body");
      
      const koa = new Koa();
      
      koa.use(koaBody());
      複製程式碼
  3. koa/cors :實現跨域模組

    1. 安裝: npm i -S @koa/cors
    2. 引用:
      const Koa = requrie("koa");
      const cors = require("@koa/cors");
      
      const koa = new Koa();
      
      koa.use(cors());
      複製程式碼

鏈式操作

koa
    .use(static(join(__dirname, "static")))
    .use(koaBody())
    .use(cors());  //允許跨域

//註冊中介軟體
koa.use(router.routes())
    .use(router.allowedMethods())
    .listen(3000, () => {
        console.log("開始監聽3000埠");
    });
複製程式碼

相關文章