2016-08-03 58 views
0

大约一年前我已经使用了流星,现在我想再次使用它,但很多事情已经改变。流星为什么需要进口包装

当我遵循Meteor.com大火教程,他们补充他们的文件之上进口:

import { Meteor } from 'meteor/meteor'; 
import { Template } from 'meteor/templating'; 
import { ReactiveDict } from 'meteor/reactive-dict'; 

我得到了应用程序的工作。但是,当我注销导入时,应用程序继续工作就像它应该工作。为什么需要这些进口?

我仍在使用的规则的Javascript,不ES6。

谢谢!

+1

如果您不使用ES6,除非您有一个可识别它的模块打包程序,否则不能使用导入语法。 – gcampbell

+0

啊我已经认为它必须做一些与ES6。但使用进口的主要优势是什么? – coder14

+0

它不是特定于Meteor,但有一个称为Rollup的模块打包程序,它使用*树形抖动*来移除不需要的东西,并且仅适用于ES6模块。检查出来,这是真棒;) – gcampbell

回答

3

import语句用于导入函数,对象或已被从外部模块,另一个脚本等

name参数导出的原语是将接收导出部件的对象的名称。成员参数指定个别成员,而name参数导入所有成员。名称也可能是一个函数,如果模块导出一个默认参数而不是一系列成员。以下是阐明语法的示例。

导入整个模块的内容。这将myModule插入到当前作用域中,其中包含“my-module.js”中所有导出的绑定。

有关,我们可以与他们一起使用进口使用不同的方法更详细,请this

1

他们仍然使用旧的全局变量来提供向后兼容性。不过建议使用这些导入,所以如果在将来的某个版本中它们会删除全局变量,那么代码仍然可以工作。您可以在appropriate section of the guide中阅读更多内容。

+0

好吧,所以它是一种后备,如果他们曾经要删除全局变量? – coder14

+0

这是我的承担。但是,我不认为他们会删除全局变量。 –

1

好吧,你知道import是从已经在另一个文件中导出的对象。

,你可能已经错过了的一点是,千年发展目标听说需要停止默认加载的一切,或至少提供一个均值来控制什么是加载到内存中,哪些不是。

外观为/imports特殊的目录。

文件夹中的不再是自动加载的,而只能通过import声明。

至于本教程,我猜他们没有解释这个功能,而且因为它只导入了标准的功能,这些功能仍然是为了向后兼容而急切地加载,所以它不会改变任何删除这些语句的东西。

+0

使用'../api/tasks中的import {Tasks}导入/ imports文件夹中的其他文件。js';'听起来合乎逻辑,但我没有明白为什么你应该从'流星/流星'导入像'流星'这样的软件包;如果它没有做任何事情。 – coder14

+0

作为肖恩海斯提到的,我会说好的做法和“以防万一”? – ghybs