2

我正在尝试使用 NodeJS 开发博客。我找到了一个不错的HTML 博客主题,并将所有文件放入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变量。 在此处输入图像描述

您可以查看此存储库中的所有文件中的所有文件。你能告诉我我缺少什么吗?

** 更新 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'));

但我不确定这是否是解决我的问题的正确方法。

4

1 回答 1

2

当您将路由字符串设置为 ''/' 时,该模式匹配所有 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"}]});

});

于 2015-01-13T09:43:25.880 回答