Медленная загрузка cljsbuild в Clojure
Я новичок в Clojure и пытаюсь настроить среду разработки, в которой я могу динамически загружать файлы своего веб-проекта с помощью ring-server и cljsbuild
у меня есть следующий фрагмент в моем файле проекта
:ring {
:handler cjohansen-no.web/app
;;:auto-refresh true
;;:auto-reload? true
;;:reload-paths ["resources","src"]
;;:refresh-paths ["resources","src"]
}
:aliases {
"start-server" ["ring" "server-headless"]
"build-site" ["run" "-m" "cjohansen-no.web/export"]
"build-html" ["run" "-m" "cjohansen-no.web/export-pages"]
"build-js" ["cljsbuild" "auto" "dev"]
"build-web" ["do" ["build-site"] ["build-js"]]
"build-dev" ["pdo" ["build-web"] ["start-server"] ["auto" "build-html"]]
}
:source-paths ["src"]
:test-paths ["test/cjohansen_no" "test/cljs" "spec"]
:clean-targets [:target-path "./build/js/out"
:compile-path "classes"
:output-paths "./build/js/output"
"build/js/main.js.map"
]
:main cjohansen-no.web
:clean-non-project-classes true
:figwheel {
;;:server-port 3000
:css-dirs ["resources/public/css"]
:reload-clj-files {:clj true :cljc false}
:ring-handler cjohansen-no.web/app
:repl false
}
:cljsbuild {
:builds [
{
;; :notify-command ["growlnotify" "-m"]
:id "dev"
:source-paths ["src/cljs"]
:figwheel {
:websocket-host :js-client-host
:autoload false
:reload-dependents true
:debug true
}
:compiler {
:main scripts.core
:output-to "resources/public/js/main.js"
:output-dir "resources/public/js/out"
:optimizations :none
:source-map true
:source-map-timestamp true
:recompile-dependents false
:pretty-print true
:asset-path "js/out"
;;:notify-command ["bin/phantomjs" "bin/speclj.js" "resources/public/js/main.js"]
}
},
....
}
:profiles {
:dev {
:dependencies [
;;[figwheel "0.5.4-7"]
]
:plugins [
[lein-pdo "0.1.1"]
[lein-ring "0.9.7"]
[lein-cljsbuild "1.1.3"]
[lein-figwheel "0.5.4-7"]
]
}
Я использую этот фрагмент для запуска моего сервера
(def app (->
(stasis/serve-pages get-pages)
(optimus/wrap get-assets optimizations/all serve-live-assets)
;;(wrap-cljsbuild "/js/" cljsbuild)
wrap-content-type
;; wrap-reload
wrap-utf-8))
Я загружаю свои активы с помощью Optimus
(defn get-assets []
(concat (assets/load-bundle "public" "styles.css" [#"css/.+\.css$"])
(assets/load-assets "public" [#"img/.*" "/questions.json"])
(assets/load-bundle "public" "main.js" [#"js/.+\.js"])
))
когда я бегу lein with-profile dev pdf start-server, cljsbuild auto
и откройте на моем веб-сайте js-файлы и их зависимые файлы, скомпилированные сборкой "dev", FOREVER завершит загрузку. Почему кольцевой сервер такой медленный?
Должен ли я ссылаться на файлы сборки таким образом? я должен связать это в один файл?
Используемый профиль предназначен для разработки.
1 ответ
Это довольно сложный файл project.clj, если вы только начинаете и не знакомы с clojure/clojurescript. Вполне возможно, что начинать с простого шаблона с вращающимся колесом может быть хорошим способом получить базовую среду, а затем просто добавить ее, как только вы узнаете, что вам нужны дополнительные биты. Может случиться так, что простой анализ файла вашего проекта замедляет работу.
Базовый шаблон figwheel настроит все так, что он будет перезагружаться при необходимости - на самом деле вам не о чем беспокоиться.