前端的興起
前端真正興起和開(kāi)始頻繁出現(xiàn)在大家的視線里,大概是在十年前。彼時(shí)的 Web 開(kāi)發(fā)基本是由后端主導(dǎo),前端能做的只是校驗(yàn)一下數(shù)據(jù)、操作一下 DOM。(其中數(shù)據(jù)檢驗(yàn)是 JS 產(chǎn)生的根本原因:當(dāng)時(shí)網(wǎng)絡(luò)太慢,在服務(wù)端檢驗(yàn)數(shù)據(jù)并反饋給用戶,讓用戶知曉輸入錯(cuò)誤,這個(gè)流程太長(zhǎng)、反應(yīng)太慢,因此通過(guò)腳本在用戶端完成第一步校驗(yàn),既方便了用戶,又減輕了帶寬的壓力。)即使 06 年 jQuery 發(fā)布并風(fēng)靡全球,以及 XMLHttpRequest 被納入 W3C 標(biāo)準(zhǔn),也沒(méi)有改變這種狀況。制約它進(jìn)度的原因很簡(jiǎn)單,因?yàn)楹芏嗍虑榍岸?做不了 或者 做不好。隨著時(shí)間的推移,近幾年,Angular、Backbone、React、Vue 等框架陸續(xù)發(fā)布,讓前端越來(lái)越正規(guī)化、體系化。此時(shí)雖然仍有很多事,前端 做不了 或者 做不好,但前端這個(gè)崗位卻已變得熱辣空前。那么,是什么推動(dòng)著前端發(fā)展到如此大的規(guī)模和火熱的程度?

也許,你可以列舉出很多各種各樣的原因,但是綜其一點(diǎn),就是 『用戶體驗(yàn)』 ,是由于所有人對(duì)用戶體驗(yàn)的重視,才讓前端發(fā)展得這么迅猛,這么快地興起。這里,可能要感謝 Apple,感謝 iPhone,感謝 Jobs,07 年第一代 iPhone 發(fā)布,正式引發(fā)了幾乎所有人對(duì)用戶體驗(yàn)的重視,從『只要能用就好』,變成『要好用我才買(mǎi)單』的心理。而,前端的先驅(qū)者們、瀏覽器的開(kāi)發(fā)者們,也順應(yīng)了這個(gè)潮流,將一系列重要的能力加入了瀏覽器,加入了前端。
其中最重要的一項(xiàng)是 XMLHttpRequest,也就是 Ajax,它是富 Web 應(yīng)用的基礎(chǔ),它讓前端可以脫離后端的掌控,不用通過(guò)跳轉(zhuǎn)的方式就能實(shí)現(xiàn)數(shù)據(jù)交互。感謝微軟,感謝 IE,雖然被 IE 6~8 虐了無(wú)數(shù)遍,但是是它引入了 XMLHttpRequest ,引入了 Ajax,開(kāi)啟了富 Web 應(yīng)用的時(shí)代,讓用戶體驗(yàn)大幅提升。
而近幾年,隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,多端多平臺(tái)的需求越來(lái)越多,產(chǎn)品形態(tài)和數(shù)據(jù)分離,是形勢(shì)所趨。而與此同時(shí),移動(dòng)時(shí)代對(duì)產(chǎn)品形態(tài)跨端、跨平臺(tái)、多元化的用戶體驗(yàn)要求,讓本身就有跨平臺(tái)特性的前端技術(shù)著實(shí)又火了一把,它讓開(kāi)發(fā)者有更多的時(shí)間和精力關(guān)注用戶體驗(yàn),并很容易保持多平臺(tái)用戶體驗(yàn)的統(tǒng)一(不同平臺(tái)用不同技術(shù)實(shí)現(xiàn),雖然可以,但成本太高);除去上面的原因之外,前端技術(shù)自帶的熱發(fā)布、熱更新特性,能在及時(shí)更新業(yè)務(wù)需求的同時(shí)快速修復(fù)用戶所遇到的問(wèn)題,也是大家選擇它的一種原因。雖然另外還有很多零零總總、各種各樣的原因,再促使著前端成為當(dāng)前最火爆的幾個(gè)職位之一,但是最根本的原因仍舊是大家對(duì)用戶體驗(yàn)的要求。
從上面可以看出,前端的興起源于所有人對(duì) 用戶體驗(yàn) 的重視,而火爆更是由于所有人對(duì) 多元化的用戶體驗(yàn) 的關(guān)注。當(dāng)然,用戶體驗(yàn)不只只是 UI 漂亮、好看,它是多方面的,例如視圖的加載速度和流暢程度,這些取決于你選擇技術(shù)的編碼體積、運(yùn)行效率等多種因素。說(shuō)白了,前端的目的就是 讓用戶用得爽,那么 用戶體驗(yàn) 必須是重中之重。

