为什么我不必将 `anti:fake` `import` 到我的 Meteor 源文件中?
Why don't I have to `import` `anti:fake` into my Meteor source files?
我看到了一些与此类似的问题,但 none 似乎适用于我的情况。
我正在创建一个 Meteor 项目并使用 Atmosphere 包 'anti:fake' 生成测试数据。
对于任何其他包,我必须 import
它。就连Meteor本身,我也要做import {Meteor} from 'meteor/meteor';
。对于其他类似的 Atmosphere 包,例如 publish-counts
我也必须写一行 import {Counts} from 'meteor/tmeasday:publish-counts';
。 ...此外,即使我想导入 anti:fake
,我也看不到可以正常工作的导入名称。它们在 packages
文件中以相同的方式列出,并以相同的方式添加到我的项目中,因此从表面上看,它们看起来都一样。
None 这真的很重要,因为我可以神奇地使用一个名为 Fake
的对象,但我真的不明白为什么会这样,以及我将来如何知道我需要显式导入的内容和隐式导入的内容。
谢谢!
Meteor 1.3 引入了 ES2015 模块,但是为了保持向后兼容性,Meteor 仍然保留了 "eager loading" 为您导入 anti:fake
包的行为,将其绑定到全局变量 Fake
.
出于同样的原因,import {Meteor} from 'meteor/meteor'
实际上并不是必需的,但强烈建议将其作为最佳实践(如果未来的版本通过删除预先加载来降低这种向后兼容性,则可能变得必要)。
如果您寻找针对 Meteor 1.3 或更高版本的较新教程,您会看到大部分代码都放在 /imports
目录中,因为 Meteor 构建工具对此的处理方式不同,所有代码都在它不是 'eagerly loaded'。此目录中的所有代码都必须显式导入,连同模块命名空间和避免旧的文件加载顺序问题,让您更清楚地了解应用程序中的代码 运行(更少魔法!)。
Meteor 1.3 还包括对 NPM 包的支持,它们为您提供了使用大气包的替代方法,并且以这种方式包含的包也需要明确导入到您的应用程序中。
您可以考虑使用 https://www.npmjs.com/package/faker。
但是,如果某些东西对您有用,您就不必觉得必须进行更改,但希望这可以帮助您理解它为什么起作用!
您确定publish-counts
需要导入语句吗?查看此包的 package.js
会显示这两行
api.export('Counts');
api.export('publishCount', 'server');
这使得 publishCount
对象在导入此包的应用程序(或包)中的服务器上可用,并且 Counts
对象在客户端和服务器上都可用。不需要导入语句(因为它们被放置在全局命名空间中)
有关详细信息,请参阅 Migrating to Meteor 1.3 文档
我看到了一些与此类似的问题,但 none 似乎适用于我的情况。
我正在创建一个 Meteor 项目并使用 Atmosphere 包 'anti:fake' 生成测试数据。
对于任何其他包,我必须 import
它。就连Meteor本身,我也要做import {Meteor} from 'meteor/meteor';
。对于其他类似的 Atmosphere 包,例如 publish-counts
我也必须写一行 import {Counts} from 'meteor/tmeasday:publish-counts';
。 ...此外,即使我想导入 anti:fake
,我也看不到可以正常工作的导入名称。它们在 packages
文件中以相同的方式列出,并以相同的方式添加到我的项目中,因此从表面上看,它们看起来都一样。
None 这真的很重要,因为我可以神奇地使用一个名为 Fake
的对象,但我真的不明白为什么会这样,以及我将来如何知道我需要显式导入的内容和隐式导入的内容。
谢谢!
Meteor 1.3 引入了 ES2015 模块,但是为了保持向后兼容性,Meteor 仍然保留了 "eager loading" 为您导入 anti:fake
包的行为,将其绑定到全局变量 Fake
.
import {Meteor} from 'meteor/meteor'
实际上并不是必需的,但强烈建议将其作为最佳实践(如果未来的版本通过删除预先加载来降低这种向后兼容性,则可能变得必要)。
如果您寻找针对 Meteor 1.3 或更高版本的较新教程,您会看到大部分代码都放在 /imports
目录中,因为 Meteor 构建工具对此的处理方式不同,所有代码都在它不是 'eagerly loaded'。此目录中的所有代码都必须显式导入,连同模块命名空间和避免旧的文件加载顺序问题,让您更清楚地了解应用程序中的代码 运行(更少魔法!)。
Meteor 1.3 还包括对 NPM 包的支持,它们为您提供了使用大气包的替代方法,并且以这种方式包含的包也需要明确导入到您的应用程序中。
您可以考虑使用 https://www.npmjs.com/package/faker。
但是,如果某些东西对您有用,您就不必觉得必须进行更改,但希望这可以帮助您理解它为什么起作用!
您确定publish-counts
需要导入语句吗?查看此包的 package.js
会显示这两行
api.export('Counts');
api.export('publishCount', 'server');
这使得 publishCount
对象在导入此包的应用程序(或包)中的服务器上可用,并且 Counts
对象在客户端和服务器上都可用。不需要导入语句(因为它们被放置在全局命名空间中)
有关详细信息,请参阅 Migrating to Meteor 1.3 文档