diff --git a/resources/leiningen/new/simple_web_app/project.clj b/resources/leiningen/new/simple_web_app/project.clj index 15f1845..0163112 100644 --- a/resources/leiningen/new/simple_web_app/project.clj +++ b/resources/leiningen/new/simple_web_app/project.clj @@ -1,21 +1,21 @@ (defproject {{name}} "0.1.0-SNAPSHOT" - :dependencies [[cljsjs/bootstrap "3.3.6-1"] - [compojure "1.6.0"] - [environ "1.1.0"] + :dependencies [[cljsjs/react "17.0.2-0"] + [cljsjs/react-dom "17.0.2-0"] + [compojure "1.6.2"] + [environ "1.2.0"] [hiccup "1.0.5"] - [org.clojure/clojure "1.8.0"] - [org.clojure/clojurescript "1.9.908"] - [org.immutant/web "2.1.9"] - [org.webjars/bootstrap "3.3.6"] - [reagent "0.7.0"] - [ring "1.6.2"] + [org.clojure/clojure "1.10.3"] + [org.clojure/clojurescript "1.10.866"] + [http-kit "2.5.3"] + [reagent "1.1.0"] + [ring "1.9.3"] [ring-webjars "0.2.0"] - [ring/ring-defaults "0.3.1" :exclusions [javax.servlet/servlet-api]]] + [ring/ring-defaults "0.3.2" :exclusions [javax.servlet/servlet-api]]] - :plugins [[lein-cljsbuild "1.1.7"] - [lein-environ "1.1.0"] - [lein-figwheel "0.5.13"]] + :plugins [[lein-cljsbuild "1.1.8"] + [lein-environ "1.2.0"] + [lein-figwheel "0.5.20"]] :main {{root-ns}}.server @@ -39,11 +39,11 @@ :profiles {:dev {:env {:dev? true} :source-paths ["env/dev/src"] - :dependencies [[figwheel-sidecar "0.5.13"] - [org.clojure/tools.nrepl "0.2.13"] - [com.cemerick/piggieback "0.2.2"]] - :figwheel {:nrepl-port 7000 - :nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]} + :dependencies [[figwheel-sidecar "0.5.20"] + [nrepl "0.8.3"] + [cider/piggieback "0.5.2"]] + :repl-options {:nrepl-middleware [cider.piggieback/wrap-cljs-repl]} + :figwheel {:nrepl-port 7000} :cljsbuild {:builds {:app {:source-paths ["src" "env/dev/src"]}}}} diff --git a/resources/leiningen/new/simple_web_app/src/root_ns/client.cljs b/resources/leiningen/new/simple_web_app/src/root_ns/client.cljs index 88a906e..04f396e 100644 --- a/resources/leiningen/new/simple_web_app/src/root_ns/client.cljs +++ b/resources/leiningen/new/simple_web_app/src/root_ns/client.cljs @@ -1,14 +1,16 @@ (ns {{root-ns}}.client (:require - [reagent.core :as r])) + [reagent.dom :as rd])) (defn main-app-component [] - [:h1 "Hello, world!"]) + [:div + [:h1 "Hello, world!"] + [:p "This is my Clojure web app."]]) (defn reload [] - (r/render-component [main-app-component] (.getElementById js/document "app"))) + (rd/render [main-app-component] (.getElementById js/document "app"))) (defn ^:export run [] diff --git a/resources/leiningen/new/simple_web_app/src/root_ns/server.clj b/resources/leiningen/new/simple_web_app/src/root_ns/server.clj index 6a143fc..c4489c0 100644 --- a/resources/leiningen/new/simple_web_app/src/root_ns/server.clj +++ b/resources/leiningen/new/simple_web_app/src/root_ns/server.clj @@ -6,12 +6,14 @@ [environ.core :refer [env]] [hiccup.element :refer [javascript-tag]] [hiccup.page :refer [html5 include-css include-js]] - [immutant.web :as immutant] + [org.httpkit.server :as httpkit] [ring.middleware.defaults :refer [wrap-defaults site-defaults]] [ring.middleware.reload :refer [wrap-reload]] [ring.middleware.webjars :refer [wrap-webjars]] [ring.util.response :refer [response]])) +(defonce http-server (atom nil)) + (defn render-home-page [] (html5 @@ -20,7 +22,6 @@ [:meta {:http-equiv "X-UA-Compatible" :content "IE-edge"}] [:meta {:name "viewport" :content "width=device-width, initial-scale=1"}] [:title "{{name}} :: Home Page"] - (include-css "/assets/bootstrap/css/bootstrap.min.css") (include-css "css/app.css") (include-js "cljs/app.js")] [:body @@ -33,15 +34,26 @@ (route/not-found "not found"))) (def handler - (as-> app-routes h + (as-> #'app-routes h (if (:dev? env) (wrap-reload h) h) (wrap-defaults h (assoc-in site-defaults [:security :anti-forgery] false)) (wrap-webjars h))) -(defn run-server +(defn stop-server! [] - (immutant/run handler {:port 8080})) + (when-not (nil? @http-server) + (println "http-kit server stopping ...") + (httpkit/server-stop! @http-server) + (reset! http-server nil))) + +(defn start-server! + [] + (let [config {:port 8080 + :legacy-return-value? false}] + (reset! http-server (httpkit/run-server #'handler config)) + (println "http-kit server status:" (httpkit/server-status @http-server) " port:" (httpkit/server-port @http-server)) + @http-server)) (defn -main [& args] - (run-server)) + (start-server!))