在Express中转义/:路由以加载js和css
Escaping /: routes in Express in order to load js and css
使用/:表示法时,如何在Express和Node.js中转义路由?我在做什么:
app.get('/:route1/:route2', function(req, res){
var route1 = req.params.route1;
var route2 = req.params.route2;
MongoClient.connect(MongoUrl, function(err, db) {
if(err) throw err;
db.collection(route1)
.findOne({'_id' : new ObjectID(route2)},
function(err, doc){
res.send(doc);
});
});;
但是这样做就不会加载js或css。我尝试过如果声明无效:
if(req.params.route1 !== 'javascripts'){//then do something}
首先,在不知道你在做什么或应用程序的结构的情况下,我不能肯定,但:
你所做的(像/:var1/:var2
这样的路线)对我来说是一种代码气味。如果api.function
看起来像
if (req.params.var1 == 'foo') {
// do stuff
} else if (req.params.var1 == 'bar') {
// do other stuff
}
这并不是构建Express应用程序的正确方式。一般来说,它看起来应该更像
app.get('/foo/:var2', function(req, res) {
// do stuff
});
app.get('/bar/:var2', function(req, res) {
// do other stuff
});
也就是说,如果你真的需要让你的路由处理程序忽略某个值,你可以调用next
:
app.get('/:route1/:route2', function(req, res, next) {
if (req.params.route1 == 'javascripts') next();
else {
// do something
}
});
您是否使用连接静态中间件?
app.use(express.static(__dirname + 'public'))
这表示"对/public
文件夹中的文件的任何请求,都将其作为静态文件"。
请确保它显示在任何app.get
路由上方,以便首先使用它。
您应该将静态中间件移动到路由之上
app.use(express.static(path.join(__dirname, 'public')));
app.use(app.router);
app.get('/:route1/:route2', api.function);
相关文章:
- Wordpress插件根据需要加载js和css
- js文件未加载js控制台say's”;不允许加载本地资源”;
- Material Design Lite所有元素加载JS回调
- 动态重新加载JS
- 加载Js文件应用程序加载
- 按顺序异步加载JS脚本(等待上一个脚本完成)
- 如何加载js文件并在CEF上执行
- ASP.NET MVC路由-动态加载.js脚本
- 有没有办法只在必要时加载JS和CSS
- 加载 js 文件时出现 404 错误
- 根据用户屏幕大小加载 JS 或 PHP
- jQuery没有在ajax请求的脚本标记中加载js文件
- 加载 JS 函数加载时出现问题
- 不要为机器人(谷歌和其他)加载JS脚本以获得更好的性能
- 节点JS加载JS&ejb文件中的css文件
- Iron Router:在模板渲染后加载js脚本
- PhantomJS未从同一URL加载.js
- 重新路由时重新加载.js文件
- 在Express中转义/:路由以加载js和css
- CRON和页面加载JS