java - 为什么 Figwheel 不将编译后的应用程序传递到浏览器?

标签 java clojure leiningen clojurescript reagent

我使用的是 Leiningen 2.5.2(Java 1.8.0_45-internal Open JDK 64 位)和试剂模板(即 lein newreagent foo)。

这与预期的 lein Figwheel 运行良好。

接下来,我要做的第一件事是将“Views”函数分解为单独的文件,并将它们添加到应用程序命名空间中:

core.cljs 片段:

;; -------------------------
;; Views

(:require home-page)

home-page.cljs(整个文件):

(ns foo.core)

(defn home-page []
  [:div [:h2 "Welcome to foo"]
   [:div [:a {:href "#/about"} "go to about page"]]])

当我在浏览器(chromium 或 firefox)中查看应用程序时,它卡在“ClojureScript 尚未编译!”处。尽管看起来在终端中编译成功。如果我在 Figwheel REPL 中输入命令,当它在浏览器中工作时,我会看到绿色的 Clojure Logo ,因此我知道它已连接。

几个月前我在一个试剂应用程序中运行了这个 - 发生了什么?我应该如何分离我的 View 代码? (单个文件是难以管理的;这会带来很多问题。)

最佳答案

如果 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 [] ....

关于java - 为什么 Figwheel 不将编译后的应用程序传递到浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705441/

相关文章:

clojure - 为什么莱宁根不能总是使用我的 :gen-class properly?

java - Uberjar 中止,因为 jar 失败 : duplicate entry: META-INF/MANIFEST. MF

Clojurescript 命名空间刷新

clojure - 要在Prismatic/Schema中打开/关闭验证的全局标志?

clojure - doseq 应该给我副作用,那为什么它只适用于 dorun?

java - 无法从根文件级别导出 Clojure 函数

java - 在将字符串写入 Apache Commons PropertiesConfiguration 之前对其进行转义的正确方法是什么?

java - 涉及 actionListener 的类不是抽象的

java - JSF:无法捕获 ViewExpiredException

java - ClassNotFoundException : com. mysql.jdbc.Driver gradle 无法解析