在纯脚本中加载外部 javascript 文件
loading external javascript file in purescript
如何在 Pure-Script 中加载外部 JavaScript 文件?
外部导入语句都内联 javascript 代码,但我想从外部文件加载它们。
您可以使用 ffi 包装标准的全局 commonjs require
函数。
foreign import require :: forall a. String -> a
然后您可以像这样导入库
-- Tell the compiler the structure of what you're importing.
type MyLibrary = {
add :: Number -> Number -> Number
}
-- Call the require function and import the library.
-- We need an explicit type annotation so the compiler know what's up
myLib = require './mylib' :: MyLibrary
main = do
let x = myLib.add 1 2
doSomethingWith x
请记住,purescript 假定外部库中的函数已被柯里化。如果您需要调用一个带有多个参数的函数,您将需要更多样板 - 即使用 mkFn。
有关如何执行此操作的更多详细信息,请参阅此处。
https://github.com/purescript/purescript/wiki/FFI-tips
旁注 - 'require' 在此示例中作为纯函数实现,但是,如果您使用的库在导入期间执行副作用(不幸的是,这种情况并不少见),您应该定义一个requireEff
将导入包装在 Eff monad 中的函数。
如何在 Pure-Script 中加载外部 JavaScript 文件?
外部导入语句都内联 javascript 代码,但我想从外部文件加载它们。
您可以使用 ffi 包装标准的全局 commonjs require
函数。
foreign import require :: forall a. String -> a
然后您可以像这样导入库
-- Tell the compiler the structure of what you're importing.
type MyLibrary = {
add :: Number -> Number -> Number
}
-- Call the require function and import the library.
-- We need an explicit type annotation so the compiler know what's up
myLib = require './mylib' :: MyLibrary
main = do
let x = myLib.add 1 2
doSomethingWith x
请记住,purescript 假定外部库中的函数已被柯里化。如果您需要调用一个带有多个参数的函数,您将需要更多样板 - 即使用 mkFn。
有关如何执行此操作的更多详细信息,请参阅此处。
https://github.com/purescript/purescript/wiki/FFI-tips
旁注 - 'require' 在此示例中作为纯函数实现,但是,如果您使用的库在导入期间执行副作用(不幸的是,这种情况并不少见),您应该定义一个requireEff
将导入包装在 Eff monad 中的函数。