我想将momentjs与流星一起使用。这是一个 npm 包,所以据我了解,它不能与流星一起使用,因为流星使用它自己的包系统。所以这是我的问题:
- 有谁知道将momentjs与流星一起使用的方法?
- 有没有办法将 npm 包与流星一起使用?
2017 年编辑:从 Meteor 1.4+ 开始,npm 包管理允许 npm 模块的标准导入和 Atmosphere 模块的命名导入。
泰勒,我有同样的问题,而且肯定有很多人试图尽快找到正确的答案,因为这是一件容易的事,即使第一次使用流星的人(如我)有这种的问题...
流星包管理
首先,我们不会使用 NPM,我们将使用 Meteor 包管理AtmosphereJS中使用的“Meteor”此外,您会在这里找到其他令人惊叹的包......
所以让我们开始吧
打开您的终端并直接转到您的应用程序所在的位置,您必须安装正确的依赖项才能这样做:
安装唯一的依赖
这将适用于 Meteor 1.*
meteor add momentjs:moment
编译你的应用程序(你可以现在或以后做)
这会将这个包添加到您的应用程序中,然后再次编译它
meteor
并转到您的 isClient 中的任何文件,这就是
if (Meteor.isClient) { }
你可以像他们在他们的网站MomentJs上展示的那样使用“时刻”方法!
例子
举个例子,这就是我在我的流星应用程序中使用的方式
moment(dateToPass).fromNow();
因为我使用的是 Mongo,所以原始数据看起来像这样。
"createdAt" : ISODate("2014-12-12T04:01:21.768Z")
我必须做一个简单的查找查询来获取您的数据,然后您可以像这样处理您的数据(此代码将让您了解我如何使用包含 Date() 的 CreatedAt 值来使用它与 MomentJS)
var theItemsOnTheArray = SomeArray.find();
var dateToPass;
theItemsOnTheArray.forEach(function (item) { dateToPass = item.createdAt });
return moment(dateToPass).fromNow();
结果将是
// 3 years ago
// 2 years ago
// 21 hours ago
// in 3 hours
// 5 minutes ago
代替:
Thu Dec 11 2014 20:14:08 GMT-0800 (PST)
我希望它对你们中的任何人有用,如果您认为它有有价值的信息,请 +1 ;) 谢谢!
2017 更新- Meteor 1.4+ 使用npm
带有 ES6 的模块。OP是2013年的。
因此...
仅 npm 的方式:
以这种方式安装moment
到您的流星npm
项目import
......
$ cd /path/to/my/meteor/project
$ npm install --save moment
// inside your Meteor app files...
import moment from 'moment';
使用一揽子导入的流星-npm 方式:(谢谢,@Dave Gööck)
$ cd /path/to/my/meteor/project
$ meteor npm install --save moment
// Inside Meteor app...
import * as moment from 'moment';
// OR
import moment from 'moment';
有关 Meteor-npm 包导入的更多信息,请点击此处。(特别提到moment
)。
这个问题是3年前问的,当时还没有大气的官方包。由于提出了问题,事情发生了变化,我指出了该包何时添加到流星回购中。
从大气安装官方包
meteor add momentjs:moment
如果您使用的是打字稿,只需
import * as moment from "moment/moment";
然后在你的代码中
let date = moment(<some date>).format('YYYY MM DD');
我有一个更复杂的问题,因为:
我很想听听有一种更简单的方法可以实现这些目标,但我采取了以下步骤来最终使其发挥作用:
第1步。$ meteor add momentjs:moment
步骤 2. 下载文件https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/moment/moment-node.d.ts并保存为 ./typings/moment/moment.d.ts (出于某种原因只是执行typings install dt~moment--global --save
不会成功,因为它只会下载一个几乎空的https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/moment/moment.d.ts文件,该文件引用了 moment-node.d.ts包含真实内容的文件)
步骤 3. 将以下行附加到 moment.d.ts:
declare module "meteor/momentjs:moment" {
var moment: moment.MomentStatic;
}
步骤 4. 下载https://raw.githubusercontent.com/moment/moment/develop/locale/pl.js(或任何其他语言环境)并将其保存在 ./client/lib/moment/locale/pl.js (或./client 下的任何其他目录)
步骤 5. 编辑 ./client/lib/moment/locale/pl.js 的开头和结尾,在开头用一行替换加载器代码
import { moment } from 'meteor/momentjs:moment';
第 6 步。最后你可以在任何模块中使用 moment js,只需附加
import { moment } from "meteor/momentjs:moment";
在文件的开头,然后您可以执行以下操作:
moment(ts).locale('pl').format('LLL');
如果您使用的是 'meteor/tap:i18n' 包,您可能希望使用TAPi18n.setLanguage(...);
在启动期间传递给的相同语言。您可能需要创建 typings/globals/meteor_tap_i18n.d.ts 文件
declare module "meteor/tap:i18n" {
export var TAPi18n : TAPi18nStatic;
interface TAPi18nStatic{
setLanguage(name:string):any;
getLanguage():string;
__(name:string,params?:any):string;
}
}
然后你可以在你的模块中使用它
import { TAPi18n } from 'meteor/tap:i18n';
//...
moment(ts).locale(TAPi18n.getLanguage()).format('LLL');