所以我正在重構我的節點/快速應用程序,我試圖分離我的根。這是我的問題:使用/和/:slug作爲不同的路由文件來表示動態路由
我想要一個主頁,然後是一個完全不同的擴展頁面,這不屬於其他路線。
例如,假設我有3個頁面:Homepage,About,然後是URL爲「mysite.com/username123」的用戶頁面。
現在我知道(或至少相信)這可以通過做這樣的事情來完成:
var express = require('express');
var router = express.Router();
router.get('/:slug', function(req, res, next) {
if(req.params.slug) {
var data = {
my: 'data'
};
res.render('index', data);
} else {
var userdata = {
my: 'data'
};
res.render('user', userdata);
}
});
module.exports = router;
但是這不是我想做的事情;我想將這些保存在兩個不同的路由文件中。所以,我的app.js文件將有類似:
var routes = require('./routes/index');
var users = require('./routes/users');
var about = require('./routes/about');
app.use('/', index);
app.use('/', users);
app.use('/about', about);
凡/users
渲染,如果有一個金屬塊。這實際上是一些作品。如果沒有:slug
,則加載索引文件,否則會加載用戶文件(其路徑文件中包含:slug,此處未顯示)。但是,被覆蓋。
現在我想我可以推到列表的頂部,這將工作,但這似乎非常草率,這樣做的關鍵是正確構建我的代碼。
這樣的情況應該如何妥善處理?有人能給我一些幫助嗎?
發生這種情況是因爲'/ about'被'/:slug'覆蓋。換句話說,快遞無法分辨'about'是不是意味着是一個slu 012 –
謝謝。我明白爲什麼會發生。我只需要知道我應該如何解決這個問題,同時保持'/:slug'不在主目錄'/' –
的單獨文件中。您需要向用戶的路由添加一些內容.Ex: 'router.get('/ users /:id''' –