Как загрузить внешний файл JavaScript в Pure-Script?Загрузка внешнего файла javascript в purescript
Внешние операторы импорта все встроены в код javascript, но я хочу загрузить их из внешнего файла.
Как загрузить внешний файл JavaScript в Pure-Script?Загрузка внешнего файла javascript в purescript
Внешние операторы импорта все встроены в код javascript, но я хочу загрузить их из внешнего файла.
Вы можете обернуть стандартную глобальную функцию commonjs require
, используя ffi.
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
Примечание стороны - «требуют» реализован в виде чистой функции в этом примере, однако, если библиотека вы используете Исполняет побочные эффекты во время импорта (который, к сожалению, не редкость), вы должны вместо определите функцию requireEff
, которая обертывает импорт в монаде Eff.
Почему бы просто не включить файл JavaScript на свою страницу или использовать FFI для загрузки файла JavaScript с помощью загрузчика вашего модуля? –
Я не в среде браузера. Я планирую генерировать код JavaScript в haskellish способом. У меня есть файл javascript с объектами и вспомогательными функциями. Я хотел бы ссылаться на эти объекты js в предписывающем приложении. Но я думаю, что это невозможно, потому что в этом случае prescript wourl должен проанализировать внешний файл js и создать внутреннее представление всех объектов. Я очень новичок в purescript, и я думаю, что неправильно понимаю его работу. Конечно, я могу встроить весь код с иностранным импортом, но я думал, что могу импортировать существующую библиотеку js из внешнего файла. – agreif
Вы можете определенно дать типы своим функциям с помощью FFI, и вам, вероятно, не нужно писать встроенные JS, но это зависит от структуры вашей библиотеки. Я бы предложил посмотреть одну из многих библиотек в организации purecript-contrib GitHub. –