zepto和jquery的區別?

zepto的主頁說,會用jquery就會用zepto。

那麼zepto和jquery是什麼關係呢?是jquery的定製壓縮版還是……?


jQuery 由於強大的生命力基本上是一個事實標準,所以大部分工具 lib 在 DOM 操作、動畫等功能上或多或少都會是 jQuery-like 的。Zepto 的 API 就是完全兼容 jQuery 的,功能上 Zepto 是 jQuery 的子集,定位上 jQuery 桌面為主,Zepto 則從一開始就定位移動設備,所以體積方面有一定優勢。也就是說如果你只用了 jQuery 很少且都是核心的功能,比如選擇器等,那麼可以在不改動任何業務代碼的情況下把 lib 切換到 Zepto——其實就是把 $ 對象換掉了。


核心要點:

  • Zepto更輕量級
  • Zepto是jQuery的精簡,針對移動端去除了大量jQuery的兼容代碼
  • 部分API的實現方式不同

詳情

  1. 針對移動端程序,Zepto有一些基本的觸摸事件可以用來做觸摸屏交互(tap事件、swipe事件),Zepto是不支持IE瀏覽器的。

  2. DOM操作的區別:添加id時jQuery不會生效而Zepto會生效
  3. 事件觸發的區別:使用jquery時load事件的處理函數不會執行;使用zepto時load事件的處理函數會執行
  4. 事件委託的區別:zepto中,選擇器上所有的委託事件都依次放入到一個隊列中,而在jquery中則委託成獨立的多個事件
  5. width() 與 height()的區別:zepto由盒模型(box-sizing)決定,用.width()返回賦值的width,用.css("width")返回border等的結果;jquery會忽略盒模型,始終返回內容區域的寬/高(不包含padding、border).
  6. offset()的區別:zepto返回{top,left,width,height}; jquery返回{width,height}。zepto無法獲取隱藏元素寬高,jquery可以
  7. zepto中沒有為原型定義extend方法而jquery有
  8. zepto的each方法只能遍曆數組,不能遍歷JSON對象。

更多

jQuery 和 Zepto.js 表面看起來差不多,其實一些細節上差異很大,同時支持 jQuery 和 Zepto.js 是一件吃力不討好的事情,這應該也是 Foundation 5 放棄支持 Zepto 的一個原因。(下面列舉的差異 Demo)


推薦閱讀:

用 js 和 css3 做動畫時,如何判斷所有的圖片元素都載入完了?
你是如何打造自己的前端庫(css+js,主要是js了)的?
如何清除頁面上已有的js?
handlebars這個前端模板引擎如何,有類似的模板引擎推薦嗎?

TAG:JavaScript | jQuery | Zeptojs |