0

Leiningen 2.5.2 (Java 1.8.0_45-internal Open JDK 64 ビット) と試薬テンプレート (つまりlein new reagent foo) を使用しています。

これはlein figwheel期待どおりに問題なく動作します。

次に、最初に「ビュー」関数を個別のファイルに分割し、アプリの名前空間に追加します。

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

ブラウザー (クロムまたは Firefox) でアプリを表示しようとすると、「ClojureScript がコンパイルされていません!」でスタックします。ターミナルで正常にコンパイルされたように見えますが。figwheel REPL にコマンドを入力すると、ブラウザーで動作しているときに緑色の Clojure ロゴが表示されるので、接続されていることがわかります。

数か月前に試薬アプリでこれを使用しましたが、何が起こったのですか? ビューコードをどのように分離すればよいですか? (単一のファイルを管理することは不可能です。これは多くの問題です。)

4

1 に答える 1

3

(:require home-page)本当にcore.cljs にその行しかない場合、これが原因です。コロン表記:requireは、 を使用した名前空間宣言内でのみ有効ですns。また、間違ったファイル (core.cljs ではなく、home-page.cljs) でコア名前空間を宣言します。完全な説明については、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 [] ....
于 2015-09-22T06:36:07.203 に答える