2012-09-07 61 views
4

在GWT-land中,「鏈接器」和DFN代碼分割之間的關係是什麼?爲什麼鏈接器需要支持codesplitting,爲什麼一些鏈接器不支持它?你如何選擇你的應用應該使用哪個鏈接器,以及哪些因素進入該決策?GWT:鏈接器和代碼分割

回答

12

主鏈接器(也有二級鏈接器,但它們並未涉及)負責創建承載編譯的JS代碼的* .js或* .html文件,當然還有如何引導/加載他們進入瀏覽器。

一旦你知道這一點,顯然他們必須明確支持代碼分割。

例如,xs(跨站點)連接器包裝整個腳本在一個匿名函數,因此不會「污染在全球範圍內」(技術也被稱爲模塊模式)。它不能動態地將一些其他腳本注入到可以訪問其內部的頁面中。 sso(單腳本)鏈接器具有相同的限制。

std(iframe)鏈接器將您的應用程序加載到充當沙盒的動態創建的iframe中:iframe的全局作用域不是主機頁面的全局作用域。然後它可以在iframe中動態注入一個腳本,該腳本可以訪問已存在的所有內容(iframe的全局範圍)。

但實際上,你不必選擇哪個鏈接器您的應用程序應該使用:與xsiframe堅持(你必須明確地激活然而,暫且認爲是)。它將xs鏈接器的跨站點友好性與std鏈接器的iframe沙盒相結合。

您可以預計所有其他鏈接器(可能除外sso之一)在未來的GWT發佈中將被棄用,並最終完全刪除;並將std鏈接器替換爲xsiframe鏈接器作爲默認鏈接器。

+1

xs鏈接器尚未實現,不是嗎? – burtsevyg

+2

正在處理的唯一連接器是'xsiframe'鏈接器(請參閱我的答案的最後兩段),它支持代碼拆分。 –