使用 Swig 渲染静态文件
Rendering Static Files With Swig
我正在尝试使用 NodeJS 开发博客。我找到了一个不错的 HTML blog theme,并将所有文件放入 views 文件夹。这是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')); 行。这次它渲染静态文件但不渲染 menu_items 中的变量 index.html 。
您可以查看this repository中的所有文件。你能告诉我我错过了什么吗?
** 更新 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'));
但我不确定这是否是解决我问题的正确方法。
当您将路由字符串作为“/”时,该模式匹配所有 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"}]});
});
我正在尝试使用 NodeJS 开发博客。我找到了一个不错的 HTML blog theme,并将所有文件放入 views 文件夹。这是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')); 行。这次它渲染静态文件但不渲染 menu_items 中的变量 index.html 。
您可以查看this repository中的所有文件。你能告诉我我错过了什么吗?
** 更新 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'));
但我不确定这是否是解决我问题的正确方法。
当您将路由字符串作为“/”时,该模式匹配所有 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"}]});
});