我正在使用Leiningen 2.5.2(Java 1.8.0_45-internal Open JDK 64位)和试剂模板(即lein new reagent foo
)。
这与lein figwheel
按预期正常运行。
接下来,我要做的第一件事就是将“视图”功能分解为单独的文件并将它们添加到应用程序命名空间中:
;; -------------------------
;; Views
(:require home-page)
(ns foo.core)
(defn home-page []
[:div [:h2 "Welcome to foo"]
[:div [:a {:href "#/about"} "go to about page"]]])
当我在浏览器中查看应用程序(chrome或firefox)时,它会陷入“ClojureScript尚未编译!”尽管看似在终端成功编译。如果我在图形REPL中输入命令,当它在浏览器中工作时,我会看到绿色的Clojure徽标,所以我知道它已连接。
我几个月前在试剂应用程序中工作了 - 发生了什么? 应该如何我将我的视图代码分开? (单个文件无法管理;这是很多Hiccup。)
答案 0 :(得分:3)
如果你在core.cljs中只有(:require home-page)
行,那应该是罪魁祸首。冒号表示法:require
仅在具有ns
的名称空间声明中有效。此外,您在错误的文件(home-page.cljs,而不是core.cljs)中声明核心命名空间。请查看this article on namespaces in Clojure以获得详尽的解释。
你需要core.cljs中的以下内容:
(ns foo.core
(:require [foo.home-page :as hp :refer [home-page]]))
.... more core.cljs code ...
然后只需在home-page.cljs:
(ns foo.home-page
(:require ....reagent namespaces as needed ....
(defn home-page [] ....