使用 require.js 和唯一的 CDN
Using require.js with a unique CDN
我正在开发 require.js 应用程序以对其进行本地化。我们的 nls 文件位于特定的文件夹结构中。
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);
});
views/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
}
我通过我的 grunt 任务 (grunt-contrib-requirejs)
将 NLS 文件添加到我的 require.js 编译文件 (main.js) 中解决了这个问题
modules: [
{
name: 'main',
include: [
'nls/de/activity_types',
'nls/de/admin',
'nls/de/app_callout',
'nls/de/browser_support'
]
}]
我正在开发 require.js 应用程序以对其进行本地化。我们的 nls 文件位于特定的文件夹结构中。
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);
});
views/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
}
我通过我的 grunt 任务 (grunt-contrib-requirejs)
将 NLS 文件添加到我的 require.js 编译文件 (main.js) 中解决了这个问题modules: [
{
name: 'main',
include: [
'nls/de/activity_types',
'nls/de/admin',
'nls/de/app_callout',
'nls/de/browser_support'
]
}]