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

為什么要做這件事
眾所周知,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