【问题标题】:Dart import show window results in NoSuchMethodErrorDart 导入显示窗口导致 NoSuchMethodError
【发布时间】:2012-11-15 09:48:59
【问题描述】:

我试图使用新的 show 语法来减小编译后的 js 代码的大小。只要我不需要任何类型的窗口事件,它就可以正常工作。

当我添加 window 以显示时,编辑器说一切都很好。然后当我运行应用程序时,我得到:

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)

有没有其他方法可以在不使用 window 变量的情况下获取 window 实例

【问题讨论】:

    标签: dart dartium


    【解决方案1】:

    您确定使用 show 确实有助于减小已编译 JavaScript 代码的大小吗?你不应该这样做。多亏了树抖动和死代码消除,只有您使用的内容才会显示在编译输出中。

    您使用 show 来严格控制您导入的内容,这样很明显,哪些内容来自哪些库。如果您在不使用 show 的情况下导入大量库,则很难分辨出什么来自哪里,这对于非常大的代码库来说可能是一个挑战。

    如果您导入两个具有使用相同名称的函数或类的不同库,您也可以使用 show。通过使用 show,您可以指定您想要的。

    【讨论】:

    • 如果您有两个或多个库导出相同的符号名称(假设 2 个库导出一个名为 Foo 的函数),这很好。如果您现在将它们都导入,并且想要选择使用哪个 Foo,那么唯一的方法是在导入这些库时使用 hideshow 或同时使用两者。