Mik*_*ink 5 javascript dart dart-isolates dart2js
我目前正在使用以下包,其中自述文件说明了以下内容
final bool loaded = await JsIsolatedWorker().importScripts(['test.js']);
Run Code Online (Sandbox Code Playgroud)
我正在使用隔离工作程序包,因此我的代码可以在网络上和网络外工作。我想从我的 dart 代码生成 javascript 代码。我有一个具有顶级功能的文件,我使用
dart compile js -O0 -o test.js test.dart
Run Code Online (Sandbox Code Playgroud)
我在这里找到的
https://dart.dev/tools/dart2js
这是我的 dart 文件
void main(List<String> args) {
doComputation('');
}
String doComputation(String input) {
return 'output';
}
Run Code Online (Sandbox Code Playgroud)
仅当我有一个 main 函数时,我才能生成 javascript,但这会生成一个 javascript 文件,其中 doComutation 不是顶级函数,所以我不确定包是否可以调用该函数。看起来它生成了整个程序,而不仅仅是生成一个函数。
生成的文件太长,无法发布
所以我的问题归根结底是这样的。有没有办法从 dart 为 1 个函数生成 javascript 并包含其依赖项,而不必生成整个程序?这样我就可以从 dart 调用这个函数。
Ala*_*ana -1
您可以使用js包从 Dart 代码调用 JavaScript API,反之亦然。要使 Dart 函数可通过名称从 JavaScript 调用,请使用带有注释的 setter@JS().
@JS()\nlibrary callable_function;\n\nimport \'package:js/js.dart\';\n\n/// Allows assigning a function to be callable from `window.functionName()`\n@JS(\'functionName\')\nexternal set _functionName(void Function() f);\n\n/// Allows calling the assigned function from Dart as well.\n@JS()\nexternal void functionName();\n\nvoid _someDartFunction() {\n print(\'Hello from Dart!\');\n}\n\nvoid main() {\n _functionName = allowInterop(_someDartFunction);\n}\nRun Code Online (Sandbox Code Playgroud)\nJavaScript 代码现在可以调用functionName()或window.functionName().
检查谷歌chartjs https://github.com/google/chartjs.dart/tree/master/example以获得完整的示例。
\n来自 dart2js “帮助 dart2js 生成更好的代码”中有一个提示:
\n\n\n不要担心您的应用程序\xe2\x80\x99s 包含的库的大小。dart2js 编译器执行树摇动以省略未使用的类、函数、方法等。只需导入您需要的库,然后让 dart2js 删除您不需要的\xe2\x80\x99t 的库。
\n
与这篇文章相关/sf/answers/1478697671/。
\n| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |