最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

koa-router路由參數(shù)和前端路由的結(jié)合詳解

 更新時間:2019年05月19日 11:35:59   作者:劉哇勇  
這篇文章主要給大家介紹了關(guān)于koa-router路由參數(shù)和前端路由的結(jié)合的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用koa-router具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

koa-router 定制路由時支持通過冒號形式在 url 中指定參數(shù),該參數(shù)會掛載到 context 上然后可通過 context.params.paramName 方便地獲取。

考察下面的示例:

var Koa = require("koa");
var Router = require("koa-router");

var app = new Koa();
var router = new Router();

router.get("/user/:id", async function(ctx, next) {
 const userId = ctx.params.id;
 ctx.body = `user id is:${userId}`;
});

app.use(router.routes()).use(router.allowedMethods());

app.listen(3000);

console.log("server started at http:localhost:3000");

啟動服務(wù)后可看到頁面中展示出了從 url 中獲取到的 id 參數(shù)。

路由參數(shù)的獲取展示

現(xiàn)在來考慮另一種情況,即路由中支持前端路由的情況。

即把現(xiàn)在的 url 由 /user/:id 的形式擴展成 /user/:id/foo/bar,這里 /foo/bar 部分可以是任何路由,作為前端處理的路由部分。

為了實現(xiàn)這樣的前端路由部分,服務(wù)端路由的配置需要借助正則來進行,

