2014-07-19 34 views
5

我正在爲大型多開發人員項目構建應用程序框架。我的想法是使用Require.js和Angular來管理依賴和類加載。但是現在我也想用Polymer,因爲它非常酷。Require.js爲應用程序加載所有資源,包括Polymer

我怎樣才能使用require.js加載聚合物元素庫,就像我的js的一樣?我喜歡掛靠的想法,要求作爲一種真正的方式來加載我所有的應用程序資源。我看到能夠將模板,腳本和樣式綁定到一個表示組件的邏輯.html文件是多麼好,而且我知道我們可以將這些部分拆分爲單獨的文件,但只要我看到任何鏈接rel =「導入」內部的東西,我覺得這是進入require.js的領域。

想法?

回答

3

這兩者之間存在一些緊張關係,因爲兩者都希望成爲跟蹤依賴關係的記錄系統。例如,如果您執行http導入/components/core-ajax/core-ajax.html,它將包含http導入../polymer/polymer.html,確保在運行core-ajax的任何腳本之前加載Polymer。 Polymer還有一個名爲vulcanize的工具,用於將一組Web組件編譯爲一個文件,以減少生產中的HTTP請求數量。

聽起來很熟悉嗎? require.js對所有這些片斷都有類似的機制。還值得注意的是,我並不知道正在採取什麼措施來統一所有這些,並且使事情變得更加複雜,ES6模塊提案正在聚集一堂。

我現在的建議是在可能的情況下只選擇一個依賴項跟蹤器。如果您使用的是Web組件,我建議您使用HTML導入,因爲將requirejs模塊轉換爲簡單的Web組件比將其轉換爲反向組件要容易得多。

例如假設你有一個依賴於jquery的腳本jquery.datatables.js。佈局你的文件,如:

  • 組件
    • jquery.datatables
      • jquery.datatables.js
      • jquery.datatables.html
    • jQuery的
      • 的jquery.js
      • jquery.html

jquery.html將包含:

<script src='jquery.js'></script> 

而且在jquery.datatables.html你會把:

<link rel='import' href='../jquery/jquery.html'> 
<script src='jquery.datatables.js'></script> 

HTML進口照顧重複刪除,所以你可以確信jquery.html只會被加載一次。

+0

我不知道如何與AMD互操作的ES6模塊?我無法想象在沒有AMD /要求的情況下組織一個大型項目。 – httpete

+0

這是一個完整的問題,但Square的es6模塊轉換器現在支持編譯爲AMD樣式的模塊,並且由於es6模塊加載行爲是可插入的,所以可以互操作。 –

+1

我發現這個[討論](https://gist.github.com/omo/9986103)非常有助於理解requirejs AMD風格的DI和HTML導入(tl; dr去爲html導入,他們是去尋找requirejs能夠做的事情的超集) – Renaud

相關問題