我有一些我用dart编写的文件,我想编译成javascript并包含在我的Android应用程序中运行的几个html文件中。
文件由main方法组成,然后有一个api层,其中有3个函数,其他javascript代码将在运行时调用。非常重要的是我尽可能少地包含dart的库(因此必须使用树摇动),并且当发生树摇动/缩小过程时,我需要确保3 api层功能不会被重命名/优化了因为它认为它们没有被调用?
如何告诉dart2js单独保留某些功能的签名,而不是因为它认为它们没有被使用而将它们删除?
答案 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>