為何需要Angularjs、backbonejs、reactjs?

使用原生的JS+JQuery+HTML+CSS,構建Web頁面相當方便而且簡單。

為什麼還需要Angularjs、backbonejs、reactjs?

他們有什麼優點?


全用原生,交互多起來、項目龐大以後,你就會自己封裝和抽象很多方法和類,就會組織規劃自己的項目代碼,最終你會發現,你雖然號稱使用原生不用框架,其實只是自己造了個輪子罷了,既然如此為什麼不用現成的呢?畢竟自己造輪子漏洞多、測試覆蓋也不比大框架全面,性能也不見得更優。

我以前做項目也迷信自己搞一套東西,後來使用了框架再回頭一看,發現以前不過是把有限的時間投入到無限的重複造輪子當中了啊。

實際什麼都自己搞真沒必要,畢竟現在帶寬上來了,瀏覽器引擎也越來越強勁,大家對框架的寬容性也越來越高了。何不把時間精力都花在如何設計更有創造性的事情上呢(包括但不限於交互設計、項目規劃、性能優化、用戶體驗等)?


推薦Teahour 這一期的播客:和 Vue.js 框架的作者聊聊前端框架開發背後的故事

這期節目里,Vue.js的作者談到了類似的問題,希望能對你有所啟發。


人自己長著腿,走路方便又簡單,為什麼還需要飛機,火車,汽車之類的交通工具?

所有這些東西都是為了解決特定問題而存在的,如果對你要做的東西來說原生就「非常方便而且簡單」,那說明你並不需要這些框架,用這些框架對你來說恐怕也沒什麼好處,就像你下樓買個早點還要去停車場開車一樣沒好處

http://www.zhihu.com/question/35892450/answer/70626203


挖個小坑,一個人一把鏟子就夠了。一個人用jQuery做個簡單頁面。

挖個小池塘,十個人,一人一把高級的鏟子。十個人用backbone做個不大不小的頁面。

挖個洞庭湖, 鏟子肯定不行了,發明點拖拉機啊,挖掘機啊,指揮部啊,大工程的慢慢搞。幾十幾百個人用Angular或者React或者Ember做一個大的工程,例如網易雲音樂客戶端之類的。

P.S. jquery, backbone也可做大型的頁面,就像愚公移山一樣。就是費心費力,不如強大點的框架省事。


我想這個事情某些地方也很無聊吧, 本來蘋果微軟做了桌面軟體, 很不錯的

對了, 有個桌面軟體叫做瀏覽器... 大家可以寫網頁, 然後直接給人看

不用安裝嘛, 點個連接, 很方便, 非常方便.. 考慮到美觀的效果, 加點腳本語言進去

由於這個瀏覽器太通用, 大家都會接觸到, 搞得很多很多程序員都會學一下怎麼寫

甚至因為太常用了, 很多公司都有了相應的崗位... 培養了大量的瀏覽器程序員

本來這些程序員可能是因為 Java, C++ 扛不住, 或者乾脆別的行業轉過來的, 寫點網頁什麼的

這裡說的是 HTML, jQuery 這些東西...

寫得多了, 覺得要是自己學的技術也能寫點應用程序多好, 然後開始寫, 居然真有人搞出來了

聽說最早是 Gmail, 後來有名的是 Backbone, 就在網上說這個東西怎麼怎麼好

於是後面進入行業的人學著用, 結果發現, 簡直就是坑人嘛, 各種問題,

但沒辦法, 有 boss 盯著呢, 坑就自己填吧, 結果人越來越多還真把前面的坑填完了

老闆覺得很有前途, 新手程序員也覺得這東西很牛逼, 就打算用來做更牛逼的東西

於是坑越挖越大, 填坑的人越來越多,, 特別是國外有些公司簡直天天搞這個東西

然後題主就可以看看現在都複雜成什麼樣子了, 用 jQuery 真的不會被 bug 煩死嗎?

https://discordapp.com/

https://www.wunderlist.com/

https://inbox.google.com/

http://slack.com/

https://teambition.com/

https://calendar.sunrise.am/


框架,從一方面為開發提供的便利,另一方面幫助團隊做了很多技術規範。靈活導致你必須尋找一定的方法讓多人代碼風格統一,最好的狀態就是所有人的代碼都向一個人寫出來的。

Angular 雙向綁定,實際上是將一部分JS負責的邏輯轉到模板中。

