ExpressJS - 根据用户使用不同的视图路径

时间:2017-12-27 11:19:13

标签: express

我有一个使用i18n和Angular CLI的Angular应用程序。 CLI为每种语言创建应用程序(和不同的文件夹)。我想根据用户会话呈现视图(他/她的语言偏好在他/她的会话中)。

这是我文件夹的结构

myapp
--dist
----en
----fr

所以我想将视图文件夹设置为:

app.set('views', join(__dirname, 'dist'));

然后将用户重定向到其语言文件夹。这是一个正确的策略,如果是,我如何将用户重定向到其文件夹(仅限视图)?

1 个答案:

答案 0 :(得分:1)

如果我们按如下方式配置Express:

app.set('views', path.join(__dirname,'/views'));

如果你有以下文件结构:

/views/
/views/en/welcome.html
/views/fr/welcome.html
/views/en/news/article1.html
/views/fr/news/article1.html

您需要编写一个从会话中获取首选语言的中间件,将req.body.preferredLang设置为某个值并在其末尾调用next()

然后在你的app.js中使用这个中间件:

app.use(languageMiddleware);

最后你可以像这样渲染:

router.get('/welcome', (req, res, next) => { 
    res.render(`${req.body.preferredLang}/welcome`, {}); 
});