小記 · 去 jQuery 項目

jopen 9年前發布 | 12K 次閱讀 jQuery
就在昨天 2015/12/09,團隊協力把項目中所有的 jQuery 代碼全部去除,完成了下線 jQuery 的里程碑。為了這個時刻,等了很久。

在項目進展中,團隊沉淀了一個 oui-dom-utils 的工具集,和 You-Dont-Need-jQuery 的文檔。萬萬沒想到,這個記錄沉淀的文檔在短短幾日內上了 Github Trend 總榜第一位,日關注數以每天 400 star 上漲,還收到世界各地的開發者的 PR 來翻譯文檔。截止現在已經支持七國語言,共 1500+ star,14 位世界各地的貢獻者。

小記 · 去 jQuery 項目

為什么要做這件事

眾所周知,jQuery 在前端領域做出了不可磨滅的貢獻,尤其在 IE6-7 活躍在用戶電腦的年代,它是時代的寵兒。它方便快捷地書寫方式(鏈式),可以在短時間內完成一些交互功能。

但在這樣的快捷下,有沒有遇到過代碼不斷的累加,復雜得看不懂操作的邏輯,有沒有發現大部分應用還是會加類似于 Class 的概念去管理應用代碼。實際上,jQuery 只是一個庫而已,并不是框架,他不能做很多事,也不應該做過多的事。


從 jQuery 的 API 上可以看到它主要是做 DOM 操作的簡化,事件方法的簡化,加上一些工具類,Ajax,Promise 等方法。對于一個庫,承載這么多功能已經不是主流的做法。前端界如今更推崇小而美,功能單一的實現。

在拆分時,團隊一起做了很多的選擇,第一是跟隨標準,第二跟隨主流,比如在 DOM 操作上為了部分方法的復用,封裝了 oui-dom-utils,大部分情況直接使用標準方法,事件方法為了加命名空間封裝了 oui-event-utils,Ajax 上選擇了 fetch(包含 polyfill),工具類選擇了 lodash,Promise 方法直接寫標準方法利用 babel 編譯等。

事實上,我們還是保留了沒法避免的 DOM 操作代碼,用更簡潔的方法去實現,這并不是輪子,只是一個更簡單的方法集,任何掌握了前端基礎的開發都可以完成。其中占比最大的就是計算元素位置和寬高,頁面寬高,另一些就是兼容性的時候直接使用了 set style,將在未來 React 發展和項目過程中慢慢找到方案去除。總體上,滿足了現在在 React 上使用時不得不用到的 DOM 方法。

結語

在關注數據與界面分離的諸多架構井噴的今天,從關注 DOM 操作便捷性到遠離 DOM 操作順應了前端發展的大潮。

項目已經結束,這件事還是會繼續做下去,為了讓 React 開發者,包括其它前端開發者更好的關注數據與界面分離,我們要把去 jQuery 當成一件前端的『歷史事件』去做。但就如同上文如說,DOM 操作不可避免,也會長期存在,開發者要做的是盡力簡化,甚至回避它們。

文檔中會完善使用方法及測試,并加入繼續更新的計劃,歡迎更多前端開發者加入。

最后,感謝團隊一起付出的努力。

PS. 后續會有深入 Redux 文章系列,以源碼解讀到深度實踐的一些文章發布,文章都是利用業余時間完成,也請多多支持,共同進步。

PSS. 強調一下,oui-dom-utils 并不是 jQuery 的輪子,請先看明白寫的內容。我也不推薦你拿來用,如果你一定需要兼容很多瀏覽器,那么 jQuery 適合你,如果不需要,能用原生方法實現的都用原生方法實現,這也是寫 You-Dont-Need-jQuery 的目的。

來自:http://zhuanlan.zhihu.com/purerender/20405900

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!