有没有Clojurescript库可以替代jQueryUI Sortable?

4
标题中所说的内容。我有一个简单的应用程序需要这个功能,但是可以用纯ClojureScript编写,因此加载jQuery和jQueryUI似乎非常浪费。

3个回答

2
这里有一种方法可以让它工作。你需要使用一个外部文件,这样Google Closure才能读取jQuery库。主要的jQuery已经发布了一个外部文件,我还发布了一个适用于jQuery-ui sortable的外部文件。project.clj应该引用这个外部文件,所以包含类似于这样的内容:
: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))

为项目包含一个像这样的index.html文件。

也许有一些方法可以直接使用:foreign-libs在project.clj中编译jQuery库,但我不确定如何做到这一点。

编辑:抱歉,这仍然使用了整个jQuery库,所以并没有真正回答问题。


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

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也可以做到相同的效果

<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文件。 Download Builder还会下载一个CSS主题,但对于可排序的小部件,我认为没有必要包含它。

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

这只是一个建议,如果ClojureScript中没有任何可以帮助您的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接