- router.get("/user/:id", async function(ctx, next) {
+ router.get(["/user/:id", /\/user\/([\w|\d]+)\/.*/], async function(ctx, next) {
 const userId = ctx.params.id;
 ctx.body = `user id is:${userId}`;
});

這里將路由中 url 由單個字符串變成了數(shù)組形式,第一個還是原來的路由,這樣正常的通過 /user/1 形式過來的頁面能命中該路由。同時添加 /\/user\/([\w|\d]+)\/.*/ 部分,因為正則情況下不再支持路由中通過冒號進行參數(shù)的配置,所以這里 /user/ 后跟隨的 id 也需要使用正則來替換掉。

但正則匹配下的路由就不能通過 context.params 來訪問 url 上的參數(shù)了。不過好在可通過在正則中定義匹配組(Capturing Groups)的形式來定義參數(shù),即其中 ([\w|\d]+) 括號包裹的部分,稱為一個匹配組,一個匹配組是會自動被掛載到 context.params 上的,只是不像通過冒號定義的參數(shù)那樣會有一個名字,這種形式的參數(shù)按照匹配到的順序形成一個數(shù)組賦值到 context.params,所以訪問第一個匹配組形成的參數(shù)可通過 context.params[0] 來獲取。

于是上面的代碼稍加修正后,就能夠正確處理來自命名參數(shù)(通過冒號匹配)或正則參數(shù)形成的 query 參數(shù)了。

- router.get("/user/:id", async function(ctx, next) {
+ router.get(["/user/:id", /\/user\/([\w|\d]+)\/.*/], async function(ctx, next) {
- const userId = ctx.params.id;
+ const userId = ctx.params.id || ctx.params[0];
 ctx.body = `user id is:${userId}`;
});

最后完整的代碼會是這樣:

var Koa = require("koa");
var Router = require("koa-router");

var app = new Koa();
var router = new Router();

router.get(["/user/:id", /\/user\/([\w|\d]+)\/.*/], async function(ctx, next) {
 const userId = ctx.params.id || ctx.params[0];
 ctx.body = `user id is:${userId}`;
});

app.use(router.routes()).use(router.allowedMethods());

app.listen(3000);

console.log("server started at http:localhost:3000");

此時訪問以下連接進行測試,

  • http://localhost:3000/user/1
  • http://localhost:3000/user/2/foo
  • http://localhost:3000/user/3/foo/bar

均能正確命中頁面并成功獲取到路由中的參數(shù)。

正則路由及路由參數(shù)的獲取

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Koa項目搭建過程詳細記錄

    Koa項目搭建過程詳細記錄

    本篇文章主要介紹了Koa項目搭建過程詳細記錄,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • NodeJS基礎(chǔ)API搭建服務(wù)器詳細過程記錄

    NodeJS基礎(chǔ)API搭建服務(wù)器詳細過程記錄

    本文將以一個超小型web項目,來詳細介紹如何使用NodeJS基礎(chǔ)的http, fs, path, url等模塊提供的API來搭建一個簡單的web服務(wù)器。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • Nodejs讀取文件時相對路徑的正確寫法(使用fs模塊)

    Nodejs讀取文件時相對路徑的正確寫法(使用fs模塊)

    本篇文章主要介紹了linux 環(huán)境 mysql寫入中文報錯的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • Node.JS用純JavaScript生成圖片或滑塊式驗證碼功能

    Node.JS用純JavaScript生成圖片或滑塊式驗證碼功能

    有一些Node.JS圖片生成類庫,比如node-captcha等的類庫,需要c/c++程序生成圖片。跨平臺部署不是很方便。這里介紹幾個用純JS實現(xiàn)的圖片驗證碼生成模塊,需要的朋友可以參考下
    2019-09-09
  • 詳解nodeJS之二進制buffer對象

    詳解nodeJS之二進制buffer對象

    本篇文章主要介紹了nodeJS之二進制buffer對象,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • nodejs URL模塊操作URL相關(guān)方法介紹

    nodejs URL模塊操作URL相關(guān)方法介紹

    這篇文章主要介紹了nodejs URL模塊操作URL相關(guān)方法介紹,本文講解了parse方法、format方法、querystring方法等,需要的朋友可以參考下
    2015-03-03
  • Node.js?連接?MySql?統(tǒng)計組件屬性的使用情況解析

    Node.js?連接?MySql?統(tǒng)計組件屬性的使用情況解析

    這篇文章主要為大家介紹了Node.js?連接?MySql?統(tǒng)計組件屬性的使用情況解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 微信小程序搭載node.js服務(wù)器的簡單教程

    微信小程序搭載node.js服務(wù)器的簡單教程

    小程序是一種全新的連接用戶與服務(wù)的方式,它可以在微信內(nèi)被便捷地獲取和傳播,同時具有出色的使用體驗,下面這篇文章主要給大家介紹了關(guān)于微信小程序搭載node.js服務(wù)器的簡單教程,需要的朋友可以參考下
    2022-12-12
  • Node.js的Express框架使用上手指南

    Node.js的Express框架使用上手指南

    這篇文章主要介紹了Node.js的Express框架使用上手指南,Express可以說是目前Node世界中人氣最高的開發(fā)框架,需要的朋友可以參考下
    2016-03-03
  • NodeJS使用遞歸算法和遍歷算法來遍歷目錄的方法

    NodeJS使用遞歸算法和遍歷算法來遍歷目錄的方法

    遍歷目錄是操作文件時的一個常見需求,比如寫一個程序,需要找到并處理指定目錄下的所有JS文件時,就需要遍歷整個目錄,NodeJS遍歷目錄可以使用遞歸算法、遍歷算法,遍歷算法又分為同步遍歷、異步遍歷兩種,本文介紹NodeJS使用遞歸算法和遍歷算法來遍歷目錄的方法
    2023-11-11

最新評論

肇东市| 武夷山市| 容城县| 隆化县| 依安县| 屯门区| 贡嘎县| 建平县| 萨迦县| 河曲县| 宽城| 鹤庆县| 通州市| 上思县| 蒙城县| 丁青县| 腾冲县| 南安市| 隆尧县| 乳山市| 凤冈县| 女性| 驻马店市| 秀山| 精河县| 丽江市| 攀枝花市| 岳池县| 新源县| 读书| 新源县| 商河县| 乐都县| 崇州市| 宁河县| 惠安县| 峨眉山市| 柳林县| 布拖县| 宜川县| 米泉市|