gpt4 book ai didi

clojure - 从 CLJ 发出调用 CLJS 函数的 Hiccup 控件

转载 作者:行者123 更新时间:2023-12-02 16:23:46 25 4
gpt4 key购买 nike

看起来这应该很简单,我认为它是......直到我从运行 Figwheel 切换到运行 JAR 文件并且它停止工作。

这个问题可以简化为一个非常简单的例子:

使用 Leiningen“Reagent”模板制作一个名为“buttontest”的新应用。

向 core.cljs 添加一些脚本,位于“ns”声明的正下方:

(defn greet [] (js/alert "Hi!"))

在handler.clj中添加静态按钮:

(defn loading-page [] (html5 (head) 
[:body {:class "body-container"} mount-target
;v v v INSERTED THIS
[:button {:onclick "buttontest.core.greet()"} "Say Hello"]
;^ ^ ^
(include-js "/js/app.js")]))

执行“lein cljsbuild Once”和“lein Figwheel”。浏览到该网站。单击“Say Hello”按钮将触发警报。

返回 shell,执行“lein uberjar”并使用 Java 运行生成的 .JAR 文件。浏览到该网站。单击“打招呼”按钮不会执行任何操作。控制台显示“buttontest 未定义。”

我尝试过各种方法(修改/删除“onclick”属性中的命名空间限定,手动包含其他 .JS 文件等),但没有成功。我觉得我错过了一些明显的东西。

有什么想法吗?谢谢。

最佳答案

尝试为您的 greet 函数提供 export 元标志:

(defn ^:export greet ...)

我想 :advanced 编译优化会破坏命名空间/函数名称,而 :export 会禁止这种情况(或类似的事情)。

关于clojure - 从 CLJ 发出调用 CLJS 函数的 Hiccup 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54103162/

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