Clojure ^在命名空间中共享



我遵循基座教程,我注意到代码中的^shared注释,如下所示:

(ns ^:shared tutorial-client.behavior
    (:require [clojure.string :as string]
              [io.pedestal.app.messages :as msg]))

^shared注释是用来指示ClojureScript编译器编译这个.clj文件的,它通常会忽略它。这允许您编写可以在客户机和服务器上运行的共享代码(只要它不使用特定于平台的代码)。这是在cljx和cljc文件之前,AFAIK是特定于基座构建过程的,而不是普通ClojureScript的一部分。

支持的编写平台特定代码的方式是使用Reader条件,这是Clojure 1.7中的新特性。

作为旁注,基座应用程序已被有效弃用,基座服务器仍在维护。

它表明代码应该被编译为clojure(用于服务器端)和clojurescript(用于浏览器)。

来自基座wiki:

当编译发生时,任何标记为:shared的Clojure命名空间将也可以编译成ClojureScript。

(ns ^:shared tutorial-client.behavior
    (:require [clojure.string :as string]
              [io.pedestal.app.messages :as msg]))

现在,这些文件必须包含Clojure和ClojureScript的。Clojure 1.6的一个新特性,特性表达式,将会允许我们打破这个限制。

相关内容

  • 没有找到相关文章

最新更新