在用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 |