从html访问clojurescript

时间:2013-02-13 11:38:35

标签: javascript clojure clojurescript

我正在使用catnip / leiningen试图学习Clojure ...所以我有一个简单的网站,现在我想在我的页面中添加一个clojure脚本。

所以我举了一个简单的例子,但现在却陷入了如何从我的网站访问我的脚本的问题。

我的project.clj

(defproject hello-world "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [compojure "1.1.5"]
                 [hiccup "1.0.2"]]
  :plugins [[lein-ring "0.8.2"]]
  :cljsbuild {:builds
              [{:source-path "src"
                :compiler
                {:output-to "resources/public/cljs/main.js"
                 :output-dir "resources/public/cljs"
                 :optimizations :simple
                 :pretty-print true}}]}
  :ring {:handler hello-world.handler/app}
  :profiles
  {:dev {:dependencies [[ring-mock "0.1.3"]]}})

handler.clj的相关部分

(defn header [title]
  (html 
   [:head
    [:title title]
    [:script "/cljs/play.js"]]))

如果我运行lein ring服务器,则http://localhost:8080/resources/public/cljs/main.js没有任何内容。如何映射js的请求,以便我的网站可以找到它们?

2 个答案:

答案 0 :(得分:1)

问题出在[:script] -tag中,需要重写为:

[:script {:src "/cljs/main.js"}]

(include-js "/cljs/main.js")

生成javascript文件的正确链接。

答案 1 :(得分:0)

您的JavaScript文件应该可以在http://localhost:8080/cljs/main.js而不是http://localhost:8080/resources/public/cljs/main.js下访问。你的实际代码看起来还不错。

您是否运行lein cljsbuild once并在/resources/public/cljs/下创建了一个JavaScript文件?