如何在流星上使用`moment.js`?

Tyl*_*nes 10 npm meteor momentjs

我想和流星一起使用momentjs.这是一个npm包,所以根据我的理解,它不能用于meteor,因为meteor使用它自己的包系统.所以这是我的问题:

  • 有没有人知道如何在流星上使用momentjs?
  • 有没有办法在流星上使用npm包?

2017编辑:从Meteor 1.4+开始,npm包管理允许标准导入npm模块和命名的Atmosphere模块导入.

Ren*_*olo 22

泰勒,我有同样的问题,肯定有很多人试图尽快找到正确的答案,因为这是一件容易的事情,即使第一次使用流星的人(像我一样)有这种问题......

流星包管理

首先,我们将不会使用NPM,我们将使用Meteor包管理AtmosphereJS中使用的'Meteor'.此外,您将在这里找到其他惊人的包...

让我们开始吧

打开您的终端并直接进入您的应用程序所在的位置,您必须安装正确的依赖项才能执行此操作:

安装唯一的依赖项

这将适用于Meteor 1.*

 meteor add momentjs:moment
Run Code Online (Sandbox Code Playgroud)

编译您的应用程序(您现在或以后可以这样做)

这会将该软件包添加到您的应用程序,之后再次使用它进行编译

meteor
Run Code Online (Sandbox Code Playgroud)

然后转到isClient里面的任何文件,就是这个

if (Meteor.isClient) {   }
Run Code Online (Sandbox Code Playgroud)

并且你可以像他们在网站MomentJs上展示的那样使用'时刻'方法!

举个例子,这是我在我的流星应用程序中使用的方式

moment(dateToPass).fromNow();
Run Code Online (Sandbox Code Playgroud)

因为我使用Mongo,原始数据看起来像这样.

"createdAt" : ISODate("2014-12-12T04:01:21.768Z")
Run Code Online (Sandbox Code Playgroud)

我将不得不做一个简单的查找查询来获取你的数据然后你可以像这样处理你的数据(这段代码将让你知道我如何使用CreatedAt值来保存Date()来使用它与MomentJS)

var theItemsOnTheArray = SomeArray.find();
var dateToPass;
theItemsOnTheArray.forEach(function (item) { dateToPass = item.createdAt });
return moment(dateToPass).fromNow();
Run Code Online (Sandbox Code Playgroud)

结果将是

// 3 years ago
// 2 years ago
// 21 hours ago
// in 3 hours
// 5 minutes ago
Run Code Online (Sandbox Code Playgroud)

代替:

Thu Dec 11 2014 20:14:08 GMT-0800 (PST)
Run Code Online (Sandbox Code Playgroud)

我希望它对你们任何人都有用,如果你认为它有价值的信息请+1;)谢谢!

  • 非常好的帖子.您包括Meteor的版本,链接到momentjs示例,并使用Markdown格式高雅.加2如果我能:) (2认同)

Dav*_*don 9

对于独立的js库,如moment.js,validate.js,underscore.string.js等,您只需将源文件放入您的lib文件夹即可.我client/lib用于仅在客户端上使用的库(如validate.js),以及lib可供客户端和服务器使用的库(如moment.js).

如果你使用陨石,你可以利用气氛套餐.您正在寻找的一些可能在那里.

使用流星的npm模块是很多人都会问的问题(有充分的理由).你可以在这里看到一些注释,虽然我亲自听说流星与npm包的谈话方式即将发生重大变化.

  • 关于气氛套餐我唯一要注意的是,其中一些似乎没有得到维护.我使用了几个包,其中维护者真正掌握在最新版本之上.另一方面,许多软件包看起来像放弃软件.长话短说,你可能想在运行`mrt add`之前做一些功课. (3认同)

小智 5

问题在3年前被问到,那时大气层没有正式的包装.因为问题被改变了,我指出当包裹被添加到流星回购时.

从大气中安装官方包装

meteor add momentjs:moment
Run Code Online (Sandbox Code Playgroud)

如果你正在使用打字稿,只是

import * as moment from "moment/moment";
Run Code Online (Sandbox Code Playgroud)

然后在你的代码中

let date = moment(<some date>).format('YYYY MM DD');
Run Code Online (Sandbox Code Playgroud)


aza*_*tar 5

2017更新 - Meteor 1.4+使用npmES6模块.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';
Run Code Online (Sandbox Code Playgroud)

带有全面导入的meteor-npm方式:( Thx,@DaveGöö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';
Run Code Online (Sandbox Code Playgroud)

有关Meteor-npm包导入的更多信息,请点击此处.(特别提及moment).