簡體   English   中英

創建nodejs在運行時表達4路由

[英]Create nodejs express 4 route on runtime

我試圖在運行時創建一個路由。 我正在嘗試創建一個平面網址結構,所以如果我們添加一篇文章,它將為它創建一個slug並將創建一個新的路由。

我用快遞4新的路由器功能

app.js

var express = require('express');
var routes  = require('./routes.js');
app.use('/', routes);

var server = http.createServer(app).listen(app.get('port')); 

routes.js

var express             = require('express');
var router              = express.Router();

router.get('/new'    ,site.new);
module.exports = router;

我嘗試在路由器中創建一個函數並從app.js調用它,同時在路由器中創建一個函數,同時共享文件中的應用程序實例

module.exports = app; 

並稱之為

var app = require("./app.js");

它似乎沒有任何其他想法嗎?

更新:

我有一個名為helpers.js的文件,我添加了以下功能

  module.exports={

    addRoute:function(){   
    var express             = require('express');
    var router              = express.Router();     
    var app  = require('../app.js');
    var routes  = require('../routes.js');

    router.get('/book', function (req, res) {
      res.send('Hello World!');
    });


    app.use('/book', router);
},

我最終這樣做了

addRoute:函數(){

    var express             = require('express');
    var router              = express.Router();
    var routes              = require('../routes.js');
    var app                 = require('../start-freedom1.js');

    router.get('/book'  ,function (req, res, next) {
        res.send({"data":"kaki","values":"","errors":""});
    });


    for(var layer in app._router.stack){

        if(app._router.stack[layer].name=="router"){

            app._router.stack[layer].handle.stack.splice(0, 0, router.stack[0]);
            console.log(app._router.stack[layer].handle.stack)
            break;
        }
    }

   // / app.use('/', routes);
},

我有router.get(“*”.....在潰敗文件的末尾所以我總是看到404的問題

我認為您正在尋找的是在URL中傳遞參數,您可以提取這些參數然后用於進行一些處理。 您可以執行以下操作:

app.get('/article/:article_id', function(req, res){ art_id = req.params.article_id; //query database using art_id }

如果你想使用查詢參數(使用“..... / article?id = 234”),那么你必須使用req.query 請查看以下頁面http://expressjs.com/en/api.html#req.params

請求參數被認為是最佳實踐,因為它們更易讀並且也是SEO友好的。 您可以編輯模型以將文章塊作為字段存儲,但應該是唯一的,這樣它們就可以用於查詢數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM