実行時にルートを作成しようとしています。私はフラットなURL構造を作成しようとしています。記事を追加すると、記事のスラッグが作成され、新しいルートが作成されます。実行時にnodejs express 4ルートを作成
私は特急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;
を使用
私は、ルータ内の関数を作成し、アプリからそれを呼び出してみました。また、ファイル全体にアプリインスタンスを共有しながら、ルータに機能を作成します。
10と、それを呼び出す
var app = require("./app.js");
それは、他のアイデアを働くように見えるdoesntの?
更新:
私はhelpers.jsと呼ばれるファイルを持っていると私は私が
そのaddRouteやって終わる次の関数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);
},
を追加しました:関数(){
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を見た
この* Hello world example * http://expressjs.com/en/starter/hello-world.htmlを見て、それに従ってapp.jsを変更し、alredyに 'var routes = require( ' ./routes.js '); app.use( '/'、routes); 'あなたのroutes.jsは問題ありません。 – Molda