这些代码行告诉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。
问题:如何保存静态目录以存储我的大多数文件,还使用动态视图来呈现网站的主页和其他页面?他们似乎互相干扰。
提前非常感谢!
答案 0 :(得分:2)
express.static
只不过是链中的另一个中间件。我相信您已经在自定义中间件之前添加了它(使用app.use
)。如果你这样重新排序:
app.get('/', (req, res) => {
res.render('index');
});
app.use(express.static(__dirname + '/public'));
对/
的请求将首先打到您的中间件,并且由于您在那里完成了响应,因此不会继续使用静态添加的中间件。