2016-09-20 67 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

相關問題