2016-03-15 82 views
1

我正在開發一個require.js應用程序來本地化它。我們有我們的nls文件在一個特定的文件夾結構。使用帶有唯一CDN的require.js

nls/ 
    fr/ 
    register.js 
    ... 
    register.js 

當我們推應用到生產我們的編譯系統增加了像這樣main.54b8801bf2c6e13b.js​​一個版本號的所有文件。 這確實在我的機器上工作,因爲我們不添加唯一的編號。

Require.js不會在子文件夾中引入任何js文件,例如nls/fr/register.js不會在main.js包(預期)中加載。當我們的應用程序遇到這種情況時,它會從CND中取出nls/fr/register.js,但會查找nls/fr/register.js而不是nls/fr/register.54b8801bf2c6e13b.js(是的,文件存在於我們的CDN中)

有沒有人知道動態地有require.js尋找nls/fr/register.54b8801bf2c6e13b.js的方法。我認爲我們之前沒有遇到過,因爲所有的JS文件都被加載到main.js文件中(如果它更容易,我並不反對這樣做)

nls/register.js

define(['text!json/root/register.json', 'settings'], function(json, settings) { 
    return { 
     "fr": true 
    } 
}); 

NLS/FR/register.js

define(['text!json/fr/register.json'], function(json) { 
    return JSON.parse(json); 
}); 

視圖/ register.js

define([ 
    'jquery', 
    'plugins/ui.1.11.0', 
    'underscore', 
    'backbone', 
    'views/base_view', 
    'settings', 
    'utils/gtm', 
    'utils/storage', 
    'text!templates/login_registration/registration_modal.html', 
    'i18n!nls/register' 
], function($, jquery_ui_is_jquery_plugin, _, 
    Backbone, 
    BaseView, 
    Settings, 
    gtm, 
    Storage, 
    Template_Registration, 
    RegisterLocales) { 
//code to get locales and set up view 
} 
+0

我會與解決方案回答解決了這個你'不反對:預編譯您的require項目,將所有i18n註冊文件加載到main.js中 –

+0

這與backbone.js有什麼關係? 。〜。 –

+0

HTML頁面中的任何地方的內部版本號碼是否可以提取並正確映射? –

回答

1

我通過通過我咕嚕任務添加NLS文件到我的require.js編譯的文件(main.js)(咕嚕-的contrib-requirejs)

modules: [ 
      { 
      name: 'main', 
      include: [ 
       'nls/de/activity_types', 
       'nls/de/admin', 
       'nls/de/app_callout', 
       'nls/de/browser_support' 
       ] 
      }]