提问人:M. Arb 提问时间:6/15/2017 更新时间:5/5/2018 访问量:2130
使用 i18n 和 ejs 的客户端渲染
Client side rendering using i18n and ejs
问:
我目前正在开发一个音乐平台,使用 NodeJs、Express 4.0 和 EJS 作为我的模板引擎。 由于我们必须有一个播放器不断通过我们的网站导航播放,至于 SoundCloud,我的网站内容是动态加载的 AJAX 调用获取 JSON 数据,html 是使用 EJS 客户端库呈现的客户端。
现在,我在第一个页面加载时发送所有模板,对于每个页面请求,我都会询问服务器对应的 JSON 数据,并使用 EJS 库在客户端呈现它。
我已经在国际化方面工作了几个月,就目前而言,根据情况,我在初始页面加载时提供我的 2 组模板(位于文件夹 fr/ 或 en/ 中)之一,然后我的内容在客户端加载为:req.acceptsLanguages('fr', 'en')
$.get(view, function (data) { // data is a simple JSON object
var html = ejs.render(templates.view, data); // Render with EJS client library
$wrapper.html(html); // Set new HTML
});
虽然我有 2 套模板,每次模板更改时我都必须更改这两个视图。这有点无聊,但主要是错误的来源(我现在只有 2 个翻译! 我遇到了很棒的“i18n-node”:https://github.com/mashpie/i18n-node 它允许只有一个模板,该模板使用单独的JSON文件(en.json,fr.json)加载正确的翻译。 这个模块在第一次渲染时效果很好,但当然,由于我没有客户端 i18n 支持或支持 i18n 的客户端 ejs,因此我无法在之后渲染我的模板客户端(以及 ejs 或 i18n)。
我检查了一下,但没有发现一个好的客户端 i18n 库,它会在开始时加载 locale.json 文件,并相应地与 ejs 客户端一起渲染模板,你知道吗? 我在 Angular 和 React 上看到了类似的方法,但我没有使用这些方法。
或者也许我只是想错了?我还想过在服务器端渲染模板并直接发送 HTML,但我读到只发送有价值且轻量级的 JSON 数据,然后在客户端渲染它在客户端比发送完整的 HTML 在性能方面更好,尤其是对于移动设备,我很想保持这样。
有什么想法或来源吗?
答:
你可以使用 i18n-for-browser:
上一个:为非必要内容构建异步客户端包含
评论