小编Aar*_*Iba的帖子

你怎么从clojurescript引用javascript这个关键字?

我正在将一些ClojureScript代码与一个带有回调函数的JS库调用集成在一起.JS库使用JavsScript的"this"关键字将数据传递给回调.

我可以使用(js*"this")来使用它.例如:

(libraryCall (fn [] (.log console (js* "this"))))
Run Code Online (Sandbox Code Playgroud)

有没有办法从ClojureScript获取"this"上下文而不诉诸js*?

clojurescript

10
推荐指数
1
解决办法
1179
查看次数

在生产环 - clojure服务器上重新加载代码

在不重新启动整个JVM的情况下,将新代码推送到生产环服务器的最佳方法是什么?

目前我在生产中使用wrap-reload,但这对我来说并不适用,因为有时我想在ring开始使用新代码处理请求之前在repl中运行命令(例如进行数据库迁移).此外,各种博客和教程都说不要在生产中使用wrap-reload,尽管我不明白为什么不这样做.

我已经提出了以下解决方案,但我承认我并不深入了解引擎盖下发生了什么.我想知道我是否可以得到一个人的理智检查.这种技术看起来合理吗?

这个想法是有一个路径(/ admin/reload-clj)导致所有的clojure代码被重新加载.

(defonce ^:dynamic *jetty*)
(declare reload-clj)

(defn app [req]
 ...
 (when (= (req :uri) "/admin/reload-clj") (reload-clj req))
 ...)

(defn start-jetty []
 (let [j (run-jetty app {:port (http-port) :join? false :max-threads 16})]
   (dosync (ref-set *jetty* j))
   j))

(defn reload-clj [req]
 (future
    (log/info "Reloading clojure code...")
    (require '(whrusrv admin main utils wdb) :reload-all)
    (.stop @*jetty*)
    (start-jetty)
    (log/info "Clojure reload success!"))
 {:status 200
  :headers {"Content-Type" "text/plain"}
  :body "Reloading..."})

(defn -main [& args]
 (start-jetty))
Run Code Online (Sandbox Code Playgroud)

clojure ring

9
推荐指数
1
解决办法
1185
查看次数

Clojure:在调用者名称空间中解析的宏内的合格关键字?

是否可以在调用者命名空间中的宏解析中包含一个限定关键字?例如:

(ns a)
(defmacro m [] `(do ::k))
Run Code Online (Sandbox Code Playgroud)

在另一个命名空间中:

(ns b)
(use 'a)
(m)
Run Code Online (Sandbox Code Playgroud)

在此示例中,(m)解析为:a/k(定义宏的命名空间).我想知道是否有办法让它解决:b/k(调用宏的命名空间).

clojure clojurescript

6
推荐指数
1
解决办法
344
查看次数

标签 统计

clojure ×2

clojurescript ×2

ring ×1