我是一個JavaScript技術不太純熟的開發(fā)者,但我接觸這項技術的時間算起來塊6年了,近2年由于React和Vue這2個庫的流行,使我開始懷疑自己了...難道我沒弄明白?
網(wǎng)絡上很多人在議論jQuery是舊時代方案,但我也有去了解過React和Vue這兩個庫呀,最終我得出的結(jié)論是某些特定應用場景,還是感覺jQuery會比其他庫方便很多。
例如:我只需要寫個輪播圖、選項卡之類的,我始終還是感覺jQuery方便太多了,再不行我直接原生語法去寫也沒啥問題呀,為啥那么多人把用jQuery視為技術很Low呢?并且和React/Vue這2個庫對比。
感覺噴jQuery的好多都說React和Vue性能高,但實際情況不就是有個虛擬DOM嗎?在用戶層面的體驗來說都是毫秒級的差距,我不覺得這個是特別嚴重的性能問題呀,如果真是什么大問題jQuery也能輕松實現(xiàn)呀。
至于哪些說jQuery影響了前端技術發(fā)展的言論,這個我到表示部分認同部分反對,認同的部分是他有一些對原生API的抽象封裝,不認同的部分是jQuery讓人更快學會JavaScript,并且他幫我們處理了很多要命的兼容問題。
結(jié)語:我一直認為React和Vue是前端的數(shù)據(jù)流控制工具,主要完成從接口獲得數(shù)據(jù)并展示到瀏覽器的工作,更直接點主要功能應該是數(shù)據(jù)調(diào)度(模板渲染),為跨終端應用提供了一份便捷的數(shù)據(jù)展示方案。為啥那么多開發(fā)者將這2個庫描述的無所不能一樣呢,難道我的理解存在問題嗎 ?
2018最后1問,愿你我共同進步,請大家指教下。
jQuery 在 2.0 以后的版本也去除了對低版本 IE 的支持
jQuery 的選擇器可以用 document.querySelector() 代替,其他也有可替代的方案。
至于輪播圖、選項卡,用 react 或者 vue 可以很方便的和其他項目結(jié)合,還是比 jQuery 可維護性強一點的。
我覺得在需要大量處理瀏覽器兼容問題的時代,jQuery 是非常方便的,但是現(xiàn)在 jQuery 有點高不成低不就的意思。
倒不是說 jQuery low,說這種話沒意思。只是個人覺得沒什么用 jQuery 的必要。
當然,具體問題具體分析,如果公司項目確定了用 jQuery ,也還是可以的。
先祝大家新年快樂,感謝參加討論的朋友,為了讓哪些噴子住嘴,我還是自己總結(jié)下吧。網(wǎng)頁特效含小規(guī)模DOM操作場景下,還是jQuery或原生語法更合適些,特別是現(xiàn)在的3.x系列體積很小了,實在不行的話Zepto也可以。
而大量DOM操作用JS做視圖控制的場景下,React和Vue具有一定優(yōu)勢(新的技術、設計模式),這使得性能和開發(fā)效率得到一定提升。最主要是這個時代的組件化開發(fā)模式,使得團隊協(xié)作(項目維護)變得更容易,React和Vue這類庫提供了組件化更優(yōu)實現(xiàn)。
與君共勉
回答這個問題需要從React的起源開始:
React 起源于 Facebook 的內(nèi)部項目,因為該公司對市場上所有 JavaScript MVC 框架,都不滿意,就決定自己寫一套,用來架設Instagram 的網(wǎng)站。做出來以后,發(fā)現(xiàn)這套東西很好用,就在2013年5月開源了。
那么這個問題實際上是:
耦合性低視圖層和業(yè)務層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個應用的業(yè)務流程或者業(yè)務規(guī)則的改變只需要改動MVC的模型層即可。因為模型與控制器和視圖相分離,所以很容易改變應用程序的數(shù)據(jù)層和業(yè)務規(guī)則。
模型是自包含的,并且與控制器和視圖相分離,所以很容易改變應用程序的數(shù)據(jù)層和業(yè)務規(guī)則。如果把數(shù)據(jù)庫從MySQL移植到Oracle,或者改變基于RDBMS數(shù)據(jù)源到LDAP,只需改變模型即可。一旦正確的實現(xiàn)了模型,不管數(shù)據(jù)來自數(shù)據(jù)庫或是LDAP服務器,視圖將會正確的顯示它們。由于運用MVC的應用程序的三個部件是相互獨立,改變其中一個不會影響其它兩個,所以依據(jù)這種設計思想能構(gòu)造良好的松耦合的構(gòu)件。重用性高
隨著技術的不斷進步,需要用越來越多的方式來訪問應用程序。MVC模式允許使用各種不同樣式的視圖來訪問同一個服務器端的代碼,因為多個視圖能共享一個模型,它包括任何WEB(HTTP)瀏覽器或者無線瀏覽器(wap),比如,用戶可以通過電腦也可通過手機來訂購某樣產(chǎn)品,雖然訂購的方式不一樣,但處理訂購產(chǎn)品的方式是一樣的。由于模型返回的數(shù)據(jù)沒有進行格式化,所以同樣的構(gòu)件能被不同的界面使用。例如,很多數(shù)據(jù)可能用HTML來表示,但是也有可能用WAP來表示,而這些表示所需要的命令是改變視圖層的實現(xiàn)方式,而控制層和模型層無需做任何改變。由于已經(jīng)將數(shù)據(jù)和業(yè)務規(guī)則從表示層分開,所以可以最大化的重用代碼了。模型也有狀態(tài)管理和數(shù)據(jù)持久性處理的功能,例如,基于會話的購物車和電子商務過程也能被Flash網(wǎng)站或者無線聯(lián)網(wǎng)的應用程序所重用。
生命周期成本低
MVC使開發(fā)和維護用戶接口的技術含量降低。部署快
使用MVC模式使開發(fā)時間得到相當大的縮減,它使業(yè)務程序員集中精力于業(yè)務邏輯,界面程序員集中精力于表現(xiàn)形式上。可維護性高
分離視圖層和業(yè)務邏輯層也使得WEB應用更易于維護和修改。有利軟件工程化管理
由于不同的層各司其職,每一層不同的應用具有某些相同的特征,有利于通過工程化、工具化管理程序代碼??刂破饕蔡峁┝艘粋€好處,就是可以使用控制器來聯(lián)接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構(gòu)造應用程序提供強有力的手段。給定一些可重用的模型和視圖,控制器可以根據(jù)用戶的需求選擇模型進行處理,然后選擇視圖將處理結(jié)果顯示給用戶。
沒有明確的定義
完全理解MVC并不是很容易。使用MVC需要精心的計劃,由于它的內(nèi)部原理比較復雜,所以需要花費一些時間去思考。同時由于模型和視圖要嚴格的分離,這樣也給調(diào)試應用程序帶來了一定的困難。每個構(gòu)件在使用之前都需要經(jīng)過徹底的測試。不適合小型,中等規(guī)模的應用程序
花費大量時間將MVC應用到規(guī)模并不是很大的應用程序通常會得不償失。增加系統(tǒng)結(jié)構(gòu)和實現(xiàn)的復雜性
對于簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結(jié)構(gòu)的復雜性,并可能產(chǎn)生過多的更新操作,降低運行效率。視圖與控制器間的過于緊密的連接
視圖與控制器是相互分離,但卻是聯(lián)系緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。視圖對模型數(shù)據(jù)的低效率訪問
依據(jù)模型操作接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù)。對未變化數(shù)據(jù)的不必要的頻繁訪問,也將損害操作性能。一般高級的界面工具或構(gòu)造器不支持模式
改造這些工具以適應MVC需要和建立分離的部件的代價是很高的,會造成MVC使用的困難。
各大前端社區(qū)關于框架的熱門問題基本都是以上總結(jié)的低配或者魔改版
所以啊,還是要提高姿勢水平
來源百度百科:MVC框架
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。