說(shuō)了這么多,其實(shí)有一個(gè)很重要的點(diǎn)沒(méi)有提到,那就是 CSS。注重用戶體驗(yàn),首先你要用界面要有 UI,HTML + CSS 作為最簡(jiǎn)單的 UI 構(gòu)建方式,讓前端的 UI 開(kāi)發(fā)成本低到無(wú)與倫比,而開(kāi)發(fā)成本低才會(huì)有更多的時(shí)間和精力去注重用戶體驗(yàn)。同時(shí),現(xiàn)在 CSS 也有相應(yīng)的框架,像 PostCss、Sass 等,更進(jìn)一步降低了開(kāi)發(fā)成本,釋放了開(kāi)發(fā)者的時(shí)間和精力。
前端興起這十年,也是用戶體驗(yàn)飛速增長(zhǎng)的十年。不管是技術(shù)完善度還是從業(yè)人數(shù),前端這個(gè)方向受到了足夠多技術(shù)人員的關(guān)注,同時(shí)也受到了足夠多企業(yè)的重視。經(jīng)過(guò)前端人不斷的努力,現(xiàn)在的情況又如何呢?
前端的現(xiàn)狀
提到現(xiàn)狀,必須先提到一個(gè)概念 大前端。由于近幾年互聯(lián)網(wǎng)的發(fā)展,尤其是移動(dòng)互聯(lián)網(wǎng)的發(fā)展,有的大前端概念將 Native 歸入前端的范疇,有的大前端概念將 Node 甚至只渲染頁(yè)面的 PHP 歸入前端范疇,但不管怎么說(shuō),筆者認(rèn)為 大前端 是未來(lái)的一個(gè)趨勢(shì),將最終目標(biāo)(提升用戶體驗(yàn))一致的技術(shù)歸類到一起,讓開(kāi)發(fā)者清楚自己的最終目標(biāo)是什么,要怎么做。當(dāng)然,也正因?yàn)檫@點(diǎn),作為一個(gè)前端工程師,如果你想更好的發(fā)展,你應(yīng)該有更廣的知識(shí)面,包括移動(dòng)端知識(shí)、服務(wù)端知識(shí)。這些知識(shí)結(jié)合你的前端技術(shù),才能更好地實(shí)現(xiàn)優(yōu)秀的用戶體驗(yàn)。
拋開(kāi)大前端,單談前端,從前端架構(gòu)層面談,最近比較流行的有四個(gè):老牌勁旅 jQuery、最近火得不能再火的 React、Google 精品 Angular 以及 MVVM 框架 Vue?,F(xiàn)在幾乎所有的項(xiàng)目都會(huì)在這四種架構(gòu)方案中選擇其一作為基礎(chǔ),進(jìn)行業(yè)務(wù)開(kāi)發(fā)。四種框架,四種不同的思想,簡(jiǎn)單來(lái)說(shuō):jQuery Dom 驅(qū)動(dòng)的思想深入人心;React 則推崇組件化,萬(wàn)物皆組件;Angular 則把 MVC 在前端領(lǐng)域發(fā)揚(yáng)光大;而 Vue 則是以數(shù)據(jù)驅(qū)動(dòng)為核心的 MVVM 架構(gòu)。作為一個(gè)前端新人,不可能很快就理解所有知識(shí)和思想,只能一步一步來(lái),先把你在工作中所使用的框架理解透徹,再去思考和學(xué)習(xí)別的。說(shuō)實(shí)話,會(huì)用和理解的差距很大。
在這里,可能會(huì)有個(gè)疑問(wèn),上述四個(gè)架構(gòu),都很火,但是哪里涉及到用戶體驗(yàn)了?是的,這些架構(gòu)都沒(méi)有直接涉及到 UI。但是就像足球,沒(méi)有勤奮的訓(xùn)練和優(yōu)秀的戰(zhàn)術(shù),再好的11人也踢不出好的比賽一樣,這些架構(gòu)從開(kāi)發(fā)成本和開(kāi)發(fā)體驗(yàn)上,降低了開(kāi)發(fā)者編碼和維護(hù)的難度,讓其在 UI 的用戶體驗(yàn)上的付出,事半功倍。當(dāng)然,框架在編碼體積、運(yùn)行效率等多個(gè)方面影響了最終的用戶體驗(yàn)。

