Node.js Express应用程序:如果存在cookie,则从服务器端向元素添加CSS类
Node.js Express app: if cookie is present, than add CSS class to element from server side
我有一个快速静态站点应用程序。我用app.js:中的cookie调用我的网站翻译
// i18n
app.get('/hu', function (req, res) { // http://127.0.0.1:3000/hu
res.cookie('locale', 'hu', { maxAge: 900000, httpOnly: true });
res.redirect('back');
});
app.get('/en', function (req, res) { // http://127.0.0.1:3000/en
res.cookie('locale', 'en', { maxAge: 900000, httpOnly: true });
res.redirect('back');
});
如果有人访问http://127.0.0.1:3000/en
URL,那么它将存储一个调用翻译的cookie。hu
是默认语言,当有人第一次访问我的网站时,没有存储任何cookie。
但是,当英语翻译处于活动状态时,我如何向我的网站添加CSS类?我有一个导航栏,我的标志在中间,水平居中。在英语中,单词的长度不同,导致即使是居中的flexbox元素left-nav | logo | right-nav
也略不居中。
不知怎的,当特定的cookie出现时,我想从app.js(位于服务器端)向我的手把模板中添加一个CSS类。有可能吗?
有可能从全局的app.js而不是从路由器解决这个问题吗?
最终解决方案,感谢@t.niese
在app.js:中
app.use(function(req, res, next) {
var defaultLang = 'hu';
var activeLang = req.cookies.locale || defaultLang;
res.locals.langClass = activeLang + '-' + activeLang.toUpperCase();
next();
});
在我的车把模板中:
<!doctype html>
<html class="no-js lang-{{langClass}}" lang="{{langClass}}">
您可以定义自己的中间件函数,该函数将根据locale
:的cookie值为模板值设置例如langClass
app.use(function(req, res, next) {
var activeLang = req.cookies.locale || defaultLang;
req.local.langClass = 'lang-'+activeLang;
next();
});
然后你可以在你的模板中使用这个作为类:
<html class="{{langClass}}">
</html>
你不可能在全球范围内解决这个问题,因为那样每个访客的语言都是一样的。
这是可能的。
您可以将所需的数据存储在app.locals变量中。
// i18n
app.get('/hu', function (req, res) { // http://127.0.0.1:3000/hu
res.cookie('locale', 'hu', { maxAge: 900000, httpOnly: true });
app.locals.lang = 'lang-hu';
res.redirect('back');
});
app.get('/en', function (req, res) { // http://127.0.0.1:3000/hu
res.cookie('locale', 'en', { maxAge: 900000, httpOnly: true });
app.locals.lang = 'lang-en';
res.redirect('back');
});
在路由处理程序中,当前语言在app.locals
中可用。
app.get('/', function(req, res) {
var langClass = app.locals.lang;
// Do something with variable
});
相关文章:
- 如何使用skip参数使用angular ui引导进行服务器端分页
- Webpack开发服务器和React服务器端渲染
- 提示使用服务器端事件处理程序激活JavaScript
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- 将表单数据提交到服务器端
- 使用ajax的服务器端分页&jQuery
- 显示具有服务器端自动时间注销的同步倒计时计时器
- 使用FormData上传AJAX图像;t在服务器端显示图像
- 将服务器端渲染的元素添加为Vue js父级的子级
- Node.js Express应用程序:如果存在cookie,则从服务器端向元素添加CSS类
- 在服务器端创建html元素VS将数据作为JSON获取,并使用javascript创建标签
- 在服务器端创建的 DIV 元素的工具提示
- 将 HTML 元素转换为图像(服务器端)
- 如何使用服务器端创建的 JQuery 将单击事件添加到元素
- 将元素[数据]发布到服务器端的最佳方式
- 用于可拖动页面元素的css框架和用于服务器端位置保存的回调
- 如何更改HTML元素的值's属性(在客户端和服务器端)
- angular服务器端验证,如何从对象引用中找到表单元素