第一大挑戰(zhàn):兼容性
瀏覽器種類(lèi)非常多,IE、Firefox、Chrome、Opera、還有眾多的IE加殼瀏覽器,類(lèi)似搜狗、傲游、360,再加上這些瀏覽器的移動(dòng)終端版本。需要有Web標(biāo)準(zhǔn),前端的知識(shí)大部分通用于各個(gè)瀏覽器,但還是會(huì)有歷史遺留問(wèn)題,不同版本的瀏覽器有不同的問(wèn)題。特別是市場(chǎng)占有率最高的IE系,雖然IE 9/10看起來(lái)相當(dāng)標(biāo)準(zhǔn),但向之前版本間各有各的問(wèn)題,向前兼容非常頭疼。如果不積累點(diǎn)經(jīng)驗(yàn),面對(duì)疑難雜癥那是一頭霧水。
第二大挑戰(zhàn):交互的復(fù)雜度
CSS和DOM提供的接口水平過(guò)低,而B(niǎo)OM提供的控件只有input、select、textarea這幾種最基本的,稍復(fù)雜一點(diǎn)的UI效果,都要前端自己利用CSS和DOM去組合創(chuàng)造。看到一個(gè)需求,腦子里第一步要想如何利用CSS、DOM這些基本的零件組合成最終的效果,實(shí)現(xiàn)最終效果其實(shí)是一個(gè)“創(chuàng)造”的過(guò)程,比如說(shuō)tabView,treeView,richEditor,colorPicker這種看起來(lái)常見(jiàn)的組件,其實(shí)在前端里都是沒(méi)有現(xiàn)成可用的,需要自己去實(shí)現(xiàn)。
前端語(yǔ)言的 膠水性需求 太強(qiáng)。CSS、DOM、JS是三種不同的技術(shù),這也是前端知識(shí)系統(tǒng)中要掌握的最重要的三個(gè)基本功。前端的效果是通過(guò)CSS、DOM、JS三者配合起來(lái)最終呈現(xiàn)出來(lái)的,脫了任何一個(gè)技術(shù)都寸步難行,時(shí)刻要同時(shí)考慮多個(gè)方向的知識(shí)點(diǎn)。前端編程像是開(kāi)了三個(gè)線程同時(shí)在跑,復(fù)雜度成倍增長(zhǎng)。
第三大挑戰(zhàn):代碼可維護(hù)性
復(fù)雜度的提升直接影響代碼的維護(hù)性。CSS+DOM+JS的組合實(shí)在太強(qiáng)大了,同一個(gè)效果可以有多種完全不同的實(shí)現(xiàn)方式,每一種實(shí)現(xiàn)方式都會(huì)有不同的開(kāi)發(fā)難度、擴(kuò)展性、可維護(hù)性。解決方案太多,看到一個(gè)效果首先會(huì)先想到如何用CSS和DOM里那些low level的接口實(shí)現(xiàn),這是一個(gè)“創(chuàng)造”的過(guò)程,這時(shí)腦子里可能冒出好多種不同的實(shí)現(xiàn)方法,“創(chuàng)造”完了之后還要“比較”,權(quán)衡各種解決方案的優(yōu)劣,糾結(jié)一陣之后,才能選出最適合的方案。當(dāng)然,并非前端都是完美主義,一定要選一個(gè)最好的方式出來(lái),而是因?yàn)榍岸耸荊UI編程,直接面向用戶(hù),是最直接的產(chǎn)品呈現(xiàn)的部分,是門(mén)面。正因?yàn)槿绱耍岸艘彩亲钊菀妆环磸?fù)修改的部分。反復(fù)“修改”有多可怕,是個(gè)程序員都懂的,如果可維護(hù)性不好,那簡(jiǎn)直是惡夢(mèng)。所以前端不得不重視可維護(hù)性,不重視可維護(hù)性直接等于自虐。
第四大挑戰(zhàn):性能
第五大挑戰(zhàn):個(gè)人成長(zhǎng)
前端的開(kāi)發(fā),如果沒(méi)有總體的設(shè)計(jì)思路,會(huì)成為一種碎片似地程序,一個(gè)效果一堆代碼,一個(gè)功能一灘腳本,一個(gè)需求片邏輯。曾經(jīng)遇到過(guò),因?yàn)閡e調(diào)整,把整個(gè)前端的代碼除了核心數(shù)據(jù)處理函數(shù)保留,其余的全部修改的情況?;旧锨岸说拈_(kāi)發(fā),處于DOM操作,數(shù)據(jù)處理,數(shù)據(jù)交互三部分,如果合理的分配這三部分的功能,那么前端的代碼就很容易擴(kuò)展和調(diào)整。
真正的前端開(kāi)發(fā)挑戰(zhàn),還在于開(kāi)發(fā)者的思路。兼容性,布局,CSS和JS都不是問(wèn)題,問(wèn)題在于如何合理地組織語(yǔ)言邏輯;如何正確抽象出需求中的模塊;如何用代碼處理,清楚地用代碼表達(dá)出思路、寫(xiě)好注釋?zhuān)o后續(xù)維護(hù)者一個(gè)可閱讀的思路。前端的改動(dòng)量,是后端的數(shù)倍,前端沒(méi)有絕對(duì),只有跟隨需求不停的修改。