上面所說(shuō)的是,當(dāng)前前端的一大現(xiàn)狀 —— 框架橫行,現(xiàn)在很少有公司、有工程師用純?cè)嫉姆绞綌]代碼了。而前端另一大現(xiàn)狀就是 —— 移動(dòng)為先。原因很簡(jiǎn)單,隨著移動(dòng)互聯(lián)網(wǎng)用戶的暴漲,各個(gè)公司的產(chǎn)品都是移動(dòng)為先,技術(shù)跟隨著產(chǎn)品的步伐,也必須移動(dòng)為先。這時(shí),為了解決多平臺(tái)的問(wèn)題,Hybrid 方案脫穎而出,包括傳統(tǒng)的基于 WebView 的 Hybrid 方案(例如 Cordova)和 React-Native 等一系列技術(shù)方案。在這里我就不多說(shuō)了,關(guān)于移動(dòng)前端的內(nèi)容最近充斥著各種技術(shù)論壇、交流群、公共號(hào),具體的,大家可以自己親身去了解。
最后,對(duì)于現(xiàn)狀,我想大家可能最關(guān)心的其實(shí)是職業(yè)形勢(shì)。由于前端的興起,前端人才市場(chǎng)相當(dāng)活躍,平均薪金水平也是名列前茅。與此同時(shí),前端的技術(shù)入門(mén)比較容易,造成另一個(gè)極端情況:人員泛濫、人才稀缺。這種情況,一方面由于前端發(fā)展太快,很難短時(shí)間掌握全部知識(shí);另一方面,高等院校并沒(méi)有開(kāi)設(shè)專門(mén)的前端專業(yè),大家更多是自學(xué),野路子很多。所謂亂世出英雄,這樣的前端大環(huán)境或許對(duì)一個(gè)新入行的同學(xué)更有利。當(dāng)然,在如此『亂世』中,一個(gè)好的職業(yè)規(guī)劃,才能避免『誤入歧途』,保證自身順利地成長(zhǎng)。
如何做一個(gè)職業(yè)規(guī)劃
上面講述了前端如何興起和前端的現(xiàn)狀,下面將基于上述兩點(diǎn),分幾個(gè)方面為大家提供一些有關(guān)職業(yè)規(guī)劃的觀點(diǎn),希望對(duì)大家有幫助。
確定方向
做職業(yè)規(guī)劃的目的是避免迷茫,而避免迷茫最有效的方式就是確定明確的方向和目標(biāo)。

