無論是在backbone時代,還是angularjs 時代 我都用過requirejs, 后來慢慢全都去掉了, 因為在前端開發requirejs 感覺沒有帶來任何實質性的好處.
從幾個方面說說我的感受
1 文件加載 文件加載已經很多, 即使手動用script 引入我也感覺很方便, 因為理由主要有幾點, 前端的頁面沒有非常復雜, 雖然我現在已經不推薦SPA, 即使是目前主流的網站,新浪微博, 淘寶, 的頁面 也沒有多復雜, 我真的不相信js已經大到比后端還復雜的程序, 一個后端路由出來的頁面不會有多復雜. 這是一定的, 我覺得最復雜的應用也就是企業ERP了, 網站這種頁面的確不太復雜.
另外一點就是生產環境一般都是壓縮成一個文件, 文件就一兩個script就夠了, requirejs在生產環境完全沒用. 文件加載這塊, labjs head.js 已經夠用了.
2 js模塊化 和 模塊依賴
requirejs 也就在這里 而且是在開發環境 看起來有點作用, 其實也不大, 模塊化這個問題還是看具體用的庫的寫法, 非要都按照requirejs 來 完全是增加了開發成本, 至於依賴也是同樣道理 你用angular, 用ember 用其他, 依賴問題庫都解決了, 為啥還用requirejs?
另一觀點requirejs 可以解決團隊大規模協作的問題, 我不知道每個公司的前端團隊有多少人,可能例如淘寶都是30人起步的, 但即使是30人, requirejs僅僅解決了js得模塊化, 例如未來的html import, 沒有根本解決模塊的問題, 而且不引入mvvm庫, requirejs 沒有減少任何代碼量. 和backbone差不多 哈哈.
3 組件化
為什么我覺得組件化 和模塊化 不能混為一談, 看看polymer就知道了, 我們前端還是希望組件化, 這樣可以重用.
我來說說 ”重用” 首先,對用戶的產品 重用基本是偽命題, 就像跨平台一樣, 重用的組件必然用戶體驗不佳, 重用的組件適合做后台統計等不強調用戶體驗的產品.
還有組件化,是html 組件化, 還是css 組件化, 還是js組件化? 目前沒有定論, 我希望是html組件化 聲明式組件這樣用起來方便, 不希望是js組件化 requirejs 這里基本就和組件化就沒啥關系了.
所以我感覺requirejs 除了在開發環境中 引用一些js基礎庫方便,例如underscore這種, 基本沒啥好處, 引入一大堆語法不說, 搞得所有庫都要寫成這樣, 代碼沒減少反而多加了幾行. 還不如只引用小型mvvm庫提高生產力效率 來的方便易用.