2016-07-22 15 views
0

Ich bin neu in Clojure und ich versuche, eine Entwicklungsumgebung einzurichten, wo ich dynamisch meine Web-Projektdateien Ring-Server laden kann mit und cljsbuildLangsames Laden von cljsbuild in Clojure

i in der folgenden Ausschnitt haben meine Projektdatei

: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"] 
        ] 
      } 

ich benutze diese Schnipsel meinem Server

(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)) 

ich lade mein Vermögen mit Optimus

laufen
(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"]) 
    )) 

wenn ich lein with-profile dev pdf start-server, cljsbuild auto laufen und meine Website bringen die js Dateien und ihr abhängigen Menschen durch das „dev“ kompilierten Build dauert ewig Laden abzuschließen. Warum ist der Ringserver so langsam?

Sollte ich die Build-Dateien auf diese Weise referenzieren? sollte ich es in eine Datei bündeln?

Das verwendete Profil ist für Entwicklungszwecke.

+1

Wie lange ist für immer? –

+0

mindestens 10 Sekunden – Kendall

+0

vorausgesetzt, Sie haben keine super fasr Hardware, 10s ist nicht unvernünftig für eine Clojurescript kalte Kompilierzeit. Das ist auch der Grund, warum es so wichtig für Sie ist inkrementelle Compilierung –

Antwort

1

Das ist eine ziemlich komplexe project.clj-Datei, wenn Sie gerade erst angefangen haben und neu in clojure/clojurescript sind. Es ist möglich, dass mit nur der einfachen figwheel Vorlage zu beginnen ist eine gute Möglichkeit, eine grundlegende Umgebung zu erhalten und dann nur hinzufügen, wenn Sie wissen, dass Sie zusätzliche Bits benötigen. Es könnte sein, dass das einfache Parsing Ihrer Projektdatei die Dinge verlangsamt.

Die grundlegende Figwheel-Vorlage wird Dinge einrichten, so dass es bei Bedarf neu geladen wird - es gibt wirklich nicht viel extra, worüber man sich Sorgen machen muss.

Verwandte Themen