提高导入的可操作性
现在你可以描写声明以一种更严谨的方式导入JavaScript模块。如果你添加@JsModule("<module-name>")注解在外部声明中,它将会在编译期间适当的导入模块系统。比如,使用CommonJS声明,将在使用require(...)时才会被导入。另外,如果你想导入一个声明作为模块或全局JavaScript对象,你可以使用@JsNonModule注解。
下面演示如何导入JQuery到Kotlin模块:
external interface JQuery {
fun toggle(duration: Int = definedExternally): JQuery
fun click(handler: (Event) -> Unit): JQuery
}
@JsModule("jquery")
@JsNonModule
@JsName("$")
external fun jquery(selector: String): JQuery
在这个例子中,JQuery会被作为一个模块被导入,并且其名为jquery。可选的是,它可以作为一个$对象,这取决于Kotlin编译器被配置在那个模块系统。
fun main(args: Array<String>) {
jquery(".toggle-button").click {
jquery(".toggle-panel").toggle(300)
}
}