Как подключить функции Clojure к html-странице? - PullRequest
2 голосов
/ 19 сентября 2011

У меня возникли некоторые проблемы с проектом, и я надеялся, что вы могли бы помочь.

У меня есть некоторые функции 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})))

, и у меня также есть HTML-страница, которая имеет 10X10линкор игровая доска сделана из флажков.Я попытался найти способ соединить их так, чтобы, когда я нажимал на доску, чтобы поставить корабль, координаты отправлялись в функцию clojure.

По сути, я понятия не имею, как соединить их вместе.работать в целом.

Буду очень признателен за некоторые советы или примеры по этому вопросу, поскольку я не нашел ничего полезного при использовании compojure и hiccup, кроме создания новых HTML-страниц с нуля.

1 Ответ

5 голосов
/ 19 сентября 2011

Ого. Вы пытаетесь соединить две вещи, которые не предназначены для соединения друг с другом (но вы никак не можете знать это как новичок).

Во-первых, вам нужно решить, где должен находиться ваш код clojure. Должен ли он находиться на веб-сервере, обслуживающем эти веб-страницы, или в веб-браузере на компьютере, который используется для игры в линкоре? Любая возможность может иметь смысл.

Если вы хотите запустить свой код clojure на сервере, вам придется писать сообщения на сервер, когда пользователь нажимает на сетку. Вам нужно будет связать каждый квадрат сетки с некоторым кодом javascript, который затем отправит сообщение на ваш сервер на URL с именем, подобным «http://battleshipgame.com/game/3243/grid?x=3&y=7", которое вы затем обработаете с помощью compojure (и обработчик маршрута compojure будет затем ссылка на вашу функцию.) Это называется AJAX, и многие люди используют функции jQuery «щелкнуть», чтобы подключить пространство сетки к javascript, и «отправить», чтобы отправить сообщение на URL.

Если вы хотите запустить свой код clojure на клиенте, вы не сможете этого сделать, поскольку в веб-браузере пользователя не работает интерпретатор clojure ... Однако недавно Rich Hickey выпустил ClojureScript, который может конвертировать код clojure. в JavaScript. Используя ClojureScript, вы можете делать именно то, что вы хотите в браузере. Посмотрите на пример twitter в компиляторе ClojureScript, чтобы увидеть, как это сделать: https://github.com/clojure/clojurescript/tree/master/samples/twitterbuzz

Как видите, все это немного сложное и может потребовать от вас самоотдачи, чтобы научиться выполнять все эти вещи - Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...