Ответ 1
Есть несколько отличий ClojureScript от Clojure.
Dependecies из "project.clj" могут быть применимы/видимы/использованы ClojureScript, например, посмотрите " jayq". Вы включили бы его в "project.clj" :
(defproject xyz/xyz "0.1.0-SNAPSHOT"
:dependencies [[clj-time "0.4.3"]
[jayq "2.2.0"]
....
И затем используйте его в файле ClojureScript:
(ns xyz.some.cljs
(:require ...
...
[clojure.browser.repl :as repl]
[jayq.core :as jq])
В то время как "jayq" не является "Clojure" -й библиотекой в смысле "бэкэнд", поскольку он просто переносит JavaScript, это пример использования зависимости "project.clj" от стороны ClojureScript.
Кроме того, большинство основных и нескольких неядерных библиотек уже портированы на сторону ClojureScript:
- clojure.set
- clojure.String
- clojure.walk
- clojure.zip
- clojure.core.reducers
- fold в настоящее время является псевдонимом для сокращения
- core.match
- core.logic(в работах)
Другие библиотеки Clojure должны будут соответствовать подмножеству ClojureScript для работы в ClojureScript.
Стоит клонировать ClojureScript repo и получить представление о том, что он поддерживает (плюс добавить свои собственные функции, если вы чувствуете себя авантюристами:)
Зависимости ClojureScript обычно основаны на "front end" (включая те, которые переносятся из бэкэнд). Другими словами, конечная цель должна быть скомпилирована V8 и запущена как JavaScript, поэтому можно использовать все, что может быть скомпилировано компилятором ClojureScript (репо выше).