2016-08-03 60 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