標籤:

在用angularjs的時候有沒有必要用requirejs或者是browserify?

在平時的開發中有用browserify,主要是在合併文件minify的時候方便,而requirejs除了模塊化的作用外,還可以用來做js文件的懶載入,但是對於angular的應用來說,js的lazy fetch,意義大么,因為像spa這種,首屏渲染的速度再怎麼搞也不會快到哪裡去,但是引入requirejs,多多少少會增加一些複雜度,那麼問題來了,到底有沒有在angular的項目中使用requirejs這種東東呢?


沒有必要。

Angular因為模塊機制比較特別,所以跟這些東西混用都比較彆扭。我見過有些開源項目的用法,實在很折騰,比如最近在研究的kibana:elastic/kibana · GitHub

這是我見過的最折騰的angular用法了,比如你看,他把module作了封裝:

kibana/modules.js at master · elastic/kibana · GitHub

又搞了一隻private:kibana/private.js at master · elastic/kibana · GitHub

還有promise,居然把$q又封裝了:kibana/promises.js at master · elastic/kibana · GitHub

然後他的plugin機制,繞來又繞去,最後發布的時候還是把所有代碼全打包成一個了,大小是多少呢,5M多的一個js,16w行多,並且因為他把require跟angular混用,用require的打包,只能合併文件,不能壓縮文件,不然angular這裡可能出問題……

要不是項目需求,我才不要碰這樣的東西,你們有興趣的大致翻翻他的代碼,然後體會一下我的感受。


沒必要


根據項目要求。如果開始載入大量的js文件,還是建議lazyload一下。

這裡必須分清楚兩個概念,angular module 和js module。

require js只是可以非同步載入js 模塊,但是在angular app中,模塊載入完成後還必須要register到程序中,這個require js是無法單獨完成的,還要藉助ng 系列的lazyload插件,比如說angular AMD,oclazyload, coach potato等等。

目前來看,oclazyload的用戶挺多的,版本相對穩定,而且自帶async loader, 不過允許用戶自己添加require js作為替代,好多人說自帶的好因為可以載入css等其他格式的文件,這個仁者見仁。

整合過程不是很複雜,在stackoverflow或者 plunker上面都能找到靠譜的demo,難度不大。

不過還是不建議菜鳥入門就這樣作,有一些坑還是需要預先踩好的。


沒有


既然選擇使用了Angularjs,我相信你應該明白它擅長和不擅長做什麼事情,而且Angular也有lazyload叫做oclazyload


推薦閱讀:

angularJS適不適合做互聯網金融產品?
angualrJs 自定義指令link函數NgModelController Formatters 和 parsers
AngularJS搭配什麼後端框架比較合適?

TAG:AngularJS |