對(duì)于任何一個(gè)技術(shù)崗位,都有固定的兩個(gè)方向:技術(shù)專家(架構(gòu)師)和 開(kāi)發(fā)經(jīng)理。前者偏重技術(shù),需要你在當(dāng)前領(lǐng)域鉆研得很深;后者偏向管理,需要你在對(duì)技術(shù)有很深掌握的同時(shí),可以帶領(lǐng)團(tuán)隊(duì)完成項(xiàng)目的開(kāi)發(fā)。當(dāng)然,兩者并不是魚(yú)與熊掌的關(guān)系,你可以同時(shí)成為技術(shù)專家和開(kāi)發(fā)經(jīng)理。
對(duì)于技術(shù)專家和開(kāi)發(fā)經(jīng)理兩個(gè)方向的選擇,更多取決于你自身在工作中多巴胺的分泌情況。當(dāng)你專研技術(shù)時(shí),多巴胺分泌得更多,感到更興奮,或許你會(huì)很容易成為技術(shù)專家;反之,當(dāng)你跟團(tuán)隊(duì)一起做業(yè)務(wù)時(shí),多巴胺分泌得更多,更有獲得感,那么你可以嘗試向開(kāi)發(fā)經(jīng)理方向發(fā)展。
當(dāng)然,你也可能做什么都沒(méi)有分泌太多的多巴胺,那么,你可以在嘗試一段時(shí)間后,轉(zhuǎn)型其他職業(yè),例如產(chǎn)品經(jīng)理。前端作為核心是用戶體驗(yàn),與用戶最近的工程師,轉(zhuǎn)型產(chǎn)品經(jīng)理,阻礙會(huì)小一些。況且,文藝型前端布道人豆瓣前端負(fù)責(zé)人張克軍認(rèn)為,前端工程師正慢慢演變?yōu)楫a(chǎn)品工程師,前端和產(chǎn)品離得確實(shí)很近。
當(dāng)你選擇好一個(gè)方向后,你就要朝著這個(gè)方向一步一步進(jìn)發(fā)。丹尼爾在《一萬(wàn)小時(shí)天才理論》提出一萬(wàn)小時(shí)定律,即要成為某個(gè)領(lǐng)域的專家,需要積累一萬(wàn)小時(shí)。當(dāng)然這只是個(gè)概數(shù),不過(guò)每天花更多的時(shí)間去學(xué)習(xí)和實(shí)踐,肯定是最有效的。這里,成為技術(shù)專家和開(kāi)發(fā)經(jīng)理過(guò)程中,關(guān)注的點(diǎn)略有差別。成長(zhǎng)為技術(shù)專家,要更多關(guān)注技術(shù)本身的實(shí)現(xiàn),包括邏輯、架構(gòu)、設(shè)計(jì)模式、方法論等;而成長(zhǎng)為技術(shù)經(jīng)理,則要更多關(guān)注技術(shù)開(kāi)發(fā)的過(guò)程,考慮如何提高開(kāi)發(fā)效率、降低開(kāi)發(fā)成本、優(yōu)化開(kāi)發(fā)質(zhì)量等等。不同的人,精力是有限的,選擇性關(guān)注一些必要的方面,對(duì)自身快速的成長(zhǎng)是很有必要的。
做業(yè)務(wù)還是做架構(gòu)
做業(yè)務(wù),時(shí)間要求比較緊,代碼質(zhì)量要求高,可參考的代碼比較多,業(yè)務(wù)知識(shí)需要學(xué)習(xí)。做架構(gòu),時(shí)間稍微自由,對(duì)經(jīng)驗(yàn)要求比較高,無(wú)可參考代碼,專業(yè)基礎(chǔ)知識(shí)需要深刻理解;最主要的,做架構(gòu)的你既是開(kāi)發(fā),又是用戶,還是 PM ,只有 80% – 90% 的明確目標(biāo),并在開(kāi)發(fā)過(guò)程中不斷微調(diào)最終的目標(biāo)。
對(duì)于一個(gè)新人,其實(shí)不用糾結(jié),做業(yè)務(wù)才是好的選擇,而且做 技術(shù)含量高、使用流行技術(shù) 的業(yè)務(wù)才是最好的。原因很簡(jiǎn)單,架構(gòu)的最終的目的是解決業(yè)務(wù)當(dāng)中的問(wèn)題,你沒(méi)做過(guò)業(yè)務(wù),哪能知道業(yè)務(wù)的問(wèn)題在哪,你都不知道要解決什么問(wèn)題,如何做好架構(gòu)。所以,從業(yè)務(wù)做起,是新人最好的選擇,也是唯一可行的選擇。而選擇有技術(shù)含量、使用流行技術(shù)的業(yè)務(wù)的原因更多在于成長(zhǎng),這樣你的成長(zhǎng)可能會(huì)更快、成長(zhǎng)道路可能會(huì)更直。當(dāng)然,這只是『可能』,不同的人適合不同的業(yè)務(wù),所以不要強(qiáng)求一定『技術(shù)含量高、使用流行技術(shù)』的業(yè)務(wù),更多的而是改變自己,去 適應(yīng)團(tuán)隊(duì)、適應(yīng)業(yè)務(wù),這樣才能 更快地成長(zhǎng)。
事實(shí)上,很多時(shí)候,你會(huì)遇到很業(yè)務(wù)工作很繁重沒(méi)有額外時(shí)間學(xué)習(xí)的情況。而如何在這樣環(huán)境中更快地成長(zhǎng)呢?說(shuō)白了就是『抄』,不不,是 參考。將學(xué)習(xí)融入到工作中,是最好的方法。做新項(xiàng)目,參考老項(xiàng)目代碼;做新需求,參考老需求的代碼;沒(méi)有同類型的代碼,參考別的業(yè)務(wù)的代碼。參考前人的經(jīng)驗(yàn),在巨人的肩膀上,成長(zhǎng)才會(huì)變得更快。同時(shí),你的導(dǎo)師和你的伙伴,也會(huì)在業(yè)務(wù)中給你指點(diǎn),幫你快速解決成長(zhǎng)路上的問(wèn)題。

