2012-11-15 33 views
2

我試圖使用新的顯示語法來減少編譯的js代碼的大小。這工作正常,只要我不需要任何種類的窗口事件Dart導入顯示窗口結果NoSuchMethodError

當我添加窗口來顯示然後,編輯器說一切都很好。當我運行應用程序,我得到:

Exception: NoSuchMethodError : method not found: 'get:window' 
Receiver: Instance of 'Toolbar' 
Arguments: [] 
Stack Trace: #0  Object._noSuchMethod (dart:core-patch:1261:3) 
#1  Object.noSuchMethod (dart:core-patch:1264:25) 
#2  Toolbar._init (...toolbar.dart:93:5) 
#3  Toolbar.Toolbar.initialize (...toolbar.dart:47:10) 
#4  main (...toolbar.dart:29:21) 

是否有任何其他方式來獲得窗口實例不使用窗口變量?

回答

2

你確定使用show實際上有助於編譯的JavaScript代碼的大小嗎?你不應該這樣做。由於樹形抖動和死代碼消除,只有您使用的內容纔會顯示在編譯後的輸出中。

您可以使用show來嚴格控制導入的內容,很明顯哪些內容來自哪些庫。如果你不使用show來導入很多庫,很難說出來自哪裏的內容,這對於非常大的代碼庫可能是一個挑戰。

如果導入兩個具有使用相同名稱的函數或類的不同庫,也可以使用show。通過使用show,你可以指定你想要的。

+0

嗯,你是對的。那麼它有什麼好處呢? –

+2

如果您有兩個或更多導出相同符號名稱的庫(比如說導出一個名爲'Foo'的函數的2個庫),這很好。如果你現在導入它們,並且你想選擇使用哪個'Foo',唯一的方法是在導入這些庫時使用'hide'或'show'或者兩者都使用。 –

相關問題