2016-09-20 68 views
1

我已经看到了一些类似的问题,但似乎没有适用于我的情况。为什么我不需要将`anti:fake`导入我的Meteor源文件?

我创建一个流星的项目并使用大气包“防:假冒”生成测试数据。

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

这些都不重要,因为我可以神奇地使用一个名为Fake的对象,但我不明白为什么会是这种情况,以及我将来如何知道我需要明确导入以及什么是只是隐式导入。

谢谢!

回答

1

流星1.3引入了ES2015模块,但是为了保持向下兼容性流星仍然保留着为您导入anti:fake包的“热切加载”行为,将其绑定到全局变量Fake

import {Meteor} from 'meteor/meteor'由于同样的原因实际上并不需要,但强烈建议作为最佳实践(如果将来的版本通过移除热切加载而降低了这种向后兼容性,可能会变得必要)。

如果您寻找针对Meteor 1.3或更新版本的较新教程,您会发现大多数代码都放在/imports目录中,因为Meteor构建工具对此进行了不同处理,并且其中的所有代码都不是“热切地”装”。此目录中的所有代码都必须明确导入,这与模块命名空间以及避免旧的文件加载顺序问题一起,可以让您更清楚地了解应用程序中运行的代码(更少的魔力!)。

还包括流星1.3是为NPM包的支持,他们给你一个替代使用大气包和软件包包含这种方式还需要明确地导入到你的应用程序。

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

但是不觉得你必须,如果事情正在为你改变,但希望这有助于理解为什么这是工作!

确定publish-counts需要import语句?纵观package.js此软件包显示了这两条线

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

这使得在一个应用程序(或程序包)的服务器上可用的publishCount对象导入这个包,并且Counts对象提供客户端和服务器上。没有需要导入声明(因为它们放置在全局命名空间中)

欲了解更多信息,请参阅Migrating to Meteor 1.3 doc

相关问题