zepto和jquery的區別?
01-26
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的實現方式不同
詳情
- 針對移動端程序,Zepto有一些基本的觸摸事件可以用來做觸摸屏交互(tap事件、swipe事件),Zepto是不支持IE瀏覽器的。
- DOM操作的區別:添加id時jQuery不會生效而Zepto會生效
- 事件觸發的區別:使用jquery時load事件的處理函數不會執行;使用zepto時load事件的處理函數會執行
- 事件委託的區別:zepto中,選擇器上所有的委託事件都依次放入到一個隊列中,而在jquery中則委託成獨立的多個事件
- width() 與 height()的區別:zepto由盒模型(box-sizing)決定,用.width()返回賦值的width,用.css("width")返回border等的結果;jquery會忽略盒模型,始終返回內容區域的寬/高(不包含padding、border).
- offset()的區別:zepto返回{top,left,width,height}; jquery返回{width,height}。zepto無法獲取隱藏元素寬高,jquery可以
- zepto中沒有為原型定義extend方法而jquery有
- zepto的each方法只能遍曆數組,不能遍歷JSON對象。
更多
jQuery 和 Zepto.js 表面看起來差不多,其實一些細節上差異很大,同時支持 jQuery 和 Zepto.js 是一件吃力不討好的事情,這應該也是 Foundation 5 放棄支持 Zepto 的一個原因。(下面列舉的差異 Demo)
推薦閱讀:
※用 js 和 css3 做動畫時,如何判斷所有的圖片元素都載入完了?
※你是如何打造自己的前端庫(css+js,主要是js了)的?
※如何清除頁面上已有的js?
※handlebars這個前端模板引擎如何,有類似的模板引擎推薦嗎?
TAG:JavaScript | jQuery | Zeptojs |