![](/img/trans.png)
[英]What's the difference between object in scalajs scope and *same* object in js.global scope?
[英]export function to global scope in scalajs
有關scalajs和javascript的問題。
如何標記要純粹導出到全局范圍的功能?
在頂級包中給定scala對象
@JSExport
object Foo{
def apply(a: Int, b: Int): String = "bar"+a+b
}
我想將此scala代碼編譯為javascript,並在全局范圍內將此函數命名為Foo
。 換句話說,我想要一個與此類似的javascript:
function Foo(a,b) {
return 'bar'+a+b;
}
可以使用scalajs嗎?
我正在用javascript編寫組件,該組件將從不受我影響的第三方API中引用。 這就是為什么我只需要遵循他們的規則並在全局范圍內提供javascript函數的原因。
現在已解決問題的方法是“頂級導出”,如現已關閉的問題#1381所述 -要使用此功能,請使用@JSExportTopLevel
在對象中標記函數。
object A {
@JSExportTopLevel("foo")
def foo(x: Int): Int = x + 1
}
<Foo will be available from JavaScript's global namespace>
(有關官方文檔,請參閱https://www.scala-js.org/doc/interoperability/export-to-javascript.html ,在“導出頂級方法”下。)
當前,您必須先執行一些代碼才能執行此操作。 但是您可以使用設置代碼來為其分配:
import scala.scalajs.js
object App extends js.JSApp {
def main(): Unit = {
js.Dynamic.global.anything = // your js.FunctionN
}
}
有一個開放的問題( #1381 )為此提供語言支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.