飛天舞88
在沒有接觸IT行業(yè)之前,也不知道web前端工程師具體是做什么的,只是認(rèn)為這個行業(yè)的薪資待遇很高,想要加入進(jìn)去,成為web前端工程師。Web前端主要是用來開發(fā)用戶通過瀏覽器可以瀏覽和使用的Web頁面的。IT培訓(xùn)認(rèn)為在一般情況下會是W3C中的HTML、CSS和Java這三方面的內(nèi)容。但是隨著現(xiàn)在IT行業(yè)的不斷發(fā)展,web前端也在不斷的更新當(dāng)中。前端目前所涉及到的內(nèi)容也不會是現(xiàn)在這么幾點,會出現(xiàn)更廣闊的方面。前端工程師相對于IT行業(yè)的其它工程師還是比較容易的,對于那些沒有什么基礎(chǔ)又想從事這個行業(yè)的人來說,你可以先從前端學(xué)起,前端還是比較容易接受的。前期對于很多人來說是一個容易的過程,web前端是一個先易后難得過程,主要包含三個方面HTML、CSS和Java。這就要求web前端工程師在后期需要學(xué)習(xí)很多的知識,不僅要掌握基本的Web前端開發(fā)技術(shù),網(wǎng)站性能優(yōu)化、SEO和服務(wù)器端的基礎(chǔ)知識,而且要學(xué)會運用各種工具進(jìn)行輔助開發(fā)以及理論層面的知識,包括代碼的可維護(hù)性、組件的易用性、分層語義模板和瀏覽器分級支持等。
眼角落下的淚
Web前端靈活多變,能夠直觀看到成果,所以成就感更容易體現(xiàn),學(xué)習(xí)起來也會相對輕松。Java被稱為最穩(wěn)定的語言,應(yīng)用最為廣泛,無論是一線城市還是二三線城市的崗位需求都比較大,容易找到工作,但入行門檻相對更難。你也可從以下三個方面來作為參考:
工作方向:
Java開發(fā)Java作為編程語言中最熱門的技術(shù),可謂無處不在。無論是生活軟件、游戲還是電腦軟件,從你的每一次購物到每一筆支付的成功,都離不開Java,越來越多的企業(yè)也正采用Java語言開發(fā)網(wǎng)站,而在所有程序員中,Java開發(fā)工程師就占據(jù)了30%的比例。Java語言具有面向?qū)ο?、跨平臺、安全性、多線程等特點,這使得Java成為許多應(yīng)用系統(tǒng)的理想開發(fā)語言。學(xué)完Java可以:
1.編寫網(wǎng)站。Java可以用來編寫網(wǎng)站,現(xiàn)在很多大型網(wǎng)站都用JSP寫的,JSP全名JavaServerPages它是一種動態(tài)網(wǎng)頁技術(shù),比如我們熟悉的163,一些政府網(wǎng)站都是采用JSP編寫的。所以學(xué)習(xí)Java的同學(xué)可以找開發(fā)網(wǎng)站方面的工作,而且現(xiàn)在找這方面的崗位比較多。比如:網(wǎng)站開發(fā)大多使用JSP、Servlet、JavaBean這些技術(shù)。
2.做Android。Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),其源代碼是Java。所以市場上見到的手機(jī)系統(tǒng)例如MIUI,阿里云,樂蛙等,都是修改源代碼再發(fā)行的。Java做安卓不單單是指系統(tǒng),還有APP,對于更多的開發(fā)人員來說,他們更多的時間是花在開發(fā)APP上面。
3.游戲開發(fā)。在以前諾基亞還很流行的時候,你玩的手機(jī)游戲有90%以上都是Java開發(fā)的。PC端也有Java開發(fā)的游戲,比如:《我的世界》(minecraft,簡稱MC),《英雄聯(lián)盟》(簡稱LoL)等等。
4.大數(shù)據(jù)。都說現(xiàn)在是數(shù)據(jù)時代。各種大數(shù)據(jù)技術(shù)層出不窮。目前處理大數(shù)據(jù)的技術(shù)有python,Java,R等。雖然說Java沒有絕對的優(yōu)勢,但同樣也是一大霸主。
5.做企業(yè)軟件。企業(yè)級應(yīng)用開發(fā)大多使用Java語言,大到全國聯(lián)網(wǎng)的系統(tǒng),小到中小企業(yè)的應(yīng)用解決方案,Java都占有極為重要的地位。
另外,Java在人工智能、科學(xué)計算等領(lǐng)域也有一定的應(yīng)用。Java已成為當(dāng)今市面上最受歡迎的編程語言了,可以說只要你使用手機(jī)、電腦等電子產(chǎn)品,你就會用到跟Java有關(guān)的東西。
Web前端
網(wǎng)站的“前端”是與用戶直接交互的部分,包括你在瀏覽網(wǎng)頁時接觸的所有視覺內(nèi)容--從字體到顏色,以及下拉菜單和側(cè)邊欄,這些視覺內(nèi)容,都是由瀏覽器解析、處理、渲染后呈現(xiàn)而來。從狹義上講,前端工程師使用HTML5、CSS、JavaScript等專業(yè)技能和工具將產(chǎn)品UI設(shè)計稿實現(xiàn)成網(wǎng)站產(chǎn)品,涵蓋用戶PC端、移動端網(wǎng)頁,處理視覺和交互問題。從廣義上來講,所有用戶終端產(chǎn)品與視覺和交互有關(guān)的部分,都是前端工程師的專業(yè)領(lǐng)域。Web前端工程師在企業(yè)里主要負(fù)責(zé)以下三方面的工作:
1.網(wǎng)站設(shè)計;
2.網(wǎng)頁界面開發(fā);
3.前臺數(shù)據(jù)綁定和前臺邏輯的處理;
技術(shù)知識:
Java開發(fā)
1、Web前端技術(shù)(HTML5、CSS、JS、jQuery、Ajax)
2、互聯(lián)網(wǎng)架構(gòu)(Nginx、Redis、MQ)
3、JavaEE三大核心框架(Spring,SpringMVC,MyBatis)
4、Web服務(wù)器端編程(Java基礎(chǔ)、Servelt、SSH、SSM)
5、數(shù)據(jù)庫技術(shù)(Orale、MySQL、JDBC、DAO)
貓與老虎
前端領(lǐng)域發(fā)展很快,各種新技術(shù)新思想不斷涌現(xiàn),這是一個好現(xiàn)象。
但是前端發(fā)展太快也帶來一些問題,比如有同學(xué)就問到我究竟應(yīng)該學(xué)些什么,、React、、ES6、ES7、CoffeeScript、TypeScript??似乎永遠(yuǎn)有太多東西需要學(xué)習(xí),有些東西好像還沒學(xué)明白就被另一些新的技術(shù)取代而“過時了”。
1
我們需要知道前端工程師是做什么?
前端工程師是互聯(lián)網(wǎng)時代軟件產(chǎn)品研發(fā)中不可缺少的一種專業(yè)研發(fā)角色。
從狹義上講,前端工程師使用HTML、CSS、javaScript等專業(yè)技能和工具將產(chǎn)品UI設(shè)計稿實現(xiàn)成網(wǎng)站產(chǎn)品,涵蓋用戶PC端、移動端網(wǎng)頁,處理視覺和交互問題。
從廣義上來講,所有用戶終端產(chǎn)品與視覺和交互有關(guān)的部分,都是前端工程師的專業(yè)領(lǐng)域。
2
那么,前端工程師需要什么樣的知識和技能?
有人說前端工程師的技術(shù)棧是這樣的:
還有人說是這樣的:
實際上前端工程師最核心的技能還是:
在一個典型的互聯(lián)網(wǎng)公司的產(chǎn)品研發(fā)流程中,前端工程師和其他角色的關(guān)系大致上是這樣的:
前端是最接近產(chǎn)品和設(shè)計的工程師,起到銜接產(chǎn)品和技術(shù)的作用,前端為用戶可以看到的部分負(fù)責(zé),所以也是最接近用戶的工程師。
在多終端的時代,如果一個產(chǎn)品同時支持PC、移動端,前端工程師還需要和更多的角色打交道:
JavaScript對于前端是最重要的技能,所以優(yōu)秀的前端工程師要有扎實的JavaScript基本功。
而JavaScript這門編程語言也是目前程序設(shè)計領(lǐng)域炙手可熱的寵兒,如今的它不僅僅只是用來開發(fā)Web,還可以用在各個方面。
JavaScript可以用在“樹莓派”這類智能硬件芯片開發(fā)
前端工程師也是軟件工程師,所以軟件工程師的基礎(chǔ)知識也是非常重要的,這些基礎(chǔ)知識包括:
數(shù)學(xué)
計算機(jī)體系
操作系統(tǒng)
數(shù)據(jù)結(jié)構(gòu)和算法
編譯原理
HTML和CSS也是前端工程師非常重要的基本功,很多同學(xué),尤其是喜歡寫代碼的同學(xué)容易忽視MarkupLanguage,實際上ML也是UI相關(guān)的領(lǐng)域里面很重要的內(nèi)容,不應(yīng)該被忽視。
HTML:TheLivingStandard
HTML&CSS
3
有同學(xué)問說:“前端工作需求很多,老是改來改去,實際的技術(shù)點并沒有多少,產(chǎn)品決定業(yè)務(wù)邏輯,從事底層基礎(chǔ)服務(wù)會不會更有挑戰(zhàn)和職業(yè)未來?”
的確,越貼近業(yè)務(wù)和產(chǎn)品層面上的工作,需求差異性越大,可能改動越頻繁。
不僅僅是前端改來改去,PHP服務(wù)端做業(yè)務(wù)的同學(xué)也面臨這樣的問題,業(yè)務(wù)邏輯改來改去。
越底層通用性越強,改動相對較少。
不過事情都是有兩面性的,首先可以這么想想,是底層基礎(chǔ)服務(wù)的市場大還是互聯(lián)網(wǎng)業(yè)務(wù)和產(chǎn)品的市場大。
其次,基礎(chǔ)服務(wù)的通用性很容易達(dá)成,而產(chǎn)品層面上如何通用化,如何在業(yè)務(wù)驅(qū)動的產(chǎn)品研發(fā)中利用工程化和工具化提升開發(fā)效率,這其實是一個很難的問題。
豐富的互聯(lián)網(wǎng)產(chǎn)品已改變和正在改變著我們的生活,然而作為產(chǎn)品的創(chuàng)造者,工程師們怎樣讓自己過得更好,這個領(lǐng)域值得研究。
另外,不要覺得實際的技術(shù)點沒有多少。
舉幾個例子:實現(xiàn)曲線和曲面動畫,計算地圖的最短路徑,讓png靜態(tài)圖片類似于gif圖一樣做局部的運動,抽獎游戲,物理效果的HTML5游戲,3D圖表,增強現(xiàn)實的WebGL視頻流處理等等,這些都是在前端領(lǐng)域中遇到的實際問題。
就JavaScript來說,在實際項目中設(shè)計最合適的模型高效率解決現(xiàn)實問題本身就很有挑戰(zhàn)。
作為一種典型的新生代編程語言,JavaScript特性豐富,使用靈活,性能優(yōu)良。
面向?qū)ο?、函?shù)式編程、各種設(shè)計模式、MVC和MVVM,這些本身就有足夠的吸引力。
前端要解決界面和交互問題,實際上UI層面上的問題一直是軟件工程方面的一個難題,因為UI不停地在變化。
瀏覽器各個版本的兼容性、Web標(biāo)準(zhǔn)、移動設(shè)備、多終端適配,給了前端工程師很大的挑戰(zhàn),對前端工程師的能力也有很高的要求。
許多UI問題有不只一種解決方法,許多問題有非常巧妙的思路和精彩的解決辦法,前端在工程師群體里是屬于非常有創(chuàng)造力的一個群體,因為這個行業(yè)需要豐富的創(chuàng)造力和想象力。
前端工程師還是Web標(biāo)準(zhǔn)的制定者、實踐者和推動者,而現(xiàn)在的W3C標(biāo)準(zhǔn)不僅僅局限于瀏覽器,還包括各種手持智能設(shè)備,車載設(shè)備、智能家居等等。
在未來萬物互聯(lián)的時代,前端將不僅僅是網(wǎng)頁上的工程師,而是所有人機(jī)交互領(lǐng)域的工程師。
優(yōu)質(zhì)工程師考試問答知識庫