gpt4 book ai didi

clojurescript - 如何将环境变量传递给 ClojureScript 应用程序?

转载 作者:行者123 更新时间:2023-12-04 00:21:34 29 4
gpt4 key购买 nike

我有一个从 Leiningen 启动的 ClojureScript 应用程序。我如何在应用程序启动时将环境变量传递给应用程序(可能是它构建时)

最佳答案

有两个构建时间选项:

使用宏

CLJS 宏是 Clojure 代码,在编译时运行。所以你可以使用用于读取环境变量的常规 Clojure 代码以及包括它们或做其他宏观的事情。

使用 goog.define

CLJS 与 Google Closure 编译器的这一功能相集成,以通过构建时间 configurations .

同时使用的示例

相对最小的project.clj,设置一个goog.defineenv-var E1:

; project.clj
(defproject envvars "0.1.0-SNAPSHOT"
:min-lein-version "2.9.1"
:dependencies [[org.clojure/clojure "1.10.1"]
[org.clojure/clojurescript "1.10.597"]]
:plugins [[lein-cljsbuild "1.1.7" :exclusions [[org.clojure/clojure]]]]
:source-paths ["src"]
:cljsbuild {:builds
[{:id "dev"
:source-paths ["src"]
:compiler {:closure-defines {envvars.core.e1 ~(System/getenv "E1")} ; XXX
:main envvars.core
:asset-path "js/compiled/out"
:output-to "resources/public/js/compiled/envvars.js"
:output-dir "resources/public/js/compiled/out"
:source-map-timestamp true}}]})

宏,读取环境变量 E2:

; src/envvars/coremacros.clj 
(ns envvars.coremacros)

(defmacro load-via-macro []
(System/getenv "E2")) ; XXX

示例“main”,打印内容:

; src/envvars/core.cljs 
(ns envvars.core
(:require-macros [envvars.coremacros]))

(enable-console-print!)

(goog-define e1 "undefined") ; XXX

(def e2 (envvars.coremacros/load-via-macro)) ; XXX

(println e1 e2) ; XXX

构建:

E1=E1 E2=E2 lein cljsbuild once

看看控制台打印的E1 E2

关于clojurescript - 如何将环境变量传递给 ClojureScript 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60413100/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com