【问题标题】:How can I run JavaScript in Dart?如何在 Dart 中运行 JavaScript?
【发布时间】:2020-10-09 20:46:49
【问题描述】:

Dart 官方通过 Dart web platform 提供 JavaScript 语言支持,但对于不使用 Web 平台的项目,通过名为 JSParser 的项目提供非官方支持。

由于我不熟悉该语言以及稀疏文档,我不确定如何使用这个JSParser 库。示例如下所示:

import 'package:parsejs/parsejs.dart';

void main() {
    new File('test.js').readAsString().then((String code) {
        Program ast = parsejs(code, filename: 'test.js')
        // Use the AST for something
    })
}

installing ParseJS 库之后,上面的代码编译得很好。但是我如何与“AST”互动呢? IDE 的代码提示似乎也没有帮助。

回顾这个项目的历史,它似乎已经多次易手,但似乎都缺少一个例子,说明后来如何处理 ast 对象。

我已经完成的步骤:

这些库是不是太旧了,还是我只是用错了?我怎么会知道?我在 Dart 2.11 上

【问题讨论】:

    标签: javascript flutter dart


    【解决方案1】:

    结合几个例子,特别是this GitHub projectthis unit test,我可以让解释器工作。

    dependencies:
      dartjsengine: ^1.0.1
      jsparser: ^2.0.1
    

    注意,这使用了JSEngine().visitProgram(...) 结合来自 JSParser 的 parsejs() 函数。

    import 'package:dartjsengine/dartjsengine.dart';
    import 'package:jsparser/jsparser.dart';
    
    main() {
      JsObject myObj = JSEngine().visitProgram(parsejs('var a = "red"; var b = "blue"; print(a); b;', filename: 'ignore'));
      print('${myObj?.valueOf}');
    }
    

    输出:

    red
    blue
    

    一些主要警告:

    • print() -> console.log(...) 没有别名,因此该示例使用未记录的 print(...)(我猜是 Dart 的别名?)
    • 似乎缺少一些语言功能,按原样导入现有文件可能会失败。

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 2019-03-09
      • 1970-01-01
      • 2011-12-04
      • 2018-12-10
      • 2021-12-23
      • 2013-12-28
      • 1970-01-01
      • 2017-06-26
      相关资源
      最近更新 更多