想從事軟件業(yè)的畢業(yè)生們大多要從基礎(chǔ)的程序員做起。相較于其他的職位,Web軟件開發(fā)工程師是一個(gè)技術(shù)要求較高、前景較好的工作。Web軟件開發(fā)工程師可以分為Web前端和后端開發(fā)。那什么是Web前端,什么是Web后端呢?它們的差異在哪里?在工作中又分別會(huì)遇到怎么樣的問題呢?匯仁智杰小編瀏覽了大量的資源,為童鞋們整理了這樣一份資料,主要分為前端和后端的 差異 和它們各自所 面臨的挑戰(zhàn) 。希望對你有所幫助!
Web前端和后端的差異
職能上的差異
首先,我們要分清Web designer(網(wǎng)頁設(shè)計(jì)師)和Web developer(網(wǎng)頁開發(fā)者,也稱程序員)的差異。兩者之間的差異主要表現(xiàn)在:一個(gè)是有關(guān)網(wǎng)站的視覺或美學(xué)方面,被稱為“前端”;另一個(gè)則是看不見的編碼方面的設(shè)計(jì),被稱為“后端”。簡而言之,漂亮的網(wǎng)站界面都是出自網(wǎng)頁設(shè)計(jì)師之手,而牛逼強(qiáng)大的功能則是網(wǎng)頁開發(fā)者的杰作。
除了職能上的差異之外,兩者還有其他許多差異。國外設(shè)計(jì)網(wǎng)站Downgraf特意制作了一張圖表來展示——網(wǎng)頁設(shè)計(jì)師和網(wǎng)頁開發(fā)者(程序員)都留胡茬,一個(gè)沒錢,一個(gè)沒時(shí)間;兩者都喜歡內(nèi)涵T恤,一個(gè)走字體設(shè)計(jì)路線,一個(gè)走代碼風(fēng);兩者都配自家設(shè)備,一個(gè)必帶MacBook Pro,一個(gè)只挑小鍵盤……除了以上種種差異,他們還有一個(gè)共同點(diǎn):害怕MM,看來都是“宅”惹的禍。
技術(shù)上的差異
我們再從技術(shù)的方面,瞧瞧在實(shí)際的招聘中,各大企業(yè)要求前端人員與后端人員分別具備怎樣的能力。
Web前端:
1. 精通HTML,能夠書寫語義合理,結(jié)構(gòu)清晰,易維護(hù)的HTML結(jié)構(gòu)。
2. 精通CSS,能夠還原視覺設(shè)計(jì),并兼容業(yè)界承認(rèn)的主流瀏覽器。
3. 熟悉JavaScript,了解ECMAScript基礎(chǔ)內(nèi)容,掌握1~2種js框架,如JQuery。
4. 對常見的瀏覽器兼容問題有清晰的理解,并有可靠的解決方案。
5. 對性能有一定的要求,了解yahoo的性能優(yōu)化建議,并可以在項(xiàng)目中有效實(shí)施。
Web后端:
1. 精通jsp,servlet,java bean,JMS,EJB,Jdbc,F(xiàn)lex開發(fā),或者對相關(guān)的工具、類庫以及框架非常熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,對Web開發(fā)的模式有較深的理解。
2. 熟練使用oracle、sqlserver、mysql等常用的數(shù)據(jù)庫系統(tǒng),對數(shù)據(jù)庫有較強(qiáng)的設(shè)計(jì)能力。
3. 熟悉maven項(xiàng)目配置管理工具,熟悉tomcat、jboss等應(yīng)用服務(wù)器,同時(shí)對在高并發(fā)處理情況下的負(fù)載調(diào)優(yōu)有相關(guān)經(jīng)驗(yàn)者優(yōu)先考慮。
4. 精通面向?qū)ο蠓治龊驮O(shè)計(jì)技術(shù),包括設(shè)計(jì)模式、UML建模等。
5. 熟悉網(wǎng)絡(luò)編程,具有設(shè)計(jì)和開發(fā)對外API接口經(jīng)驗(yàn)和能力,同時(shí)具備跨平臺的API規(guī)范設(shè)計(jì)以及API高效調(diào)用設(shè)計(jì)能力。
總而言之,兩者的差異在于
職能上,前端主要負(fù)責(zé)界面的設(shè)計(jì);后端主要是制作界面后的功能。
形象上,前端注重形式、美觀;后端注重功能、實(shí)用性(為此,小編還特地去了喬布堂的研發(fā)部做了實(shí)地考察,發(fā)現(xiàn)我們的前端工程師買了2臺Macbook,而后端工程師買了2個(gè)鍵盤。驚人的符合!)
企業(yè)招聘中,前端工程師需要精通JS,能熟練應(yīng)用JQuery,懂CSS,能熟練運(yùn)用這些知識,進(jìn)行交互效果的開發(fā);后端開發(fā)人員需要會(huì)寫Java代碼,會(huì)寫SQL語句,能做簡單的數(shù)據(jù)庫設(shè)計(jì),會(huì)Spring和iBatis,懂一些設(shè)計(jì)模式等。
要成為一名高效的Web開發(fā)者,需要做很多工作,來提高工作方式并改善勞動(dòng)成果。而在開發(fā)中難免會(huì)遇到一些困難。那么,前端與后端分別面臨的挑戰(zhàn)主要有哪些呢?來和小編一起看一看吧!
Web前端開發(fā)面臨的挑戰(zhàn)
前端開發(fā)的五大挑戰(zhàn)
第一大挑戰(zhàn):兼容性
瀏覽器種類非常多,IE、Firefox、Chrome、Opera、還有眾多的IE加殼瀏覽器,類似搜狗、傲游、360,再加上這些瀏覽器的移動(dòng)終端版本。需要有Web標(biāo)準(zhǔn),前端的知識大部分通用于各個(gè)瀏覽器,但還是會(huì)有歷史遺留問題,不同版本的瀏覽器有不同的問題。特別是市場占有率最高的IE系,雖然IE 9/10看起來相當(dāng)標(biāo)準(zhǔn),但向之前版本間各有各的問題,向前兼容非常頭疼。如果不積累點(diǎn)經(jīng)驗(yàn),面對疑難雜癥那是一頭霧水。
第二大挑戰(zhàn):交互的復(fù)雜度
CSS和DOM提供的接口水平過低,而BOM提供的控件只有input、select、textarea這幾種最基本的,稍復(fù)雜一點(diǎn)的UI效果,都要前端自己利用CSS和DOM去組合創(chuàng)造??吹揭粋€(gè)需求,腦子里第一步要想如何利用CSS、DOM這些基本的零件組合成最終的效果,實(shí)現(xiàn)最終效果其實(shí)是一個(gè)“創(chuàng)造”的過程,比如說
tabView,treeView,richEditor,colorPicker這種看起來常見的組件,其實(shí)在前端里都是沒有現(xiàn)成可用的,需要自己去實(shí)現(xiàn)。
前端語言的 膠水性需求 太強(qiáng)。CSS、DOM、JS是三種不同的技術(shù),這也是前端知識系統(tǒng)中要掌握的最重要的三個(gè)基本功。前端的效果是通過CSS、DOM、JS三者配合起來最終呈現(xiàn)出來的,脫了任何一個(gè)技術(shù)都寸步難行,時(shí)刻要同時(shí)考慮多個(gè)方向的知識點(diǎn)。前端編程像是開了三個(gè)線程同時(shí)在跑,復(fù)雜度成倍增長。
第三大挑戰(zhàn):代碼可維護(hù)性
復(fù)雜度的提升直接影響代碼的維護(hù)性。CSS+DOM+JS的組合實(shí)在太強(qiáng)大了,同一個(gè)效果可以有多種完全不同的實(shí)現(xiàn)方式,每一種實(shí)現(xiàn)方式都會(huì)有不同的開發(fā)難度、擴(kuò)展性、可維護(hù)性。解決方案太多,看到一個(gè)效果首先會(huì)先想到如何用CSS和DOM里那些low level的接口實(shí)現(xiàn),這是一個(gè)“創(chuàng)造”的過程,這時(shí)腦子里可能冒出好多種不同的實(shí)現(xiàn)方法,“創(chuàng)造”完了之后還要“比較”,權(quán)衡各種解決方案的優(yōu)劣,糾結(jié)一陣之后,才能選出最適合的方案。當(dāng)然,并非前端都是完美主義,一定要選一個(gè)最好的方式出來,而是因?yàn)榍岸耸荊UI編程,直接面向用戶,是最直接的產(chǎn)品呈現(xiàn)的部分,是門面。正因?yàn)槿绱?,前端也是最容易被反?fù)修改的部分。反復(fù)“修改”有多可怕,是個(gè)程序員都懂的,如果可維護(hù)性不好,那簡直是惡夢。所以前端不得不重視可維護(hù)性,不重視可維護(hù)性直接等于自虐。
第四大挑戰(zhàn):性能
第五大挑戰(zhàn):個(gè)人成長
開發(fā)者的思路很重要
前端的開發(fā),如果沒有總體的設(shè)計(jì)思路,會(huì)成為一種碎片似地程序,一個(gè)效果一堆代碼,一個(gè)功能一灘腳本,一個(gè)需求片邏輯。曾經(jīng)遇到過,因?yàn)閡e調(diào)整,把整個(gè)前端的代碼除了核心數(shù)據(jù)處理函數(shù)保留,其余的全部修改的情況?;旧锨岸说拈_發(fā),處于DOM操作,數(shù)據(jù)處理,數(shù)據(jù)交互三部分,如果合理的分配這三部分的功能,那么前端的代碼就很容易擴(kuò)展和調(diào)整。
真正的前端開發(fā)挑戰(zhàn),還在于開發(fā)者的思路。兼容性,布局,CSS和JS都不是問題,問題在于如何合理地組織語言邏輯;如何正確抽象出需求中的模塊;如何用代碼處理,清楚地用代碼表達(dá)出思路、寫好注釋,給后續(xù)維護(hù)者一個(gè)可閱讀的思路。前端的改動(dòng)量,是后端的數(shù)倍,前端沒有絕對,只有跟隨需求不停的修改。
后端開發(fā)的五大挑戰(zhàn)
第一大挑戰(zhàn),后端開發(fā)最重要的挑戰(zhàn),來自于規(guī)模
規(guī)模的擴(kuò)大,比如訪問量擴(kuò)大,文件存儲(chǔ)量擴(kuò)大,數(shù)據(jù)量擴(kuò)大,服務(wù)器數(shù)量擴(kuò)大等。一個(gè)前端看起來一模一樣的網(wǎng)站,某一種指標(biāo)如果擴(kuò)大十倍,幾乎都會(huì)面臨一大堆的問題和挑戰(zhàn)。另一方面,在規(guī)模擴(kuò)大以后,后端系統(tǒng)架構(gòu),一定會(huì)復(fù)雜化。原來只有一臺Server,LAMP都裝在一起。然后數(shù)據(jù)庫分出來,反向代理,負(fù)載均衡,分庫分表,Memcache,Message Queue,事務(wù)處理,CDN,NOSQL,種種架構(gòu),Server,就逐漸的演化出來了。架構(gòu)的復(fù)雜化,自然會(huì)帶來更多的問題和更多的挑戰(zhàn)。
第二大挑戰(zhàn),來自于安全
安全問題層出不窮,防不勝防。需要技術(shù)手段,也需要管理制度。
第三大挑戰(zhàn),來自于效率
能否提供足夠的處理速度,能否提供足夠的帶寬,能否保證響應(yīng)能力,這些是對外的效率。能否使用更少的服務(wù)器,能否使用更加便宜的服務(wù)器,能否使用更加節(jié)省能源的服務(wù)器,這些是對內(nèi)的效率。
第四大挑戰(zhàn),來自于需求變更
無論前端后端,都會(huì)面臨需求變更,只要是軟件開發(fā),這都是大挑戰(zhàn)。但是當(dāng)一個(gè)系統(tǒng)已經(jīng)穩(wěn)定的,高效的運(yùn)行時(shí),需求變更來了,在滿足需求之后,原本來沒有問題的部分,會(huì)不會(huì)突然崩潰,一旦崩潰,就是后端工程師的噩夢。
第五大挑戰(zhàn),來自于教條
這個(gè)世界上有無數(shù)IT大公司,他們都很開放,都愿意分享自己的架構(gòu)與技術(shù)。于是,對于“眼界開闊”的后端工程師而言,困難不在于如何解決,而在于如何從眾多的解決方案中做出挑選??蚣?、實(shí)踐不斷涌現(xiàn),成功案例也不斷涌現(xiàn)。人家都用得好好的,你敢用嗎?到底是勇于嘗鮮,還是保守要緊呢?這個(gè)很難。
后端開發(fā)的三大法則
Design for failure
后端相當(dāng)比例的代碼不是為了一般情況下正確而存在,而是為了保證特殊或者極端情況下系統(tǒng)可接受的響應(yīng)而存在的。這里有非常多的折衷要做:漸進(jìn)改進(jìn)還是超前設(shè)計(jì)?水平擴(kuò)展、業(yè)務(wù)優(yōu)化、前臺還是后臺處理?大量的折衷都是要根據(jù)不斷變化的環(huán)境和需求去權(quán)衡的,所以很容易犯錯(cuò)。
Architecture is about abstract
為什么要抽象?因?yàn)槌橄蟮母拍钣懈玫倪m應(yīng)性,更易于復(fù)用,更能靈活適應(yīng)變化。但是抽象是很難的,不恰當(dāng)?shù)某橄蟾琴O害無窮,要命的是,這些并沒有很好的方法論,多數(shù)是依靠一組基本的原理,憑經(jīng)驗(yàn)作出的。而Web后端開發(fā)在很長時(shí)間里并沒有很重視這些,很多網(wǎng)站都是粗放型設(shè)計(jì)和開發(fā)出來的,所以補(bǔ)丁疊補(bǔ)丁的結(jié)構(gòu)就順理成章的成為了主流。
Architecture is product
為架構(gòu)本身即產(chǎn)品,一個(gè)軟件產(chǎn)品包含了不同的視角,其中最重要的包括用戶看到的視角、以及軟件骨架即架構(gòu)的視角。但產(chǎn)品就是產(chǎn)品,所有這些視角都是必須統(tǒng)一和一致的,這就要求架構(gòu)必須理解產(chǎn)品的靈魂,而產(chǎn)品要理解架構(gòu)的困難所在,否則很容易出現(xiàn)想做的事情做不到或者以巨大的架構(gòu)代價(jià)實(shí)現(xiàn)一個(gè)邊角功能這類悲劇。
免費(fèi)學(xué)習(xí)課堂
- 免費(fèi)推廣知識
- 競價(jià)推廣知識
- 新媒體營銷知識
- 網(wǎng)站運(yùn)營知識
- 網(wǎng)站設(shè)計(jì)知識
- 網(wǎng)站建設(shè)知識
- Web前端知識
- 軟文營銷知識
- 網(wǎng)站策劃知識
- 整合營銷
推薦文章
Web前端 VS Web后端
來源:北京匯仁智杰科技有限公司 時(shí)間:2016-06-23 點(diǎn)擊: 次
推薦文章
- 織夢dedecms漏洞修復(fù)大全含任意文件2016-09-05
- 整頓微信公眾號過度營銷 對嚴(yán)重違2016-01-26
- SEO優(yōu)化過程要避免什么?2016-01-26
- 網(wǎng)站空間被掛馬的原因原因及解決2016-01-26
- 2016企業(yè)該如何運(yùn)用互聯(lián)網(wǎng)進(jìn)行營銷2016-01-26
- WEB前端項(xiàng)目開發(fā)中需注意的細(xì)節(jié)2016-01-26
- 低價(jià)網(wǎng)站建設(shè)的危害有哪些?2016-01-15
- 如何詳細(xì)的分析你網(wǎng)站的競爭對手2015-06-10
- 網(wǎng)站設(shè)計(jì)中四個(gè)常犯的錯(cuò)誤2015-01-22
- 如何搭配網(wǎng)站設(shè)計(jì)中的色彩?2015-01-22