前端領域發(fā)展很快,各種新技術新思想不斷涌現(xiàn),這是一個好現(xiàn)象。
但是前端發(fā)展太快也帶來一些問題,比如有同學就問到我究竟應該學些什
么,Angular.js、React、Node.js、ES6、ES7、Coffeescript、Typescript……似乎永遠有太多東西需要學習,有些東西好像還沒學明白就被另一些新的技術取代而“過時了”。
1
我們需要知道前端工程師是做什么?
前端工程師是 互聯(lián)網(wǎng)時代軟件產(chǎn)品研發(fā)中不可缺少的一種專業(yè)研發(fā)角色。
從狹義上講,前端工程師使用 HTML、CSS、javascript
等專業(yè)技能和工具將產(chǎn)品UI設計稿實現(xiàn)成網(wǎng)站產(chǎn)品,涵蓋用戶PC端、移動端網(wǎng)頁,處理視覺和交互問題。
從廣義上來講,所有用戶終端產(chǎn)品與視覺和交互有關的 部分,都是前端工程師的專業(yè)領域。
2
那么,前端工程師需要什么樣的知識和技能?
有人說前端工程師的技術棧是這樣的:
<img src="http://m.bullseyehunting.com/file/upload/202305/26/013224681.png" title="成為JavaWeb工程師要掌握哪些技能"JavaWeb工程師需要掌握哪些技術?】" alt="【成為JavaWeb工程師需要掌握哪些技術?】">
還有人說是這樣的:
實際上前端工程師最核心的技能還是:
在一個典型的互聯(lián)網(wǎng)公司的產(chǎn)品研發(fā)流程中,前端工程師和其他角色的關系大致上是這樣的:
前端是最接近產(chǎn)品和設計的工程師,起到銜接產(chǎn)品和技術的作用,前端為用戶可以看到的部分負責,所以也是最接近用戶的工程師。
在多終端的時代,如果一個產(chǎn)品同時支持PC、移動端,前端工程師還需要和更多的角色打交道:
Javascript 對于前端是最重要的技能,所以優(yōu)秀的前端工程師要有扎實的Javascript基本功。
而Javascript這門編程語言也是目前程序設計領域炙手可熱的寵兒,如今的它不僅僅只是用來開發(fā)Web,還可以用在各個方面。
Javascript 可以用在“樹莓派”這類智能硬件芯片開發(fā)
前端工程師也是軟件工程師,所以軟件工程師的基礎知識也是非常重要的,這些基礎知識包括:
數(shù)學
計算機體系
操作系統(tǒng)
數(shù)據(jù)結(jié)構(gòu)和算法
編譯原理
HTML和CSS也是前端工程師非常重要的基本功,很多同學,尤其是喜歡寫代碼的同學容易忽視 Markup Language,實際上 ML 也是 UI
相關的領域里面很重要的內(nèi)容,不應該被忽視。
HTML: The Living Standard
HTML & CSS
3
有同學問說:“前端工作需求很多,老是改來改去,實際的技術點并沒有多少,產(chǎn)品決定業(yè)務邏輯,從事底層基礎服務會不會更有挑戰(zhàn)和職業(yè)未來?”
的確,越貼近業(yè)務和產(chǎn)品層面上的工作,需求差異性越大,可能改動越頻繁。
不僅僅是前端改來改去,PHP服務端做業(yè)務的同學也面臨這樣的問題,業(yè)務邏輯改來改去。
越底層通用性越強,改動相對較少。
不過事情都是有兩面性的,首先可以這么想想,是底層基礎服務的市場大還是互聯(lián)網(wǎng)業(yè)務和產(chǎn)品的市場大。
其次,基礎服務的通用性很容易達成,而產(chǎn)品層面 上如何通用化,如何在業(yè)務驅(qū)動的產(chǎn)品研發(fā)中利用工程化和工具化提升開發(fā)效率,這其實是一個很難的問題。
豐富的互聯(lián)網(wǎng)產(chǎn)品已改變和正在改變著我們的生活,然 而作為產(chǎn)品的創(chuàng)造者,工程師們怎樣讓自己過得更好,這個領域值得研究。
另外,不要覺得實際的技術點沒有多少。
舉幾個例子:實現(xiàn)曲線和曲面動畫,計算地圖的最短路徑,讓png靜態(tài)圖片類似于gif圖一樣做局部的運動,抽獎游戲,物理效果的HTML5游戲,3D圖表,增強現(xiàn)實的WebGL視頻流處理等等,這些都是在前端領域中遇到的實際問題。
就 Javascript 來說,在實際項目中設計最合適的模型高效率解決現(xiàn)實問題本身就很有挑戰(zhàn)。
作為一種典型的新生代編程語言,Javascript 特性豐富,使用靈活,性能優(yōu)良。
面向?qū)ο蟆⒑瘮?shù)式編程、各種設計模式、MVC 和 MVVM,這些本身就有足夠的吸引力。
前端要解決界面和交互問題,實際上UI層面上的問題一直是軟件工程方面的一個難題,因為UI不停地在變化。
瀏覽器各個版本的兼容性、Web 標準、移動設備、多終端適配,給了前端工程師很大的挑戰(zhàn),對前端工程師的能力也有很高的要求。
許多UI問題有不只一種解決方法,許多問題有非常巧妙的思路和精彩的解決辦法,前端在工程師群體里是屬于非常有創(chuàng)造力的一個群體,因為這個行業(yè)需要豐富的創(chuàng)造力和想象力。
前端工程師還是Web標準的制定者、實踐者和推動者,而現(xiàn)在的W3C標準不僅僅局限于瀏覽器,還包括各種手持智能設備,車載設備、智能家居等等。
在未來萬物互聯(lián)的時代,前端將不僅僅是網(wǎng)頁上的工程師,而是所有人機交互領域的工程師。
java培訓班小結(jié):
其實還是那句話,前端工程師首先是軟件工程師,基礎是最重要的,如果基礎不扎實,一切應用技能就都是“浮云”。
前端的基礎是什么?
HTML、CSS、Javascript基本功,數(shù)學、算法、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、編譯原理基本功。
一個優(yōu)秀的前端工程師必須要有自己擅長的領域,并且鉆研得足夠深入,同時要有眼界,能“跨界”。
可以以前端作為職業(yè),但千萬不要把自己的技能限制在前端領域,因為有很多東西,只有站在前端之外,才能看得更清晰,更透徹。