Joh*_*ieb 10 javascript requirejs momentjs
我目前正在尝试使用带有require.js的moment.js库,但我仍然无法理解这样一个项目的正确设置.这是我在main.js文件中的操作:
requirejs.config({
baseUrl: 'app',
paths: {
// ... more parameters (all Backbone related)
'moment': 'lib/moment',
'moment_de': 'lib/lang/de',
},
shim: {
'moment' : {
deps: [],
},
'moment_de': {
deps: ['moment'],
},
// ... more parameters (all Backbone related)
}
});
Run Code Online (Sandbox Code Playgroud)
我正在使用单独的模块进行配置.该模块如下所示:
define(['moment', 'moment_de'], function(moment, de) {
moment.lang('de');
var configuration = {}
// ...
return configuration;
});
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在尝试更改此文件中的moment对象的全局语言,但我遇到以下错误消息:
Uncaught Error: Module name "../moment" has not been loaded yet for context: _. Use require([])
Run Code Online (Sandbox Code Playgroud)
后来:
Uncaught TypeError: Cannot call method 'preparse' of undefined
Run Code Online (Sandbox Code Playgroud)
第一个错误消息是正在加载的语言模块,尽管它应该在当前模块之后加载(如果我正确的话).第二个是从尝试切换到尚未加载的语言模块的时刻模块.
有人可以就这个问题发表一些看法.提前致谢.
编辑:我使用缩小语言版本修复了问题(例如这个).显然,缩小版本使用AMD格式,这样可以更容易地包含在require.js项目中.
我仍然不太明白为什么不可能使用shim配置包含语言.也许有人可以试着解释一下.
require({
paths: {
'moment': '//cdnjs.cloudflare.com/ajax/libs/moment.js/2.0.0/moment.min',
'moment_de': '//cdnjs.cloudflare.com/ajax/libs/moment.js/2.0.0/lang/de.min'
}
}, ['moment', 'moment_de'], function(moment){
moment.lang('de');
alert(moment(1316116057189).fromNow());
});
Run Code Online (Sandbox Code Playgroud)
您不需要对模块进行填充,因为 moment.js 支持 AMD。 http://jsfiddle.net/modern Degree/xYXUC/