2016-07-22 2 views
0

Я новичок в Clojure и я пытаюсь настроить среду разработки, где я могу динамически загружать мои файлы веб-проекта с помощью кольца-сервера и cljsbuildМедленная загрузка cljsbuild в Clojure

я следующий фрагмент кода в мой файл проекта

: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-файлы и его иждивенец в составляемом «разработчик» сборка занимает НАВСЕГДА, чтобы завершить загрузку. Почему сервер так медленно работает?

Должен ли я ссылаться на файлы сборки таким образом? должен ли я связать его в один файл?

Профиль используется для целей развития.

+1

Как долго навсегда? –

+0

не менее 10 секунд – Kendall

+0

Предполагая, что у вас нет сверхфазного оборудования, 10 секунд не является необоснованным для времени компиляции Clojurescript. Вот почему так важно для вас инкрементная компиляция. –

ответ

1

Это довольно сложный файл project.clj, если вы только начинаете и новичок в clojure/clojurescript. Возможно, что начиная с простого шаблона figwheel с открытым листом может быть хорошим способом получить базовую среду, а затем просто добавить к ней, как только вы узнаете, что вам нужны дополнительные биты. Возможно, просто анализ вашего файла проекта замедляет работу.

Основной шаблон шаблона будет задан, чтобы все его перезагрузка при необходимости - на самом деле вам не о чем беспокоиться.