為何需要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。
當然做一個簡單的小頁面,原生肯定還是簡單的。- 在特定的問題域尋求最優解是永無止境的
- 特定的問題域也在不斷變化,例如,瀏覽器的功能越來越豐富,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 |