繁体   English   中英

为什么我不必将“ anti:fake”导入“ Meteor”源文件中?

[英]Why don't I have to `import` `anti:fake` into my Meteor source files?

我已经看到了一些与此类似的问题,但似乎没有一个适用于我的情况。

我正在创建一个Meteor项目,并使用Atmosphere软件包“ anti:fake”生成测试数据。

对于任何其他软件包,我必须将其import 即使是流星本身,我也必须import {Meteor} from 'meteor/meteor'; 对于其他类似的Atmosphere程序包,例如publish-counts我还必须编写一行代码,例如import {Counts} from 'meteor/tmeasday:publish-counts'; ...此外,即使我想导入anti:fake我也看不到没有错误的导入名称。 它们在packages文件中以相同的方式列出,并且以相同的方式添加到我的项目中,因此,从表面上看,它们看起来都相同。

这一切都无关紧要,因为我只能神奇地使用一个名为Fake的对象,但我不十分了解为什么会这样,以及以后如何知道需要显式导入的内容以及隐式导入的内容。

谢谢!

Meteor 1.3引入了ES2015模块,但是为了保持向后兼容性,Meteor仍然保留了“急切加载”的行为,该行为正在为您导入anti:fake包,并将其绑定到全局变量Fake

出于相同的原因,实际上并不需要import {Meteor} from 'meteor/meteor' ,但最好将其作为最佳实践使用(如果将来的发行版通过消除急切的加载而降低了向后兼容性,则可能有必要)。

如果您寻找针对Meteor 1.3或更高版本的较新教程,您会发现大多数代码都放在/imports目录中,因为Meteor构建工具对它的处理方式有所不同,并且其中的所有代码都不会“急于加载”。 必须显式导入该目录中的所有代码,以及模块的命名空间和避免旧文件加载顺序的问题,这使您更清楚地了解应用程序中正在运行的代码(不可思议!)。

Meteor 1.3中还包括对NPM软件包的支持,它们为您提供了使用大气层软件包的替代方法,以这种方式包含的软件包也需要明确导入到您的应用程序中。

您可以考虑使用https://www.npmjs.com/package/faker

但是,不要觉得如果有什么对您有用,您就不必进行更改,但是希望这可以帮助您了解它为什么起作用!

您确定publish-counts需要导入声明吗? 查看此程序包的package.js显示这两行

  api.export('Counts');
  api.export('publishCount', 'server');

这使publishCount对象在导入此程序包的应用程序(或程序包)中在服务器上可用,而Counts对象在客户端和服务器上均可用。 无需导入语句(因为它们位于全局名称空间中)

有关更多信息,请参阅迁移到Meteor 1.3文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM