В настоящее время я пытаюсь использовать библиотеку cljs servant. Я могу требовать только один файл, как в этом отрывке:Требуется несколько файлов для рабочего в cljs
(def worker-script "/main.js") ;; This is whatever the name of the compiled javascript will be
Мои main.js выглядит следующим образом:
var CLOSURE_UNCOMPILED_DEFINES = null;
if(typeof goog == "undefined") document.write('<script src="js/main.out/goog/base.js"></script>');
document.write('<script src="js/main.out/cljs_deps.js"></script>');
document.write('<script>if (typeof goog != "undefined") { goog.require("boot.cljs.main8234"); } else { console.warn("ClojureScript could not load :main, did you forget to specify :asset-path?"); };</script>');
Это приводит к ошибке, что документ не определен, поскольку он вызывается из рабочего который, как я полагаю, не имеет доступа к html-документу. Любой способ обойти эту проблему? Я думал, что делает отдельный worker.js
файл и наполняя его:
importScripts('main.out/goog/base.js', 'http://localhost:3000/js/main.out/goog/deps.js', 'main.out/cljs_deps.js');
if (typeof goog != "undefined") { goog.require("../boot.cljs.main8234"); } else { console.warn("ClojureScript could not load :main, did you forget to specify :asset-path?"); };
бы работать, но я не имел успеха с этим еще. Я использую boot для упорядочивания своих cljs по maggimo. Мои файлы js хранятся в каталоге js
. Если я не предоставил никаких необходимых сведений, скажите об этом, и я отредактирую.
Вы предлагаете, что из моего clojurescript у меня есть код, который должен выполняться только в основном потоке. Однако моя проблема заключается в том, что сам скомпилированный javascript, который мне нужен, должен требовать от работников совместного использования контекста с записью путей к файлам javascript и документу. Выполнение того, что вы предлагаете, не решит этого. Использование дворецкого на самом деле не отвечает на этот вопрос. –
Какой уровень оптимизаций вы используете для компиляции вашего рабочего js-файла? – Asher
Я не уверен, что понимаю ваш вопрос. Такая же компиляция boot + adzerk используется как для рабочего файла, так и для основного файла, так как он один и тот же. С тех пор я решил попробовать использовать более базовый подход к компиляции clojurescript, чтобы узнать, как это работает. Затем я могу добавить функции, пока не увижу, где и почему добавляется запись в документ. Однако для гипотетического файла worker.js, о котором я упоминал, не было бы неожиданной компиляции, поскольку она кодируется непосредственно в js. –