函数jsg 和jsg1 的jsaddle package允许对Javascript函数进行低级调用。
jsaddle包甚至有一些examples of how to use jsg1例如:
uint8ArrayFrom (SomeJSArray a) = SomeTypedArray <$> jsg "Uint8Array" ^. js1 "from" a
uint16ArrayFrom (SomeJSArray a) = SomeTypedArray <$> jsg "Uint16Array" ^. js1 "from" a
在这两种情况下,参数 Uint8Array 和 Uint16Array 都是Javascript中众所周知的全局名称。 很容易找到有关所有这些名称的Javascript文档。
使用函数 jsg1 的例子,例如
here
然而,here使用stange字符串
例如h$wrapBuffer
和h$newByteArrayFromBase64String
。谷歌搜索这些字符串,特别是在 h $ newByteArrayFromBase64String 上,并没有给出任何有意义的结果。
jsg1 函数的参数中字符串的含义是什么?他们在哪里定义?哪些其他字符串可以作为jsg1参数? h $ 前缀是一个约定,会触发一些隐藏的魔法吗?
答案 0 :(得分:1)
没有魔力。 h$
前缀只是为了避免与其他JavaScript库可能使用的任何内容发生冲突。
These modules仅在if impl(ghcjs)
的else分支中公开,因为在使用GHCJS进行编译时,它们是由ghcjs-base软件包提供的。
使用GHC进行编译时,两个h$
函数将与jsaddle here所需的其他JavaScript一起加载到JavaScript上下文中。