如何使用多个时刻插件?

时间:2017-09-07 08:39:23

标签: javascript typescript momentjs

我知道如果我想使用它,我必须导入片刻插件。像这样:

import * as moment from "moment-timezone";

//here I can use moment.tr.names() etc.

但是,如果我想使用多个插件怎么办?我知道插件在瞬间导入时刻,添加其功能然后再次导出时刻。但如果这是正确的,我该如何使用多个插件?

一种选择是使用不同的名称导入它们,例如:

import * as momentJdate from "moment-jdateformatparser";
import * as momentTimezone from "moment-timezone";

或者我可以将它们合并到像这样的一个时刻对象中(使用deepExtend):

let moment = {};
deepExtend(moment, momentJdate, momentTimezone);

//here you should be able to use moment().toJDFString() and moment.tz.names()

但这些似乎都不是干净的代码。有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

什么对我有用,我认为是干净的 - 一个接一个地导入。例如:

moment = require('moment-business-days');
moment = require('moment-timezone');
moment().tz('America/New_York').businessAdd(1).startOf('day').add(7, 'hours')

这不是理想的,因为它是不透明的,如果不理解节点是如何工作的,你可能会认为第一个要求是没有意义的。但它干净而有效。

答案 1 :(得分:0)

// utils/date.js
import momentJava from "moment-jdateformatparser";
import * as momentJsTZUI from "moment-timezone";
import moment from "moment";
const momentAll = { ...moment, ...momentJsTZUI, ...momentJava };
export { momentAll };

// then in app.js

import { momentAll } from "./utils/date";
const { default: moment}  = momentAll;

console.log(moment("2013-12-24 14:30").formatWithJDF("dd.MM.yyyy"))
console.log(moment("2014-06-01T12:00:00Z").tz('America/Los_Angeles').format('ha z'));
console.log(moment().format());