是否有Clojurescript库来取代jQueryUI Sortable?

时间:2013-06-08 13:01:30

标签: jquery-ui clojure clojurescript

标题中的内容。我有一个需要这个功能的简单应用程序,但是可以用普通的clojurescript编写,所以加载jQuery和jQueryUI似乎相当浪费。

3 个答案:

答案 0 :(得分:2)

谷歌关闭库中与jQueryUI的Sortable最接近的是goog.fx.DragListGroup。据我所知,没有ClojureScript包装器,但直接对它进行编码应该相当简单,因为它在闭包库中也应该很好地优化。基本思想是为每个要排序的独立列表实例化DragListGroup,然后使用addDragList将列表元素添加到该组。如果希望能够在列表之间拖动元素,也可以将多个列表元素添加到同一组中。

答案 1 :(得分:2)

以下是实现此功能的一种方法。您需要使用extern文件,以便Google Closure可以读取jQuery库。主jQuery already published有一个,我发布了一个效果很好的for jQuery-ui's sortable。 project.clj应该引用extern,所以包括这样的内容:

:dependencies [[org.clojure/clojure "1.5.1"]
              [org.clojure/clojurescript "0.0-1806"]
              [jayq "2.3.0"]]
:plugins [[lein-cljsbuild "0.3.1"]]
:cljsbuild {
          :builds [
                     {:source-paths ["src"]
                      :compiler
                      {:output-to "resources/public/js/out.js"
                       :optimizations :advanced
                       :pretty-print false
                       :externs ["resources/public/externs"]}}]})

然后为可排序函数编写一些cljs(jayq使这很简单):

(ns sortable.core
  (:use [jayq.core :only [$]]))

(defn sortable [$elem]
  (.sortable $elem))

(defn disable-selection [$elem]
  (.disableSelection $elem))

(let [$sortable ($ :#sortable)]
 (sortable $sortable)
 (disable-selection $sortable))

并为项目like this添加index.html文件。

可能有一些方法可以直接编译jQuery库:project.clj中的foreign-libs,但我不知道该怎么做。

编辑:对不起,这仍然使用整个jQuery库,所以它并没有真正回答这个问题。

答案 2 :(得分:0)

因为我对clojurescript一无所知我无法在clojurescript中给你一个合适的解决方案,但是jQuery和jQuery UI不应该那么浪费。

您可以使用Google CDN来包含jQuery库。许多网站使用此源,因此文件被缓存,不会一次又一次地下载。 请参阅this链接。

//you can of course easily change the version you want to use, like 1.9.1
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script

可以为jQuery UI

完成same
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>

但是如果你只想使用jQuery UI的sortable小部件,你可以简单地使用他们的Download Builder。 只需取消选中“组件”下方的“全部切换”复选框,然后选中“交互”中的可排序复选框。 下载您自定义的jQuery UI版本,您需要包含的是jquery-ui-1.10.3.custom.min.js文件。下载构建器也会下载CSS主题,但对于可排序的小部件,我认为不需要包含它。

但实际上包括来自Google CDN的jQuery UI也是一个不错的选择。如果您在本地托管库,则用户必须至少下载一次。如果您使用Google,大部分用户都不需要下载文件。 (除非版本不同)

如果clojurescript中没有任何内容可以帮助你,那么只是一个建议。