如何将Clojure函数连接到html页面?

Jel*_*ena 2 html clojure web

我在项目中遇到了一些问题,并希望你能提供帮助.

我有一些像clojure函数

(def player-grid {:width {} :height {}})

(defn contains-coord [grid x y]
  (if ((and (= ((grid :width) x) x) (= ((grid :height) y) y)))
    true
    false))

(defn add-to-grid [grid x y]
  (assoc grid :width (into (grid :width) {x x})
              :height (into (grid :height) {y y})))
Run Code Online (Sandbox Code Playgroud)

我还有一个html页面,其中有一个由复选框组成的10X10战舰游戏板.我试图找到一种方法来连接这两个,这样当我点击板放船时,坐标被发送到clojure函数.

基本上,我不知道如何将两者结合起来作为一个整体.

我真的很感激这方面的一些建议或例子,因为除了从头开始创建新的html页面之外我在使用compojure和hiccup时没有发现任何有用的东西.

Con*_*ski 5

哇 - 你试图连接两个不能连接在一起的东西(但是作为一个初学者,你无法知道它.)

首先,您需要确定您的clojure代码应该存在的位置 - 它应该存在于提供这些网页的Web服务器上,还是应该存在于用于播放战舰的计算机上的Web浏览器中?这两种可能性都有意义.

如果要在服务器上运行clojure代码,则必须在用户单击网格时向服务器写入消息.您必须将每个网格方块链接到一些javascript代码,然后将一条消息发送到您的服务器,并将其发送到名称为" http://battleshipgame.com/game/3243/grid?x=3&y=7 "的网址然后你会用的Compojure处理(和的Compojure路由处理,然后将链接到您的功能.)这样做被称为AJAX,很多人会使用jQuery的功能"点击"到网格空间连接到javascript和"后"将邮件发送到网址.

如果你想在客户端上运行的Clojure代码,那么你不能做到这一点,因为在用户的Web浏览器中运行没有Clojure的解释.不过,最近富希基发布ClojureScript可Clojure的代码转换为JavaScript的.使用ClojureScript,您可以在浏览器中完成您想要的操作.查看ClojureScript编译器中的twitter示例,了解如何执行此操作:https://github.com/clojure/clojurescript/tree/master/samples/twitterbuzz

正如您所看到的,这有点涉及,可能需要您的一些奉献精神来学习如何完成所有这些 - 祝你好运!