我目前正在开发一个音乐平台,使用NodeJs、Express 4.0和EJS作为我的模板引擎。因为我们必须有一个播放器不断地通过我们的网站导航播放,对于SoundCloud,我的网站内容是通过AJAX调用动态加载的,获得JSON数据,html是用EJS客户端库呈现的客户端。
现在,我在第一个页面加载时发送所有模板,对于每个页面请求,我向服务器请求相应的JSON数据,并使用EJS库呈现它。
我已经在国际化方面工作了几个月,到目前为止,根据req.acceptsLanguages('fr', 'en'),我在初始页面加载时提供两套模板中的一套(在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
});虽然我有两套模板,并且每次模板改变时我都必须改变两个视图。它有点无聊,但主要是错误的来源(我现在只有两个翻译!)。我遇到了很棒的'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更好,特别是对于移动设备,我希望保持这样。
有什么想法或来源吗?
https://stackoverflow.com/questions/44555115
复制相似问题