[英]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.