在dart2js缩小和树抖动期间保留方法

时间:2015-02-28 19:37:56

标签: dart dart2js

我有一些我用dart编写的文件,我想编译成javascript并包含在我的Android应用程序中运行的几个html文件中。

文件由main方法组成,然后有一个api层,其中有3个函数,其他javascript代码将在运行时调用。非常重要的是我尽可能少地包含dart的库(因此必须使用树摇动),并且当发生树摇动/缩小过程时,我需要确保3 api层功能不会被重命名/优化了因为它认为它们没有被调用?

如何告诉dart2js单独保留某些功能的签名,而不是因为它认为它们没有被使用而将它们删除?

1 个答案:

答案 0 :(得分:3)

您可以使用dart:js库的context属性JsObject,它允许您将变量和方法从dart公开给JavaScript,并由dart2js保存。在您的main方法中,只需包含context['jsMethodName'] = dartMethodName,然后在JavaScript中调用它。这是一个例子:

<强> library.dart

import 'dart:js';

void main(){
  print("main called!");
  context['myMethod'] = myMethod;
}

void myMethod(){
  print("My Method Called!");
}

<强>的index.html

<script src="library.dart.js"></script>
<script>
  console.log(myMethod());
</script>