javascript - 为什么我不必将 `import` `anti:fake` 放入我的 Meteor 源文件中?

标签 javascript meteor typescript import atmosphere.js

我见过一些与此类似的问题,但似乎没有一个适用于我的情况。

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

对于任何其他包,我必须import 它。即使是 Meteor 本身,我也必须执行 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 包,将其绑定(bind)到全局变量 假的

import {Meteor} from 'meteor/meteor' 出于同样的原因实际上并不需要,但强烈推荐作为最佳实践(如果 future 的版本通过删除急切加载)。

如果您寻找针对 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 对象在客户端和服务器上都可用。不需要 import 语句(因为它们被放置在全局命名空间中)

有关详细信息,请参阅 Migrating to Meteor 1.3文档

关于javascript - 为什么我不必将 `import` `anti:fake` 放入我的 Meteor 源文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39604047/

相关文章:

javascript - 为什么在 Meteor 模板中使用 {{@...}} 会导致错误?

angular - 如何从具有匹配属性的数组中删除对象?

javascript - 禁用范围输入的 HTML5 拖放

javascript - Backbone.js - 一个 View 应该如何更新多个 HTML 元素?

javascript - 检测 iFrame 中的打印事件

authentication - 在 Meteor 中通过 SMS 登录和注册过程

javascript - ssh2连接到多个服务器并获取输出nodejs

cordova - 如何使用 Meteor 在 iOS 中打开谷歌地图

reactjs - 类型 'setTabChange' 上不存在属性 'never'。 (React hooks Typescript) 使用 ref

Javascript 一行如果,只声明 true