2016-12-15 63 views
0

我正在將現有的Web應用程序轉換爲Polymer。 Web應用程序由組件(在Knockout組件體系結構中)和模塊組成。兩者都使用RequireJS加載。我看到如何將Knockout組件轉換爲Polymer自定義元素,但不知道如何處理JavaScript模塊。 RequireJS模塊返回一個JavaScript對象,該對象通過參數傳遞給依賴於它的JavaScript到「define」函數。如果模塊代碼是通過HTML導入而不是RequireJS加載的,似乎沒有辦法獲得該對象。如何將AMD模塊導入Polymer自定義元素?

例如,若干現有組件使用moment.js模塊進行日期/時間操作。他們通過RequireJS加載它,它向它傳遞了對象的引用。在其中一篇Polycast視頻中,Rob Dobson表示,推薦的做法是編寫一個moment.html文件,其中包含<script>標籤以導入moment.js。然後,聚合物自定義元素可以執行moment.html的HTML導入,但這不會使組件訪問由moment.js模塊返回的對象。 Moment不會將該對象放入全局名稱空間,那麼Polymer自定義元素如何訪問該時刻對象?

+0

我使用聚合物的「時刻」。您唯一需要做的就是使用源代碼導入腳本,然後您可以直接在您的ploymer函數中使用它,如'moment(date).format('D MMM YYYY')' – a1626

+0

這個時刻的使用已被廢棄。使用它會在控制檯中產生以下消息:「棄用警告:不推薦使用通過全局作用域訪問Moment,並且將在即將發佈的版本中刪除它。」重點在於應用程序中的模塊不會將任何內容放入全局名稱空間,而是通過RequireJS「define」函數將引用傳遞給相關組件。 –

+0

你做了一個涼亭安裝的時刻? – a1626

回答

0

這從聚合物隊的賈斯汀Fagnani:像你需要一個模塊加載/註冊表與聚合物/ HTML進口工作

「聽起來我在這裏做了這樣叫IMD一件事:https://github.com/PolymerLabs/IMD

這是隻有符合AMD標準的模塊註冊表,而不是加載器,因此所有模塊都必須通過顯式或標籤進行加載,從而確保依賴性排序得以保留。「

它正是我所期待的。

相關問題