[英]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.