? ?
經(jīng)常有朋友問(wèn)我略荡,阿晨啊庵佣,我馬上就要去就業(yè)了,應(yīng)該選擇什么前端還是后端啊汛兜,或者是一些學(xué)生小伙伴們?cè)谛F陂g想學(xué)習(xí)技術(shù)巴粪,也是拿不準(zhǔn)方向。今天就這這里和大家仔細(xì)的聊聊前端和后端的優(yōu)劣粥谬。
那我們現(xiàn)在就先來(lái)分析一下前后端在所用的技術(shù)棧上的區(qū)別肛根。前端所用的技術(shù)棧,其實(shí)一路以來(lái)漏策,發(fā)展歷經(jīng)了幾大階段派哲。第一大階段其實(shí)就是所謂的“基礎(chǔ)靜態(tài)頁(yè)面階段”,用的就是Html JavaScrip等三大原生技術(shù)掺喻。而第二個(gè)階段就是所謂的叫“前端技術(shù)庫(kù)的出現(xiàn)”芭届,這也就是前端的第一個(gè)春天储矩,其中最有名的當(dāng)屬jQuery和Ajax,這就是階段二喉脖。封裝庫(kù)的出現(xiàn)或者是說(shuō)前端庫(kù)的出現(xiàn)主要是解決了瀏覽器的原生AIP不好用和兼容性的問(wèn)題椰苟,而Query等庫(kù)其實(shí)也就是對(duì)原生API做了第二個(gè)封裝,使其更加便于開發(fā)和掌握树叽,然后前端發(fā)展到如今這個(gè)時(shí)代舆蝴,也就是所謂的“前端革命”來(lái)到了“組件化開發(fā)”的時(shí)代,這主要是因?yàn)閚ode的出現(xiàn)讓前端領(lǐng)域發(fā)生了巨大的改變题诵,前端開發(fā)者可以借助node來(lái)開發(fā)各種工具了洁仗,這就好像那些原始人突然會(huì)使用制造工具了一樣,前端脫離了那種刀耕火種的年代性锭,因?yàn)楹芏嘧詣?dòng)化工具赠潦,比如像什么webpack還有什么各種各樣的包管理器,還有像什么預(yù)編譯工具草冈,這些東西的出現(xiàn)在一定程度上催生了一大批的前端框架誕生她奥,最典型的現(xiàn)在前端領(lǐng)域三足鼎立的“組件開發(fā)三件套”Angular React和Ven(三大框架),這都是因?yàn)閚ode的出現(xiàn)怎棱,才有了一些組件化開發(fā)框架的到來(lái)哩俭。這種組件化開發(fā)的模式將白了其實(shí)就是利用GPS的智能可編程性來(lái)管理Html和Css甚至包括JS本身,當(dāng)然最近幾年來(lái)隨著移動(dòng)端的興起像Html5拳恋,也就是H5也變得非常的火熱凡资。總之我們會(huì)發(fā)現(xiàn)前端開發(fā)其實(shí)越來(lái)越工具化谬运,工程化隙赁,越來(lái)越有章可循,這些就是前端開發(fā)的特點(diǎn)梆暖。但是像Vue這種組件化開發(fā)方式還是需要你掌握js伞访,css,html等這一些原生技術(shù)轰驳,只不過(guò)游戲規(guī)則方式了變化咐扭,你的遵循人家的那個(gè)組件框架制定出來(lái)的這個(gè)游戲規(guī)則來(lái)進(jìn)行約束性的前端開發(fā),因?yàn)檫@樣的話滑废,你的代碼的管理性,可復(fù)用性袜爪,工程性就越來(lái)越好蠕趁,越來(lái)越合理,前端技術(shù)棧也就是這樣的辛馆。然后是后端技術(shù)棧俺陋,以java后端開發(fā)為例豁延,主要就是java語(yǔ)言,spring應(yīng)用框架腊状,sql關(guān)系型數(shù)據(jù)庫(kù)诱咏,nosql非關(guān)系型數(shù)據(jù)庫(kù),中間鏈技術(shù)缴挖,分布式和現(xiàn)在比較流行的微服務(wù)等等袋狞。后面我會(huì)專門的出一篇文字來(lái)說(shuō)這個(gè)。
現(xiàn)在我就來(lái)說(shuō)說(shuō)前端和后端哪一個(gè)比較難呢映屋?這個(gè)也要結(jié)合前后端的特點(diǎn)來(lái)講苟鸯,我是覺(jué)得前端主要是知識(shí)很多,很雜棚点,很瑣碎早处,再就是前端的門檻也比較低一些,容易自學(xué)瘫析,因?yàn)樗吘怪皇菃蝹€(gè)客戶端的事情砌梆。它并不想后端一樣需要一個(gè)很復(fù)雜的編程環(huán)境,就拿后端假如你想做分布式和微服務(wù)贬循,你需要提前安裝各種各樣的編譯環(huán)境和軟件咸包,要裝各種各樣的組件,搭建各種各樣的環(huán)境甘有。但是前端則不需要诉儒,上手的門檻還是要低一些,然后就是前端還有一個(gè)特點(diǎn)就是出效果快一些亏掀,激勵(lì)周期會(huì)短一些(成就感來(lái)的更快)忱反,畢竟所見(jiàn)即所得,然后前端發(fā)展很快滤愕,但是軌道基本上還是一致的温算,那些三大階段都脫離不了js,css间影,html這些基本的技術(shù)注竿,所以說(shuō)我是覺(jué)得上手的門檻要低一些。然后后端的開發(fā)主要是注重功能性和穩(wěn)定性魂贬,尤其是穩(wěn)定性要求比較高巩割,所以基于這一點(diǎn)就可以把技術(shù)研究的很深,然后后端開發(fā)付燥,現(xiàn)在的分鐘和門類也很多宣谈,業(yè)務(wù),算法键科,架構(gòu)等等闻丑,而后端開發(fā)漩怎,比較煩的一點(diǎn)就是后端開發(fā)比較難學(xué),學(xué)著學(xué)著容易有瓶頸嗦嗡,主要是因?yàn)榭赡苓€是業(yè)務(wù)量不夠勋锤,因?yàn)槠鋵?shí)很多小公司在業(yè)務(wù)量不夠的情況下,很多java后臺(tái)開發(fā)侥祭,你做著做著就容易會(huì)變成一條“咸魚”叁执,容易被人家構(gòu)建技術(shù)壁壘,跟那些大公司的后端開發(fā)拉開差距卑硫,主要還是因?yàn)闃I(yè)務(wù)量不夠徒恋,所以說(shuō)后端也有它困擾的地方。? ? ? ? ? ? ? ?
那后端和前端到底應(yīng)該選那個(gè)呢欢伏?
這個(gè)我覺(jué)得應(yīng)該從幾個(gè)實(shí)際的角度來(lái)考慮入挣。第一個(gè)就是薪資方面,我特地去boss直聘搜了一下前后端開發(fā)工程師的工資實(shí)際上還是差不多的硝拧,而崗位數(shù)量實(shí)際上也差不多径筏,需求量也差不多,在我們這邊我甚至還覺(jué)得前端的需要比后端還要多障陶。
然后再就是前后端各種以后發(fā)展的前景怎么樣呢滋恬?我是覺(jué)得前端和后端以后的發(fā)展也差不多,因?yàn)榍岸爽F(xiàn)在也是那種走工程化抱究,走這種可復(fù)用性然后那個(gè)越來(lái)越自動(dòng)化的這個(gè)路子吧恢氯,后端你也是這個(gè)樣子,所以說(shuō)前后端的發(fā)展某一階段也在慢慢的趨同鼓寺,所以發(fā)展前景我是覺(jué)得都差不多的勋拟。
到底怎么選呢?
我是覺(jué)得要從兩個(gè)重要的方面妈候,第一個(gè)就是你自己的興趣敢靡,我是覺(jué)得興趣是第一樣,這種還是要看你內(nèi)心的偏向的苦银,像我這樣啸胧,我是覺(jué)得我對(duì)前端沒(méi)有什么美感,沒(méi)什么審美幔虏。第二就是要看你的現(xiàn)狀纺念,也就是看你當(dāng)下所學(xué)的技術(shù),如果你對(duì)前端比較了解一點(diǎn)的話想括,那你就可以去走前端這個(gè)方向陷谱,如果你是學(xué)java或者是你學(xué)spring或者你學(xué)這些后端技術(shù)棧比較了解的話,那你就做后端好了主胧。有人就說(shuō)叭首,可是我現(xiàn)在對(duì)什么也沒(méi)興趣,那你去學(xué)java踪栋,因?yàn)檫€可以多看看我的文章焙格。所以說(shuō)大家還是更具自己的實(shí)際情況去選擇吧。
總之希望對(duì)大家有幫助夷都,如果需要更多關(guān)于java和前端資料的眷唉,可以私聊我哦!