在這里,總結(jié)一下,在繁重的業(yè)務(wù)環(huán)境下快速成長(zhǎng),你需要 很優(yōu)秀的學(xué)習(xí)能力、很持久的耐心 以及 很好的導(dǎo)師和伙伴,這樣才能在技術(shù)成長(zhǎng)的路上事半功倍。
技術(shù)的學(xué)習(xí)
說(shuō)了半天,到了最核心的問(wèn)題了,對(duì)于一個(gè)新人如何學(xué)習(xí)技術(shù)?筆者給的建議是:千萬(wàn)不要囫圇吞棗,先把當(dāng)前使用的技術(shù)學(xué)透用熟,才是最重要的;千萬(wàn)不要在還沒(méi)把當(dāng)前使用的技術(shù)吃透之前,去學(xué)新的東西,不管新的東西有多火。就像上文所說(shuō),不同的框架,有不同的核心,有不同的思想。兩個(gè)框架代碼相似之處的思想不一定相似,例如 Angular 和 Vue 都有雙向綁定,雖然效果相似,但是實(shí)現(xiàn)思想和內(nèi)部實(shí)現(xiàn)方式是截然不同的。還在入門(mén)階段的你,會(huì)被各種思想充斥頭腦,反而會(huì)更不清楚。
一定的時(shí)間后,當(dāng)你理解透一個(gè)架構(gòu)體系后,你可以 類比地去看 更多的架構(gòu)體系。這時(shí)候,你會(huì)發(fā)現(xiàn)不同架構(gòu)很多東西都是殊途同歸,理解得很快。

