用Swig呈现静态文件
我试图用NodeJS开发一个Blog。 我find了一个不错的HTML博客主题 ,并将所有文件都放到了视图文件夹中。 这是app.js的内容
var express = require('express'), app = express(), cons = require('consolidate'); app.engine('html', cons.swig); app.set('view engine', 'html'); app.set('views', __dirname + '/views'); //app.use(express.static(__dirname + '/views')); app.use(express.bodyParser()); // I'm using Express 3, not 4. app.use(app.router); app.get('/', function(req,res){ res.render('index', {menu_items:[{"link":"#","text":"TXT"},{"link":"#","text":"TXT"}]}); }); app.listen(3000);
此代码呈现index.html,并在index.html中呈现menu_items 。 但它并不像css和js那样呈现静态文件。
为了渲染它们,我正在评论app.use(express.static(__ dirname +'/ views')); 线。 这一次是渲染静态文件,但不是在index.html中渲染menu_itemsvariables。
您可以看到此存储库中的所有文件。 你能告诉我我错过了什么吗?
**更新1 **我已经添加了这些行而不是那个注释行
app.use('/css', express.static(__dirname + '/views/css')); app.use('/img', express.static(__dirname + '/views/img')); app.use('/js', express.static(__dirname + '/views/js'));
但是我不确定这是否是解决我的问题的正确方法。
当你把路由string设置为“/”时,模式匹配所有的url请求。 “/”后面的处理程序被忽略。 所以,你需要先添加行,
app.use('/css', express.static(__dirname + '/views/css')); app.use('/img', express.static(__dirname + '/views/img')); app.use('/js', express.static(__dirname + '/views/js'));
然后在最后加上这个路由器,
app.get('/', function(req,res){ res.render('index', {menu_items:[{"link":"#","text":"TXT"},{"link":"#","text":"TXT"}]});
});