Scala.js ScalaJS中新的after require的等价物是什么?
我明白了 javascript: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中?它目前有点难看。要创建动态类的实例,必须使用: 因
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