當(dāng)然,理解透一個(gè)架構(gòu)體系,有人需要一年,有人需要三年,還有人可能需要更長(zhǎng)時(shí)間。為什么有這么大的區(qū)別呢?因?yàn)橛行┤嗽陂_(kāi)發(fā)中,并不認(rèn)為完成就可以了,會(huì)在開(kāi)發(fā)中,追求代碼的優(yōu)美,會(huì)不斷優(yōu)化自己的代碼,讓自己的代碼性能更好、可讀性更高,并通過(guò)長(zhǎng)時(shí)間的積累,達(dá)到 量變導(dǎo)致質(zhì)變 的程度。即使一個(gè)特別聰明的人,沒(méi)有『量』也不可能『質(zhì)變』的,只不過(guò)他的量可能比其他人少而已。
要提醒的一點(diǎn)是,學(xué)技術(shù),一定要結(jié)合你所在公司、團(tuán)隊(duì)的技術(shù)棧。例如,去哪兒前端應(yīng)屆生會(huì)在進(jìn)入業(yè)務(wù)線前,進(jìn)行3個(gè)月的脫產(chǎn)培訓(xùn),2017年的前端培訓(xùn)課程內(nèi)容中涉及的技術(shù)主要是 React 和 React Native,而去哪兒業(yè)務(wù)的技術(shù)棧也大多是 React,那么作為去哪兒的前端應(yīng)屆生,你優(yōu)先學(xué)習(xí) React 的技術(shù)體系是事半功倍的,既有前人可以問(wèn),又有項(xiàng)目可以實(shí)踐。
當(dāng)然,在學(xué)習(xí)架構(gòu)的同時(shí),不要忽略兩樣最基本的東西,一個(gè)是 技術(shù)基礎(chǔ),一個(gè)是 開(kāi)發(fā)規(guī)范。
技術(shù)基礎(chǔ)是一切開(kāi)發(fā)、架構(gòu)的前提,沒(méi)有一個(gè)好的基礎(chǔ),是無(wú)法讓你自身的技術(shù)水平達(dá)到足夠高的維度。例如你對(duì)于繼承理解的并不透徹,你很難理解清晰 React 的內(nèi)部實(shí)現(xiàn)。
對(duì)于開(kāi)發(fā)規(guī)范,筆者在帶應(yīng)屆生時(shí)特別注意讓他們遵守。代碼規(guī)范比比皆是,但是很少有人嚴(yán)格遵守。究其原因,多是在代碼規(guī)范制定之前,已經(jīng)有自己的一套代碼習(xí)慣,很難短時(shí)間改變自己的習(xí)慣。而應(yīng)屆生,一般來(lái)說(shuō)代碼并不多,還沒(méi)有形成自己的編碼習(xí)慣。這時(shí)候,開(kāi)始遵守一定的規(guī)范,會(huì)促使他們養(yǎng)成一個(gè)較好的編碼習(xí)慣,為后續(xù)的成長(zhǎng)打好基礎(chǔ)。下面,列舉一下開(kāi)發(fā)規(guī)范的幾點(diǎn)好處,讓大家明白代碼規(guī)范的重要性:
規(guī)范的代碼可以促進(jìn)團(tuán)隊(duì)合作。
規(guī)范的代碼可以減少 Bug 處理。
規(guī)范的代碼可以降低維護(hù)成本。
規(guī)范的代碼有助于代碼審查。
養(yǎng)成代碼規(guī)范的習(xí)慣,有助于程序員自身的成長(zhǎng)。
如果是自學(xué)web前端的話,給以下幾點(diǎn)建議:
1、根據(jù)自己的情況,規(guī)劃一個(gè)合理的學(xué)習(xí)計(jì)劃,學(xué)習(xí)時(shí)長(zhǎng),學(xué)習(xí)內(nèi)容,以及練習(xí)時(shí)間。
2、系統(tǒng)的web前端學(xué)習(xí)教程
3、多實(shí)操,多動(dòng)手,多練習(xí)
4、一周要進(jìn)行知識(shí)點(diǎn)回顧,如果不回顧,不去加深記憶,我保證你會(huì)不斷的忘記之前的
5、找個(gè)專業(yè)的人指導(dǎo),不要異想天開(kāi)覺(jué)得自己可以無(wú)師自通,這不現(xiàn)實(shí),也是對(duì)自己不負(fù)責(zé)任
6、堅(jiān)持每天學(xué)習(xí)不能間斷,準(zhǔn)備好用半年的時(shí)間學(xué)前端,現(xiàn)在競(jìng)爭(zhēng)大,技術(shù)學(xué)不好很難就業(yè)
7、跟比較明白的人請(qǐng)教一下學(xué)前端有哪些坑,避免走太多彎路,掌握好學(xué)習(xí)方法
自學(xué)路線:

基礎(chǔ)篇
HTML,Css,JavaScript,jQuery這是一個(gè)基本前端必須要掌握的,比較簡(jiǎn)單,也是入門(mén)級(jí)技術(shù)。
進(jìn)階篇
Bootstrap,TypeScript ,JSON,jQuery EasyUI,jQuery UI等一些第三方j(luò)s庫(kù)。稍有難度,前期可以基本了解一下,方便面試,工作中使用再去研究。
高級(jí)篇
Vue,React,Angular前端主流三大框架,熟悉一個(gè),了解兩個(gè)。服務(wù)器語(yǔ)言node.js學(xué)習(xí)一下,版本管理工具,git,svn學(xué)習(xí)了解。
主戰(zhàn)場(chǎng) —— 移動(dòng)混合開(kāi)發(fā)
隨著移動(dòng)浪潮的興起,業(yè)務(wù)在移動(dòng)端App 的需求量迅速擴(kuò)大,應(yīng)用迭代更新的頻率也隨之極速攀升,但與此同時(shí)純 Native 的開(kāi)發(fā)和更新成本成為了業(yè)務(wù)增長(zhǎng)難以逾越的瓶頸。因此,引入一種開(kāi)發(fā)更高效、成本更低的解決方案勢(shì)在必行。

