Scala.js ScalaJS中新的after require的等价物是什么?

Scala.js ScalaJS中新的after require的等价物是什么?,scala.js,Scala.js,我明白了 javascript: var D3Funnel = require('d3-funnel'); var chart = new D3Funnel('#funnel'); 我通过使用以下工具成功地使第一行在ScalaJS中工作: ScalaJS: val Funnel = js.Dynamic.global.require("d3-funnel") 但是,第二行var图表=新的D3漏斗(“#漏斗”)应该等价于什么在ScalaJS中?它目前有点难看。要创建动态类的实例,必须使用: 因

我明白了

javascript:

var D3Funnel = require('d3-funnel');
var chart = new D3Funnel('#funnel');
我通过使用以下工具成功地使第一行在
ScalaJS
中工作:

ScalaJS:

val Funnel = js.Dynamic.global.require("d3-funnel")

但是,第二行
var图表=新的D3漏斗(“#漏斗”)应该等价于什么在ScalaJS中?

它目前有点难看。要创建动态类的实例,必须使用:

因此,我建议将
图表
转换为静态定义的API:

@js.native
trait Funnel extends js.Object {
  def someMethodOfFunnel(): Unit = js.native
}

val chart = js.Dynamic.newInstance(Funnel)("#funnel").asInstanceOf[Funnel]
chart.someMethodOfFunnel() // statically typed

我在
ScalaJS
文档中读到,
原生JS类型应该用@JS.Native注释,以便与Scala.JS 1.0.0实现前向源代码兼容性。
我看到您在这里使用了
@JS.Native
,但我不明白为什么
漏斗
不是原生JS类型,那么我们为什么要使用
@JS.Native
,因为它是在用本机JavaScript编写的
d3漏斗
库中实现的。
@js.native
trait Funnel extends js.Object {
  def someMethodOfFunnel(): Unit = js.native
}

val chart = js.Dynamic.newInstance(Funnel)("#funnel").asInstanceOf[Funnel]
chart.someMethodOfFunnel() // statically typed