Moment 被设计为在浏览器和 Node.js 中都能工作。
所有的代码都应该在这两种环境中都可以工作,并且所有的单元测试都应该在这两种环境中运行。
CI 系统当前使用以下的浏览器:Windows XP 上的 Chrome,Windows 7 上的 IE 8、9 和 10,Windows 10 上的 IE 11,Linux 上最新的 Firefox,OSX 10.8 和 10.11 上最新的 Safari。
如果您想尝试以下的示例代码,则只需打开浏览器的控制台并输入即可。
Node.js
npm install moment
var moment = require('moment');
moment().format();
注意:在 2.4.0 中,全局的 moment 对象已被废弃。 它将会在下一个主版本中被删除。
浏览器
<script src="moment.js"></script>
<script>
moment().format();
</script>
Moment.js 在 cdnjs.com 和 jsDelivr 上可用。
Bower
bower
bower install --save moment
值得注意的文件是 moment.js
、locale/*.js
和 min/moment-with-locales.js
。
Require.js
如果你打算将 moment 与 Require.js 结合使用,则强烈建议你阅读此内容。 另外,请升级到 2.14.0 或更高版本以获得最佳体验。
首先,你可能需要通过 bower 或 node_modules 或其他方式将 moment.js 以及语言环境目录放置在基层文件夹中来获取 moment。 然后,你可以使用 adapt-pkg-main 之类的工具、或者手动使用包配置。
requirejs.config({
packages: [{
name: 'moment',
// 此位置是相对于 baseUrl 的。
// 选择 bower_components 还是 node_modules 取决于具体的安装方式。
location: '[bower_components|node_modules]/moment'
main: 'moment'
}]
});
通过上述的设置,你可以使用 moment
引入核心模块、使用 moment/locale/de
引入 de
语言环境。
// 只需要核心模块。
define(['moment'], function (moment) {
console.log(moment().format('LLLL')); // 'Friday, June 24, 2016 1:42 AM'
});
// 具有单一语言环境的核心模块。
define(['moment', 'moment/locale/de'], function (moment) {
moment.locale('de');
console.log(moment().format('LLLL')); // 'Freitag, 24. Juni 2016 01:42'
});
// 具有所有语言环境的核心模块。
define(['moment/min/moment-with-locales'], function (moment) {
moment.locale('de');
console.log(moment().format('LLLL')); // 'Freitag, 24. Juni 2016 01:42'
});
// 异步加载语言环境。
define(['require', 'moment'], function(require, moment) {
// 检测到语言环境之后,在某个模块内部。
// 这是在模块加载时间之前不知道语言环境的情况。
require(['moment/locale/de'], function(localeModule) {
// 此处已加载语言环境,但尚未使用。
console.log(moment().format('LLLL')); // 'Friday, June 24, 2016 1:42 AM'
moment.locale('de');
// 已经正确地设置了语言环境之后使用 moment。
console.log(moment().format('LLLL')); // 'Freitag, 24. Juni 2016 01:42'
})
});
对于更复杂的用例,请阅读 @jrburke 的出色解释。
Moment 仍将会创建全局的 moment
,这对于插件和其他第三方代码很有用。 如果需要制止该全局变量,则在模块配置上使用 noGlobal
选项。
require.config({
config: {
moment: {
noGlobal: true
}
}
});
如果未指定 noGlobal
,则全局导出的 moment 将会打印弃用警告。 从下一个主要版本开始,如果你需要这种行为,则必须自行导出。
对于 2.5.x 版本,如果使用依赖 Moment 但与 AMD 不兼容的其他插件,则可能需要在 r.js 配置中添加 wrapShim: true
。
为了使 moment.js 插件可以在 requirejs 环境中被加载,moment 会被创建为一个命名模块。 因此,必须使用 paths
来确定目录,将 moment 完全按 "moment"
加载。 使用 "vendor\moment"
之类的路径引入 moment 将会返回 undefined
。
从 2.9.0 版本开始,moment 会将自身导出为匿名模块,因此,如果仅使用核心模块(不使用语言环境或插件),则将其放置在非标准位置时不需要配置。
NuGet
NuGet / Moment.js
Install-Package Moment.js
meteor
meteor / atmosphere / momentjs:moment
meteor add momentjs:moment
Browserify
npm install moment
var moment = require('moment');
moment().format();
注意,有一个 bug 会导致无法加载 moment.locale
。
var moment = require('moment');
moment.locale('cs');
console.log(moment.locale()); // en
使用下面的解决方法。
var moment = require('moment');
require('moment/locale/cs');
console.log(moment.locale()); // cs
为了包含所有的语言环境。
var moment = require('moment');
require("moment/min/locales.min");
moment.locale('cs');
console.log(moment.locale()); // cs
Webpack
var moment = require('moment');
moment().format();
默认情况下,webpack 会打包所有的 Moment.js 语言环境(在 Moment.js 2.18.1 中,最小为 160 KB)。 若要剥离不必要的语言环境且仅打包使用的语言环境,则添加 moment-locales-webpack-plugin
:
// webpack.config.js
const MomentLocalesPlugin = require('moment-locales-webpack-plugin');
module.exports = {
plugins: [
// 剥离除 “en” 以外的所有语言环境。
new MomentLocalesPlugin(),
// 或者:剥离除 “en”、“es-us” 和 “ru” 以外的所有语言环境。
//(“en” 内置于 Moment 中,无法移除)
new MomentLocalesPlugin({
localesToKeep: ['es-us', 'ru'],
}),
],
};
还有其他资源可以使用 webpack 优化 Moment.js,例如该资源。
Typescript 2.13.0+
从 2.13.0 版本开始,Moment 会包含一个 typescript 定义文件。
通过NPM安装。
npm install moment
导入并在你的 Typescript 文件中使用。
import * as moment from 'moment';
let now = moment().format('LLLL');
如果你在导入时遇到麻烦。
对于 Typescript 2.x,则尝试在 tsconfig.json
文件中的 compileOptions
中添加 "moduleResolution": "node"
,然后使用以下任何语法:
import * as moment from 'moment';
import moment = require('moment');
对于 Typescript 1.x,则尝试在 tsconfig.json
文件中的 compileOptions
中添加 "allowSyntheticDefaultImports": true
,然后使用语法:
import moment from 'moment';
语言环境导入
若要使用 moment.locale
,则首先需要导入要使用的语言。
import * as moment from 'moment';
import 'moment/locale/pt-br';
console.log(moment.locale()); // en
moment.locale('fr');
console.log(moment.locale()); // en
moment.locale('pt-BR');
console.log(moment.locale()); // pt-BR
System.js
若要加载 moment,则将其放置在 baseURL 配置中的 System.config 指定的路径中。 然后将其导入页面。
如果需要将 moment 加载为全局变量,则可以使用元配置:
System.config({
meta: {
'moment': { format: 'global' }
}
});
另外,若要将 Moment 作为全局仅提供给特定的依赖项,则可以如下操作:
其他
若要在 Java/Rhino 下使用,则参阅这些说明。
若要在 Demandware 中使用,则参阅这些说明。
作者:terry,如若转载,请注明出处:https://www.web176.com/momentjs/2380.html