在當(dāng)前的移動(dòng)互聯(lián)網(wǎng)環(huán)境下,iOS 和 Android 上的 App 已經(jīng)成了每個(gè)互聯(lián)網(wǎng)產(chǎn)品的標(biāo)配。如果一個(gè)用戶端產(chǎn)品并不提供相應(yīng) App 版本,幾乎會(huì)直接定義成一個(gè)不完整的產(chǎn)品。而被互聯(lián)網(wǎng)人尊為鐵律的『唯快不破』—— 快速開(kāi)發(fā)、高速迭代、低成本上線,同時(shí)也是移動(dòng)時(shí)代每個(gè)開(kāi)發(fā)團(tuán)隊(duì)所追求的目標(biāo)。綜合以上兩點(diǎn)原因,『Native 搭臺(tái),Web 唱戲』的 Hybrid 開(kāi)發(fā)模式,以『快』的特點(diǎn)贏得了大家的青睞,并紛紛投入大量開(kāi)發(fā)力量,使這種開(kāi)發(fā)模式迅速走紅。當(dāng)前最常見(jiàn)的技術(shù)架構(gòu)方案有以下三種:
基于 Web 的 Hybrid 解決方案:例如微信瀏覽器、各公司的 Hybrid 方案
非基于 Web UI 但業(yè)務(wù)邏輯基于 JavaScript 的解決方案:例如 React-Native
基于 Web UI,但是為了追求運(yùn)行效率,對(duì) UI 展現(xiàn)邏輯和業(yè)務(wù)邏輯的 JavaScript 進(jìn)行了隔離的解決方案:微信小程序
對(duì)于一個(gè)前端,筆者感覺(jué)每個(gè)人必須了解這三種常見(jiàn)方案的實(shí)現(xiàn)方式和優(yōu)缺點(diǎn),這樣才能在開(kāi)發(fā)移動(dòng)端業(yè)務(wù)的時(shí)候,更為清楚自己所要注意、所要學(xué)習(xí)的地方。當(dāng)然,僅僅了解實(shí)現(xiàn)方式是不夠的,你要有環(huán)境去實(shí)踐你學(xué)習(xí)的東西。再拿去哪兒為例,去哪兒現(xiàn)在大多數(shù)業(yè)務(wù)都是移動(dòng)端的,Hybrid 和 RN 方案都在被使用。所以,作為一個(gè)應(yīng)屆生,你很有可能去做一些 Hybrid 或者 RN 的項(xiàng)目。做 Hybrid 項(xiàng)目時(shí),你更多要考慮的是『如何高效地操作 Dom』;反之,做 RN 項(xiàng)目,你更多要考慮的則是『如何減少和 Native 的通信』。這兩點(diǎn),最終都會(huì)反應(yīng)在項(xiàng)目的用戶體驗(yàn)上。

這里,會(huì)出現(xiàn)一個(gè)問(wèn)題,我只是前端,需不需要去學(xué)習(xí) Node?筆者的答案是 需要。前端興起已經(jīng)很多年,已經(jīng)從游擊隊(duì)亂槍打鳥(niǎo)的階段逐漸變?yōu)橐?guī)?;?、工程化的時(shí)代。在這個(gè)時(shí)代中,尤其是在工具和流程方面,Node 起到了很大的作用,扮演很重要的角色。諸如 Webpack、Gulp、NPM 這些工具,他們被運(yùn)用在各個(gè)公司的各類前端項(xiàng)目中。學(xué)習(xí) Node 其實(shí)就是去學(xué)習(xí)前端的工具,去學(xué)習(xí)前端的工程化。
我目前是在職前端開(kāi)發(fā),如果你現(xiàn)在也想學(xué)習(xí)前端開(kāi)發(fā)技術(shù),在入門(mén)學(xué)習(xí)前端的過(guò)程當(dāng)中有遇見(jiàn)任何關(guān)于學(xué)習(xí)方法,學(xué)習(xí)路線,學(xué)習(xí)效率等方面的問(wèn)題,你都可以申請(qǐng)加入我所在的前端學(xué)習(xí)交流裙:前面:42137 后面:4697。里面聚集了一些正在自學(xué)前端的初學(xué)者,轉(zhuǎn)行者,初階者,里面也有我整理的一些前端書(shū)籍PDF、前端面試題、前端開(kāi)發(fā)源碼教程等PDF文檔書(shū)籍教程,需要的話都可以找裙豬獲取。