聊聊前端(一)

初衷

最近在知乎和微信有不少朋友私信我,特別是很多即將畢業的大學生都在問我很多關於前端的問題,所以借開年之際挑問的比較多的問題一起回答下,希望對大家有幫助,說的不對的也歡迎大家指正。

我目前讀大一,我希望以後能做一名前端工程師,但學校沒有相關課程,我應該做哪些準備呢?

這個問題是很多想畢業從事前端相關工作的大學生的困惑,先解釋下為什麼高校沒有前端課程,前端實際上是一種特殊的(基於browser)的GUI(圖形化編程),它更偏工程和應用級別,本來應用級別的課程在大學就偏少,大學還是以計算機導論,高等數學,操作系統,離散數學,數據結構等基礎課程為主,另外有些大學有c++,java這些應用級別的課程,相比之下前端年輕+發展迅速+更新快,這些特性使高校難以決策怎麼開前端工程,不過好在隨著前端的發展,許多畢業生就業前端的比例的增加,前端在公司的重要性提升,高校已經對前端逐漸重視起來,越來越多的高校開始邀請前端業界有影響力的人去上公共課,我堅信未來大學課程裡面會有《EcmaScript發展史》,《瀏覽器》,《前端工程》,《webkit內核》等偏前端基礎理論的課程,前端工程師去高校任職也會變成可能。

所以到目前大學裡沒有前端課程還是很普遍的現象,大家不需要焦慮,只要在大學幾年中努力學好理論課程,再自學下js,css,html,自己嘗試開發一些網站或h5,多關注前端社區的發展,有條件多參與一些前端大會之類的,如果能有機會進入一家公司實習那是再好不過了,對於大學沒有前端這門課程的事情大家都有目共睹,做為用人單位也非常理解,所以在選拔畢業生的時候更多的是考查基礎知識以及邏輯思維能力,前端只是略帶一下。

為什麼都說「一入前端深似海」?

很多想從事前端的朋友會問我這個問題,先聊聊瀏覽器兼容吧,這是很多前端工程師的苦惱,因為每次開發項目他們都為此花了大量的時間和精力,前端實際是運行在瀏覽器內的技術,問題就是出現在這兒,各個巨頭公司開發的瀏覽器內核由於實現標準不一致(即使是同一個內核的因為版本不一致也有些不同)導致了大家寫的js,css在不同內核的瀏覽器下解析的也不一致,由於瀏覽器除了內核之外還做了許多二次開發,所以不同瀏覽器即使內核一樣,它們對js,css的解析也可能不同。 比如做一個h5頁面,我們除了要解決它在不同手機廠商(蘋果,小米,三星,華為)所實現的默認瀏覽器下(不同版本的操作系統瀏覽器版本也不同)的兼容問題外,還要解決有大量用戶使用的app(比如微信,uc,微博)在這些手機上自行實現的瀏覽器的兼容問題。比如我們做一個pc頁面,我們也要解決他們在ie8,ie9,ie10,ie11,firefox,360,chrome,搜狗等不同瀏覽器下的展現問題,雖然現在市面上有些框架解決了部分兼容問題(這個話題可以下次聊),但目前瀏覽器兼容還是沒有一個完美的解決方案,還是很多前端工程師的痛點。所以很多大學生畢業後本以為自己有好的計算機理論基礎,本以為自己能很好的理解前端基礎,但是對於瀏覽器兼容方面都花了很長時間來積累,這些經驗都是無法在課堂和書上學到而是需要自己體會的。

瀏覽器兼容方面只是算純前端的領域,前端發展到今天,除了技術本身之外,前端崗位的職責也發生了很大變化,現在的前端工程師不止要解決瀏覽器下的頁面展現問題,還要解決前端對應的伺服器的問題,因為微服務的大量應用,大部分公司已經將後端邏輯與前端頁面分開部署了,後端提供的介面往往都需要一個前端伺服器轉接一下,前端伺服器一般是由前端工程師維護,有些公司為了降低前端工程師對於服務端的學習成本,引入了nodejs(用js寫後端),但對於一些剛開始做前後端分離的公司,由於歷史問題,很可能需要前端熟悉java以及php等其他後端語言。現在大部分公司都有app,為了開發成本以及發布靈活,大部分都會使用hybrid方式,即app會內嵌一些h5頁面,這些頁面除了完成自身功能外,還需要調用native的很多特性,還要去了解native下webview的緩存策略和原理,如果想重用這些頁面單獨在微信或手機默認瀏覽器下運行還需要做很多適配工作。

現在公司使用cdn已經是標配,但我們玩cdn還需要解決一系列的問題,這個問題可以直接參考之前張雲龍大神的文章。大公司里怎樣開發和部署前端代碼?

現在流行的小程序也都是每個公司前端工程師來承擔,對於一些金融行業的公司,前端還需要了解很多安全相關的技術,還有現在流行各種框架,越發展到後面,前端工程師需要掌握的技能越多,前端工程師要始終保持對技術的熱情。還有很多沒聊到的技術上的痛點,下次再慢慢補充,我相信光上面說的幾點就夠讓大家明白為什麼「一入前端深似海」了。

總結

今天聊的這兩個問題主要針對在校學生和即將想轉前端的朋友,希望我的回答對你們有所幫助,前端並不是想像中那麼簡單,現在很多公司特別是業務型的公司,業務核心一般都在後端,並不是所有人都了解前端的複雜性導致很多前端工程師被低估了,其實前端發展到今天已經越來越重要,hr應該也非常清楚,好的前端非常難求,如果在你們公司有一個這樣的前端,他能快速定位和解決瀏覽器兼容問題,能寫服務端,做的頁面又能支持多個端,又一直保持對技術的熱情,請給他加薪,好好留住他,且行且珍惜。


推薦閱讀:

2018前端越來越流行的的技術
前端優化實踐總結
前端日刊-2018.01.23
前端日刊-2018.01.27
【前端資訊】TypeScript 2.7 發布

TAG:前端開發 | 前端工程師 | 計算機科學 |