我遵循基座教程,我注意到代码中的^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的一个新特性,特性表达式,将会允许我们打破这个限制。