|
3 | 3 | [hiccup.util :refer [raw-string]] |
4 | 4 | [net.coruscation.js4clj.require :refer [require-js]] |
5 | 5 | [js4clj.components :as comps] |
| 6 | + [js4clj.react-wrapper :as wrapper] |
6 | 7 | [ring.adapter.jetty :as jetty] |
7 | 8 | [ring.middleware.file :refer [wrap-file]])) |
8 | 9 |
|
9 | 10 | (require-js '["react-dom/client" :as dom-client]) |
10 | 11 | (require-js '["react" :as react]) |
11 | 12 | ;; I know it doesn't look like the brightest idea |
12 | | -(require-js '["./node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js" :as dom-server]) |
| 13 | +(require-js '["./node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js" :as dom-server]) |
13 | 14 |
|
14 | 15 | (defn template [content] |
15 | 16 | (str |
16 | 17 | "<!DOCTYPE html>" |
17 | 18 | (h/html |
18 | | - [:html.no-js {:lang "en"} |
19 | | - [:head |
20 | | - [:meta {:charset "utf-8"}] |
21 | | - [:meta {:http-equiv "x-ua-compatible" :content "ie=edge"}] |
22 | | - [:meta {:name "description" :content ""}] |
23 | | - [:meta {:name "viewport" :content "width=device-width, initial-scale=1"}] |
24 | | - [:title "Title"] |
25 | | - [:link {:rel "preconnect", :href "https://fonts.googleapis.com"}] |
26 | | - #_[:link {:rel "stylesheet" :href (str "/main.css?v=" (System/currentTimeMillis))}]] |
27 | | - [:body |
28 | | - [:div#root (raw-string content)] |
29 | | - [:script (raw-string "window.__js4clj_ssr = true")] |
30 | | - [:script {:src "/js/main.js"}]]]))) |
| 19 | + [:html.no-js {:lang "en"} |
| 20 | + [:head |
| 21 | + [:meta {:charset "utf-8"}] |
| 22 | + [:meta {:http-equiv "x-ua-compatible" :content "ie=edge"}] |
| 23 | + [:meta {:name "description" :content ""}] |
| 24 | + [:meta {:name "viewport" :content "width=device-width, initial-scale=1"}] |
| 25 | + [:title "Title"] |
| 26 | + [:link {:rel "preconnect", :href "https://fonts.googleapis.com"}] |
| 27 | + #_[:link {:rel "stylesheet" :href (str "/main.css?v=" (System/currentTimeMillis))}]] |
| 28 | + [:body |
| 29 | + [:div#root (raw-string content)] |
| 30 | + [:script (raw-string "window.__js4clj_ssr = true")] |
| 31 | + [:script {:src "/js/main.js"}]]]))) |
31 | 32 |
|
32 | 33 | (defn home [request] |
33 | 34 | {:status 200 |
34 | 35 | :headers {"Content-Type" "text/html"} |
35 | | - :body (template (dom-server/renderToString (react/createElement comps/home)))}) |
| 36 | + :body (template (dom-server/renderToString (wrapper/r comps/home)))}) |
36 | 37 |
|
37 | 38 | (def handler (-> #'home |
38 | 39 | (wrap-file "./public"))) |
|
0 commit comments