我正在使用require.js应用程序进行本地化。我们将nls文件放在特定的文件夹结构中。
my $parent = 'D:/Cleaned 10Ks';
while ( my $subdir = glob "$parent/*" ) {
next unless -d $subdir;
my @files = grep -f, glob "$subdir/*";
}
当我们将应用程序推向生产时,我们的构建系统会为所有文件添加内部版本号,例如nls/
fr/
register.js
...
register.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
main.54b8801bf2c6e13b.js
NLS / FR / register.js
define(['text!json/root/register.json', 'settings'], function(json, settings) {
return {
"fr": true
}
});
视图/ register.js
define(['text!json/fr/register.json'], function(json) {
return JSON.parse(json);
});
答案 0 :(得分:1)
我通过我的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'
]
}]