【发布时间】:2015-05-01 09:37:18
【问题描述】:
我有一些我用 dart 编写的文件,我想编译为 javascript 并包含在我的 Android 应用程序中运行的一些 html 文件中。
这些文件由一个 main 方法组成,然后是一个 api 层,其中包含 3 个函数,其他 javascript 代码将在运行时调用这些函数。非常重要的是我尽可能少地包含 dart 的库(所以 tree-shaking 是必须的),并且当 tree-shaking/minification 过程发生时,我需要确保 3 api 层函数不会被重命名/优化了,因为它认为它们没有被调用?
我如何告诉 dart2js 保留某些函数的签名,而不是因为它认为它们没有被使用而将它们删掉?
【问题讨论】:
-
不确定我是否关注。你是不是想用 Dart 写一个库,然后用 dart2js 编译,然后从 javascript 调用编译好的库?
-
@GregLowe 我重新写了这个问题,因为它太混乱了。基本上是的,我在 Dart 中有一个 javascript 库,我想用 dart2js 编译/优化它,然后让其他 javascript(编译器不知道)调用它。
-
我自己还没有尝试过,但是 dart-js-interop 允许向 JS 公开 Dart 方法,我认为它们应该通过 treeshaking 和缩小来保留。这可能不是那么简单,否则这将是一个官方支持的用例。有人提到了最终支持这种情况的计划,但到目前为止我还没有注意到这方面的任何活动。
-
@spierce7 我同意 Guenter 的观点,该用例目前还没有得到很好的支持。虽然有些库可能有一个相当简单的 api,并且可以通过这种方式实现而不会有太多麻烦 - 所以它真的取决于库。
-
感谢大家的回复。我想我会在这方面回避飞镖,而只是在 js 中实现。看起来如果有一个图书馆,那就是github.com/dart-lang/js-interop,这就是我认为Gunter 之前所指的。