簡體   English   中英

使用i18n和ejs進行客戶端渲染

[英]Client side rendering using i18n and ejs

我目前正在開發一個音樂平台,使用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
});

盡管我有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更好,我會喜歡保持那樣。

有什么想法或資料嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM