我在国际网站的几个不同页面上使用Moment.js。每个页面都在片刻中使用require.js。
Moment允许您set the locale以该语言环境格式显示日期。但是,此代码必须在每个页面上运行Moment(因为我不确定用户首先加载哪个页面)。
var Moment = require('moment');
// configure locale
我想要做的是移动代码以将区域设置配置为类似预先要求的步骤,这样我就不必记住在每个页面上配置区域设置(并且它变得更加干燥)。所以我所要做的就是
var Moment = require('moment');
并且预先要求步骤已经配置了区域设置。
这可能吗?
答案 0 :(得分:4)
是的,有可能,像这样:
创建一个名为moment-configured
的模块:
define(['moment'], function (moment) {
// Call what you need to call to configure moment...
return moment;
});
使用map
配置,以便加载时刻的每个人都真正加载moment-configured
模块,而moment-configured
加载真实的moment
:
map: {
'*': {
moment: 'moment-configured'
},
'moment-configured': {
moment: 'moment'
}
}
此方法改编自RequireJS' documentation中有关如何使用noConflict
自动加载jQuery的示例。使用此地图配置,所有需要moment
的模块都将获得moment-configured
,但moment-configured
除外,它将获得真实的moment
。
答案 1 :(得分:-1)
可以为require config对象提供一个回调,以便在加载依赖项之后和定义require()之前执行:
requirejs.config({
deps: ['moment'],
callback: function (moment) {
console.log(moment().format());
}
});