使用Express如何为动态内容

时间:2018-02-19 20:04:14

标签: node.js express ejs

这些代码行告诉express选择ejs作为视图引擎,并在客户端访问根目录时将index.ejs呈现为主页。

const ejs = require('ejs');

app.set('view engine', 'ejs');

app.get('/', (req, res) => {
    res.render('index');
});

但是,如果该站点也有静态目录,则忽略这些说明。

例如,此行将public设置为html,css,js和图像文件的默认静态目录。

app.use(express.static(__dirname + '/public'));

这个初始化的express自动提供位于/ public目录下的index.html文件,而不是呈现index.ejs。

问题:如何保存静态目录以存储我的大多数文件,还使用动态视图来呈现网站的主页和其他页面?他们似乎互相干扰。

提前非常感谢!

1 个答案:

答案 0 :(得分:2)

express.static只不过是链中的另一个中间件。我相信您已经在自定义中间件之前添加了它(使用app.use)。如果你这样重新排序:

app.get('/', (req, res) => {
    res.render('index');
});
app.use(express.static(__dirname + '/public'));

/的请求将首先打到您的中间件,并且由于您在那里完成了响应,因此不会继续使用静态添加的中间件。