如何在Dart中使用JavaScript库

时间:2018-07-01 23:15:16

标签: javascript dart chart.js dart-js-interop

我正在学习package:jsdart file,这是chart.js的飞镖包装。

我认为该文件是连接dart和javascript的桥梁。因此,在此文件中,它必须告诉此dart文件尝试连接的是哪个javascript库。我对吗?但是我没有找到。

以下陈述是什么意思?以下两个语句是否告诉该Dart文件尝试连接哪个JavaScript库?

@JS('Chart')
library chart.js;

我不知道如何将功能https://github.com/google/chartjs.dart/blob/master/lib/chartjs.dart映射到https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.js中的功能。任何人都可以提供更多教程吗?

1 个答案:

答案 0 :(得分:0)

您不需要映射到JavaScript 文件,只需映射到JS对象和函数。

您需要向index.html添加脚本标签,以加载要映射的JavaScript文件,这将使其在全球范围内可用。

然后您需要映射

  • Dart函数转换为JavaScript函数,因此,当您调用此类Dart函数时,该调用实际上将转发到JavaScript函数。

  • Dart类,这样您就可以使用强类型的Dart类,例如,当您将它们作为参数传递给映射函数或将其作为此类函数调用的返回值时,它们将在JavaScript对象之间来回转换。 / p>

@JS('Chart')
library chart.js;

chart.js之后的名称library是任意的。 library指令只需要一个唯一的名称。

@JS('Chart')表示已加载的chart.js库在window.Chart下的JavaScript区域中可用(window意味着在JS区域中是全局的并且是隐式的。)

@JS()
class Chart {

声明Dart类Chart,而@JS()将其映射到上面声明的库范围中具有相同名称的JS类。因此Dart类Chart将映射到JavaScript类window.Chart.Chart

external factory Chart(

Dart external ...类中的Chart声明映射到具有相同名称的JS方法。

更多详细信息,请参见README.md https://pub.dartlang.org/packages/js

如果您仍然遇到困难,可以提出更具体的问题。很难回答有关如何使用软件包的一般性问题。