Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compilation Cljs:硬编码编译时的编译日期_Compilation_Clojurescript - Fatal编程技术网

Compilation Cljs:硬编码编译时的编译日期

Compilation Cljs:硬编码编译时的编译日期,compilation,clojurescript,Compilation,Clojurescript,有没有人能给我一些提示(或者整个解决方案!)来回答这个问题: 在Clojurescript项目中,如何在使用应用程序时自动将编译日期/时间硬编码为一个符号以显示它 谢谢。有多种解决方案: 使用插件 将lein git版本插件添加到项目中。它将生成一个包含vars的名称空间,其中包含项目版本、git版本和时间戳等信息。您可以从其他名称空间引用它们 使用宏 您可以在.clj或.cljc文件中定义宏: (defmacro generate-build-timestamp [] (System/cu

有没有人能给我一些提示(或者整个解决方案!)来回答这个问题:

在Clojurescript项目中,如何在使用应用程序时自动将编译日期/时间硬编码为一个符号以显示它


谢谢。

有多种解决方案:

使用插件 将lein git版本插件添加到项目中。它将生成一个包含vars的名称空间,其中包含项目版本、git版本和时间戳等信息。您可以从其他名称空间引用它们

使用宏 您可以在
.clj
.cljc
文件中定义宏:

(defmacro generate-build-timestamp []
  (System/currentTimeMillis))
并在ClojureScript代码中使用它:

(def build-timestamp (generate-build-timestamp))

由于宏代码将在编译过程中执行,因此宏生成的值将填充到已编译的JavaScript代码中。

谢谢,我需要的是lein git版本。我更喜欢您的第二个更简单的解决方案,但无法让它与js/Date一起工作。也许它必须在.clj文件中?@Gra宏和ClojureScript编译在JVM上运行,因此不能在宏中调用JavaScript API。您可以将ClojureScript代码修改为:
(def build timestamp(js/Date.(generate build timestamp))
,或者让您的宏使用
js/Date发出代码。
构造函数调用:
(defmacro generate build timestamp[](list'js/Date.(System/currentTimeMillis)))