Angular 依賴注入,實際上解決了依賴不清的問題。

Angular Services,提供了單例。

Angular Directives,可以進行組件化封裝。

Angular Filters,提供模板小工具。

......

不知題主是否使用bower、gulp、jshint。

當然做一個簡單的小頁面,原生肯定還是簡單的。


  1. 在特定的問題域尋求最優解是永無止境的

  2. 特定的問題域也在不斷變化,例如,瀏覽器的功能越來越豐富,Web 慢慢變成了 WebApp。


框架的好處在於:

1 規範化開發

2 避免陷入陷阱

3 社區支持,遇到問題可以有更多思想交流

同時知其然不知其所以然,不是一個好程序員。


所謂的使用jQ簡單,只是在特定場景下才成立,只不過現在的網頁很多都屬於這種特定的場景,才會有這種的結論吧。

我覺得,web頁面分很多類型,不同場景適合使用不同的技術/框架。

1.複雜度:靜態頁面-&>帶動畫效果的頁面-&>ajax頁面-&> WebApp ;

2.運行環境:PC端/移動端/hybrid APP;

3.團隊與類型:單人/多人,後台系統/宣傳頁面/通用欄目。

jQ的簡單,在動畫頁面這個複雜度,單人維護的頁面里是成立的,而很多頁面和公司是這個情況。

jQ的好處是靈活,缺點也是靈活,當你試試用jQ去寫個有各種數據聯動和更新以及上千行代碼WebApp時,尋找別人使用jQ寫的代碼上千行的頁面中的bug時,就會體會到jQ靈活性的隱患。

相對而言,MV*框架增加了各種限制,也增加了學習成本,換來的,就是很好的可控性,這是一種權衡,就看你是不是清楚自己真正想要的東西了。

--------------------------------------

--------------------------------------

11月22號補充

最初問題剛剛提出來就直接回答了,現在看了下別人回答,就補充幾點吧。

1.同樣是MV*框架,也分侵入式框架和非侵入式框架,非侵入式框架是可以和jQ一起用的,比如backbone;

2.現在再看這個問題,其實是在問為什麼要用前端框架,說白了就是為了工程化。至於前端的工程化,我覺得有個討論很不錯 前端工程——基礎篇 · Issue #10 · fouber/blog · GitHub 。


那是因為google裡面也不少混飯的 不把簡單事情搞複雜 怎麼掩蓋他們無價值的人生呢


小點的app肯定沒問題

大型SPA那簡是直按下葫蘆起了瓢

痛苦過才知道為什麼


管理複雜度


問這類問題我肯定你是未經實踐的。

不說大型站點,你可以試試用jq和angular分別寫個分頁組件或者常用的小輪子,我保證你就明白為什麼飛機比火車快了。


感覺互聯網真是進入大泡泡時代了。

從前端的「繁榮」來看,就最近幾年,各種各樣的輪子層出不窮,而這些輪子帶來什麼價值了嗎?好多前端大牛說開發效率,說維護效率,還是技術沉澱?可能我太淺薄,不過我真沒看出來現在有什麼真正的價值,未來不敢說,像reactnative真能全平台跟原生同等效果,那真是有用。而現在的這些東西(angular,vue,avalon,reactjs),不過是同樣一個輪子換著法子消耗人力物力但是效果卻非常有限。

想想每一個輪子出來,學習成本,填坑成本,周邊,舊有組件庫重構,我都替企業覺得心疼。更關鍵是這些東西並沒有從根本上解決任何問題,你說大數據泡泡,人起碼在泡泡破裂前,積累了一整套處理大數據的方法論。而前端的泡泡,是真正的泡泡。

利益相關,全棧開發工程師,Angular1.x 國內較早一批(12年)嘗鮮並上生產環境的。之後就放棄這種模式了,成本太高效果就那樣。React一直在關注,入門水平。vue,avalon只是看看水平。

我很想聽聽 輪子哥的意見。。 因為你不是前端,可能比較客觀 @vczh


推薦閱讀:

如何評價數據流管理架構 Redux?
Vue和React的使用場景和深度有何不同?
Redux有哪些最佳實踐?
Weex 和 React Native 的根本區別在哪裡?
前端自學,目前可以用react寫一些項目,但是不知道目前現在在前端上的水平,希望可以獲得指點?

TAG:前端開發 | jQuery | Backbonejs | AngularJS | React |