gpt4 book ai didi

clojure - 如何使用 ClojureScript 和 Figwheel 与后端通信?

转载 作者:行者123 更新时间:2023-12-02 11:12:59 24 4
gpt4 key购买 nike

注意:我总体来说是一名经验丰富的程序员,并且使用 clojure,但从未进行过认真的 Web 开发。

我使用 Chestnut 设置了一个基本的 ClojureScript 项目,并顺利完成了“Hello World”步骤。不过,我也很想与我的后端交谈。为此,我将试剂代码重新定义为

(defn greeting []
[:input {:type "button"
:value (:text @app-state)
:on-click #(http/get {})}])

单击时会收到 404 响应。所以至少我正在和某人说话。我还可以在 server.log 文件中看到我的获取请求的证据。然而,此时我正在努力解决一些概念问题。

首先,http/get 是 clj-http.client 中定义的函数,它不是 Chestnut 设置的一部分。如果我必须去寻找库来发送像获取请求这样基本的东西,感觉就像我已经偏离了轨道。

其次,用户命名空间的文件具有 Chestnut 预定义的以下几行:

(def http-handler
(wrap-reload #'mypage.server/http-handler))

(defn run []
(figwheel/start-figwheel!))

我看不到任何使用过 http-handler 的地方。所以我不明白这个定义的作用。

按照我理解Figwheel的方式,当我调用“run”时,它会启动一个新的Web服务器,然后a)提供index.html,b)通过一些TCP端口连接到我的浏览器并开始泵送新的JavaScript通过那个连接。对我而言,第二部分非常具有推测性。如果这确实发生了,我的下一个问题是 Figwheel 是否也需要位于该连接的另一侧,或者浏览器是否有一些允许从外部重新加载代码的通用 API。

最后,我可以看出 mypage/server.clj 文件(如下)中定义的环路由和 http-handler 正在以某种方式被调用,因为修改这些更改了 get-request 中的错误,但这完全是一个谜对我来说这是如何运作的。据我了解,我从浏览器发送的获取请求被发送到Figwheel服务器,即网站的起源。我没有理由相信Figwheel知道我在服务器文件中定义的http处理程序的任何信息。

(defroutes routes
(GET "/" _
{:status 200
:headers {"Content-Type" "text/html; charset=utf-8"}
:body (io/input-stream (io/resource "public/index.html"))})
(resources "/"))

(def http-handler
(-> routes
(wrap-defaults api-defaults)
wrap-with-logger
wrap-gzip))

最佳答案

对于 ClojureScript 项目(即不是 Clojure),我相信您想要这个:https://github.com/r0man/cljs-http

关于clojure - 如何使用 ClojureScript 和 Figwheel 与后端通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37926881/

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