網(wǎng)站前端開發(fā)工程師是在近幾年才開始慢慢發(fā)展起來(lái)的,以往,前端開發(fā)人員與程序人員是一個(gè)人做的,但是
這樣往往會(huì)影響到工作效率與工作質(zhì)量,所以我們就把這兩件事分開分配,網(wǎng)前端開發(fā)工程師發(fā)展的越來(lái)越來(lái),甚至發(fā)生了天翻地覆的變化?;ヂ?lián)網(wǎng)進(jìn)入
Web2.0時(shí)代,各種類似桌面軟件的Web應(yīng)用大量涌現(xiàn),網(wǎng)站的前端由此發(fā)生了的變化。網(wǎng)頁(yè)不再只是承載單一的文字和圖片,各種富媒體讓網(wǎng)頁(yè)的
內(nèi)容更加生動(dòng),網(wǎng)頁(yè)上軟件化的交互形式為用戶提供了更好的使用體驗(yàn),這些都是基于前端技術(shù)實(shí)現(xiàn)的。隨著Web2.0概念的普及和W3C組織的推廣,網(wǎng)站重
構(gòu)的影響力正以驚人的速度增長(zhǎng)。XHTML+CSS布局、DHTML和Ajax像一陣旋風(fēng),鋪天蓋地席卷而來(lái)。根據(jù)W3C標(biāo)準(zhǔn)進(jìn)行重構(gòu)后,可以讓前端的代
碼組織更有序,xzgs網(wǎng)站的性能,重構(gòu)后的網(wǎng)站能帶來(lái)更好的用戶體驗(yàn),用XHTML+CSS重新布局后的頁(yè)面,文件更小,下載速度更快。
網(wǎng)站重構(gòu)的目的僅僅是為了讓網(wǎng)頁(yè)更符合Web標(biāo)準(zhǔn)嗎?不是!重構(gòu)的本質(zhì)是構(gòu)建一個(gè)前端靈活的類MVC框架,即HTML作為信息模型(Model),CSS
控制樣式(View),JavaScript負(fù)責(zé)調(diào)度數(shù)據(jù)和實(shí)現(xiàn)某種展現(xiàn)邏輯(Controller)。同時(shí),代碼需要具有很好的復(fù)用性和可維護(hù)性。這是
高效率、高質(zhì)量開發(fā)以及協(xié)作開發(fā)的基礎(chǔ)。隨著人們對(duì)用戶體驗(yàn)的要求越來(lái)越高,前端開發(fā)的技術(shù)難度越來(lái)越大,Web前端開發(fā)工程師這一職業(yè)終于從設(shè)計(jì)和制作
不分的局面中獨(dú)立出來(lái)。
前端開發(fā)的入門門檻其實(shí)非常低,與服務(wù)器端語(yǔ)言先慢后快的學(xué)習(xí)曲線相比,前端開發(fā)的學(xué)習(xí)曲線是先快后慢。所以,對(duì)于從事IT工作的人來(lái)說(shuō),前端開發(fā) 是個(gè)不錯(cuò)的切入點(diǎn)。也正因?yàn)槿绱?前端開發(fā)領(lǐng)域有很多自學(xué)成“才”的同行,但大多數(shù)人都停留在會(huì)用的階段,因?yàn)楹竺娴膶W(xué)習(xí)曲線越來(lái)越陡峭,每前進(jìn)一步都很 難。另一方面,正如前面所說(shuō),前端開發(fā)是個(gè)非常新的職業(yè),對(duì)一些規(guī)范和{zj0}實(shí)踐的研究都處于探索階段??傆行碌撵`感和技術(shù)不時(shí)閃現(xiàn)出來(lái)。前端開發(fā)技術(shù)三要 素:HTML、CSS和JavaScript,但隨著RIA的流行和普及,Flash/Flex、Silverlight、XML和服務(wù)器端語(yǔ)言也是前端 開發(fā)工程師應(yīng)該掌握的。Web前端開發(fā)工程師既要與上游的交互設(shè)計(jì)師、視覺(jué)設(shè)計(jì)師和產(chǎn)品經(jīng)理溝通,又要與下游的服務(wù)器端工程師溝通,需要掌握的技能非常 多。這就從知識(shí)的廣度上對(duì)Web前端開發(fā)工程師提出了要求。如果要精于前端開發(fā)這一行,也許要先精十行。然而,全才總是少有的。所以,對(duì)于不太重要的知 識(shí),我們只需要“通”即可。但“通”到什么程度才算夠用呢?對(duì)于很多初級(jí)前端開發(fā)工程師來(lái)說(shuō),這個(gè)問(wèn)題是非常令人迷惑的。
必須掌握基本的Web前端開發(fā)技術(shù),其中包括:CSS、HTML、DOM、BOM、Ajax、JavaScript等,在掌握這些技術(shù)的同時(shí),還要 清楚地了解它們?cè)诓煌瑸g覽器上的兼容情況、渲染原理和存在的Bug。在一名合格的前端工程師的知識(shí)結(jié)構(gòu)中,成都建網(wǎng)站網(wǎng)站性能優(yōu)化、SEO和服務(wù)器端的基礎(chǔ)知識(shí)也是 必須掌握的。必須學(xué)會(huì)運(yùn)用各種工具進(jìn)行輔助開發(fā)。除了要掌握技術(shù)層面的知識(shí),還要掌握理論層面的知識(shí),包括代碼的可維護(hù)性、組件的易用性、分層語(yǔ)義模板和 瀏覽器分級(jí)支持,等等。
看似簡(jiǎn)單的網(wǎng)頁(yè)制作,如果要做得更好、更專業(yè),真的是不簡(jiǎn)單。這就是前端開發(fā)的特點(diǎn),也是讓很多人困惑的原因。如此繁雜的知識(shí)體系讓新手學(xué)習(xí)起來(lái)無(wú)從下手。
前端工程師,也叫Web前端開發(fā)工程師。他是隨著web發(fā)展,細(xì)分出來(lái)的行業(yè)。
Web前端開發(fā)技術(shù)主要包括三個(gè)要素:HTML、CSS和JavaScript!
它要求前端開發(fā)工程師不僅要掌握基本的Web前端開發(fā)技術(shù),網(wǎng)站性能優(yōu)化、SEO和服務(wù)器端的基礎(chǔ)知識(shí),而且要學(xué)會(huì)運(yùn)用各種工具進(jìn)行輔助開發(fā)以及理論層面的知識(shí),包括代碼的可維護(hù)性、組件的易用性、分層語(yǔ)義模板和瀏覽器分級(jí)支持等。
隨著近兩三年來(lái)RIA(Rich Internet Applications的縮寫,中文含義為:豐富的因特網(wǎng)應(yīng)用程序)的流行和普及帶來(lái)的諸如:Flash/Flex,Silverlight、XML和 服務(wù)器端語(yǔ)言(PHP、,JSP、Python)等語(yǔ)言,前端開發(fā)工程師也需要掌握。
前端開發(fā)的入門門檻其實(shí)很低,與服務(wù)器端語(yǔ)言先慢后快的學(xué)習(xí)曲線相比,前端開發(fā)的學(xué)習(xí)曲線是先快后慢。
HTML 甚至不是一門語(yǔ)言,他僅僅是簡(jiǎn)單的標(biāo)記語(yǔ)言!
CSS 只是無(wú)類型的樣式修飾語(yǔ)言。當(dāng)然可以勉強(qiáng)算作弱類型語(yǔ)言。
Javascript 的基礎(chǔ)部分相對(duì)來(lái)說(shuō)不難,入手還算快。
也正因?yàn)槿绱耍岸碎_發(fā)領(lǐng)域有很多自學(xué)成“才”的同行,但大多數(shù)人都停留在會(huì)用的階段,因?yàn)楹竺娴膶W(xué)習(xí)曲線越來(lái)越陡峭,每前進(jìn)一步都很難。
Web前端技術(shù)有一些江湖氣,知識(shí)點(diǎn)過(guò)于瑣碎,技術(shù)價(jià)值觀的博弈也難分伯仲,即全局的系統(tǒng)的知識(shí)結(jié)構(gòu)并未成體系,這些因素也客觀上影響了“正統(tǒng)“前 端技術(shù)的沉淀!而且各種“奇技淫巧”被濫用,前端技術(shù)知識(shí)的傳承也過(guò)于泛泛,新人難看清時(shí)局把握主次。因此,前端技術(shù)領(lǐng)域,為自己覓得一個(gè)靠譜的師兄,重 要性要蓋過(guò)項(xiàng)目、團(tuán)隊(duì)、公司、甚至薪水。
另一方面,正如前面所說(shuō),前端開發(fā)是個(gè)非常新的職業(yè),對(duì)一些規(guī)范和{zj0}實(shí)踐的研究都處于探索階段。
總有新的靈感和技術(shù)不時(shí)閃現(xiàn)出來(lái),例如CSS sprite、負(fù)邊距布局、柵格布局等;
各種JavaScript框架層出不窮,為整個(gè)前端開發(fā)領(lǐng)域注入了巨大的活力;
瀏覽器大戰(zhàn)也越來(lái)越白熱化,跨瀏覽器兼容方案依然是五花八門。
為了滿足“高可維護(hù)性”的需要,需要更深入、更系統(tǒng)地去掌握前端知識(shí),這樣才可能創(chuàng)建一個(gè)好的前端架構(gòu),保證代碼的質(zhì)量。
隨著手持設(shè)備的迅猛發(fā)展,帶動(dòng)了 HTML5行業(yè)標(biāo)準(zhǔn)的快速發(fā)展。web領(lǐng)域的技術(shù),大概有10年都沒(méi)有大的更新了!
現(xiàn)在市場(chǎng)很需要優(yōu)秀的、高級(jí)的前端工程師。
一方面是因?yàn)檫@是一個(gè)比較新的細(xì)分行業(yè),而且前端程序員大都自學(xué)一部分,知識(shí)結(jié)構(gòu)不系統(tǒng);另一方面,大學(xué)里面沒(méi)有這種課程,最最重要的是:北大青鳥這類培訓(xùn)機(jī)構(gòu)也沒(méi)有專門的前端工程師的培訓(xùn)課程!!
吳亮在《JavaScript {wz}歸來(lái)》{dy}張的序里面說(shuō):大多數(shù)程序員認(rèn)為 Javascript 過(guò)于簡(jiǎn)陋,只適合一些網(wǎng)頁(yè)上面花哨的表現(xiàn),所以不愿花費(fèi)精力去學(xué)習(xí),或者以為不學(xué)習(xí)就能掌握。
實(shí)際上,一門語(yǔ)言是否腳本語(yǔ)言,往往是她的設(shè)計(jì)目標(biāo)決定,簡(jiǎn)單與復(fù)雜并不是區(qū)分腳本語(yǔ)言和非腳本語(yǔ)言的標(biāo)準(zhǔn)。
事實(shí)上,在腳本語(yǔ)言里面,Javascript 屬于相當(dāng)復(fù)雜的一門語(yǔ)言,他的復(fù)雜度即使放在非腳本語(yǔ)言中來(lái)衡量,也是一門相當(dāng)復(fù)雜的語(yǔ)言!
Javascript 的復(fù)雜度不遜色于 Perl 和 Python!
如何學(xué)習(xí)前端知識(shí)?
我們生活在一個(gè)充滿規(guī)則的宇宙里面。社會(huì)秩序按照規(guī)則運(yùn)行,計(jì)算機(jī)語(yǔ)言幾乎全部是規(guī)則的集合。計(jì)算機(jī)前輩們定義規(guī)則,規(guī)則約束我們,我們用規(guī)則控制數(shù)據(jù)。大部分時(shí)候,對(duì)數(shù)據(jù)的合理控制,來(lái)自于你對(duì)規(guī)則的掌握。
學(xué)習(xí) HTML,CSS 應(yīng)該先跟著書仔細(xì)、扎實(shí)的學(xué)一遍。然后就需要做大量的練習(xí),做各種常規(guī)的、奇怪的、大量的布局練習(xí)來(lái)捆固、理解自己的知識(shí)。
而學(xué)習(xí) Javascript 首先要知道這門語(yǔ)言可以做什么,不能做什么,擅長(zhǎng)做什么,不擅長(zhǎng)做什么!
如果你只想當(dāng)一個(gè)普通的前端程序員,你只需要記住大部分 Javascript 函數(shù),做一些練習(xí)就可以了。
如果你想當(dāng)深入了解Javascript,你需要了解 Javascript 的原理,機(jī)制。需要知道他們的本源,需要深刻了解 Javascript 基于對(duì)象的本質(zhì)。
還需要 深刻了解 瀏覽器宿主 下 的 Javascript 的行為、特性。
因?yàn)闅v史原因,Javascript一直不被重視,有點(diǎn)像被收養(yǎng)的一般! 所以他有很多缺點(diǎn),各個(gè)宿主環(huán)境下的行為不統(tǒng)一、內(nèi)存溢出問(wèn)題、執(zhí)行效率低下等問(wèn)題。
作為一個(gè)優(yōu)秀的前端工程師還需要深入了解、以及學(xué)會(huì)處理 Javascript 的這些缺陷。
那么一名優(yōu)秀的、甚至{zy1}的 前端開發(fā)工程師的具備什么條件?
首先,優(yōu)秀的Web前端開發(fā)工程師要在知識(shí)體系上既要有廣度和深度!做到這兩點(diǎn),其實(shí)很難。所以很多大公司即使出高薪也很難招聘到理想的前端開發(fā)工程師。技術(shù)非黑即白,只有對(duì)和錯(cuò),而技巧則見(jiàn)仁見(jiàn)智。
在以前,會(huì)一點(diǎn)Photoshop和Dreamweaver的操作,就可以制作網(wǎng)頁(yè)。
現(xiàn)在,只掌握這些已經(jīng)遠(yuǎn)遠(yuǎn)不夠了。無(wú)論是開發(fā)難度上,還是開發(fā)方式上,現(xiàn)在的網(wǎng)頁(yè)制作都更接近傳統(tǒng)的網(wǎng)站后臺(tái)開發(fā),所以現(xiàn)在不再叫網(wǎng)頁(yè)制作,而是叫Web前端開發(fā)。
Web前端開發(fā)在產(chǎn)品開發(fā)環(huán)節(jié)中的作用變得越來(lái)越重要,而且需要專業(yè)的前端工程師才能做好。
Web前端開發(fā)是一項(xiàng)很特殊的工作,涵蓋的知識(shí)面非常廣,既有具體的技術(shù),又有抽象的理念。簡(jiǎn)單地說(shuō),它的主要職能就是把網(wǎng)站的界面更好地呈現(xiàn)給用戶。
其次,優(yōu)秀的Web前端開發(fā)工程師應(yīng)該具備快速學(xué)習(xí)能力。Web發(fā)展的很快,甚至可以說(shuō)這些技術(shù)幾乎每天都在變化!如果沒(méi)有快速學(xué)習(xí)能力,就跟不上 Web發(fā)展的步伐。前端工程師必須不斷提升自己,不斷學(xué)習(xí)新技術(shù)、新模式;僅僅依靠今天的知識(shí)無(wú)法適應(yīng)未來(lái)。Web的明天與今天必將有天壤之別,而前端工 程師的工作就是要搞清楚如何通過(guò)自己的Web應(yīng)用程序來(lái)體現(xiàn)這種的變化。
說(shuō)到這里,我想起了一個(gè)大師說(shuō)過(guò)的一句話:對(duì)于新手來(lái)說(shuō),新技術(shù)就是新技術(shù)。
對(duì)于一個(gè)高手來(lái)說(shuō),新技術(shù)不過(guò)是就技術(shù)的延伸。
再者,優(yōu)秀的前端工程師需要具備良好的溝通能力,因?yàn)榍岸斯こ處熤辽俣家獫M足四類客戶的需求。
1、產(chǎn)品經(jīng)理。這些是負(fù)責(zé)策劃應(yīng)用程序的一群人。他們會(huì)想出很多新鮮的、奇怪的、甚至是不可是實(shí)現(xiàn)的應(yīng)用。一般來(lái)說(shuō),產(chǎn)品經(jīng)理都追求豐富的功能。
2、UI設(shè)計(jì)師。這些人負(fù)責(zé)應(yīng)用程序的視覺(jué)設(shè)計(jì)和交互模擬。他們關(guān)心的是用戶對(duì)什么敏感、交互的一貫性以及整體的好用性。一般來(lái)說(shuō),UI設(shè)計(jì)師于流暢靚麗、但并不容易實(shí)現(xiàn)的用戶界面,而且他們經(jīng)常不滿前端工程師造成 1px 的誤差。
3、項(xiàng)目經(jīng)理。這些人負(fù)責(zé)實(shí)際地運(yùn)行和維護(hù)應(yīng)用程序。項(xiàng)目管理的主要關(guān)注點(diǎn),無(wú)外乎正常運(yùn)行時(shí)間、應(yīng)用程序始終正??捎玫臅r(shí)間、性能和截止日期。項(xiàng)目經(jīng)理追求的目標(biāo)往往是盡量保持事情的簡(jiǎn)單化,以及不在升級(jí)更新時(shí)引入新問(wèn)題。
4、最終用戶。指的是應(yīng)用程序的主要消費(fèi)者。盡管前端工程師不會(huì)經(jīng)常與最終用戶打交道,但他們的反饋意見(jiàn)至關(guān)重要。最終用戶要求最多的就是對(duì)個(gè)人有用的功能,以及競(jìng)爭(zhēng)性產(chǎn)品所具備的功能。
Yahoo 公司 ,YUI 的開發(fā)工程師 Nicholas C. Zakas 認(rèn)為:
前端工程師是計(jì)算機(jī)科學(xué)職業(yè)領(lǐng)域中最復(fù)雜的一個(gè)工種。絕大多數(shù)傳統(tǒng)的編程思想已經(jīng)不適用了,為了在多種平臺(tái)中使用,多種技術(shù)都借鑒了大量軟科學(xué)的知識(shí)和理
念。成為優(yōu)秀前端工程師所要具備的專業(yè)技術(shù),涉及到廣闊而復(fù)雜的領(lǐng)域,這些領(lǐng)域又會(huì)因?yàn)槟阕罱K必須服務(wù)的各方的介入而變得更加復(fù)雜。專業(yè)技術(shù)可能會(huì)yl你
進(jìn)入成為前端工程師的大門,但只有運(yùn)用該技術(shù)創(chuàng)造的應(yīng)用程序以及你跟他人并肩協(xié)同的能力,才會(huì)真正讓你變得優(yōu)秀。