1. 新標(biāo)準(zhǔn)的進(jìn)化與穩(wěn)定 前端新標(biāo)準(zhǔn)和草案在不斷更新,HTML、CSS、Javascript標(biāo)準(zhǔn)也在漸漸完善,盡管這些新的規(guī)范最終會(huì)淘汰舊標(biāo)準(zhǔn)的使用,新的項(xiàng)目也會(huì)以最新的標(biāo)準(zhǔn)作為開發(fā)依據(jù),但要完全停止舊標(biāo)準(zhǔn)的使用并完成企業(yè)級(jí)舊項(xiàng)目的升級(jí),依然需要一段時(shí)間。例如原有Coffeescript的項(xiàng)目不可能一次性的做出遷移重構(gòu),但我們的項(xiàng)目仍需要維護(hù),我們不能脫離實(shí)際項(xiàng)目去談技術(shù),這就需要一段時(shí)間來慢慢修改;再如Web Component現(xiàn)在也不會(huì)馬上作為唯一標(biāo)準(zhǔn)大力推廣。但可以肯定的是,新的語言或技術(shù)標(biāo)準(zhǔn)一定會(huì)被推廣使用,只是還需要時(shí)間。 同時(shí)基于標(biāo)準(zhǔn)也會(huì)出現(xiàn)一些衍生的腳本語法和規(guī)范來適應(yīng)特定的應(yīng)用場(chǎng)景,這些非標(biāo)準(zhǔn)的規(guī)范除了解決具體業(yè)務(wù)技術(shù)問題之外,極有可能進(jìn)化成下個(gè)標(biāo)準(zhǔn)的一部分或被新的標(biāo)準(zhǔn)借鑒。例如Coffeescript雖然最終沒有形成Javascript開發(fā)標(biāo)準(zhǔn),但Ecmascript 6卻借鑒了其中很多優(yōu)秀的特性;或者目前生成Virtual DOM的衍生腳本語法,未來也是有可能被列入到Javascript標(biāo)準(zhǔn)當(dāng)中的。 經(jīng)過大版本的更新穩(wěn)定,目前前端三層結(jié)構(gòu)實(shí)現(xiàn)已經(jīng)形成了HTML5、CSS3、Ecmascript 6+標(biāo)準(zhǔn)規(guī)范結(jié)合的階段,后面標(biāo)準(zhǔn)的新變化也會(huì)越來越小,至少迄今為止,我們無法預(yù)見HTML6的到來、CSS4的特性目前也令人擔(dān)憂、Ecmascript 7的特性更新也并不明顯,這都顯示出,目前前端項(xiàng)目實(shí)踐規(guī)范將會(huì)相對(duì)穩(wěn)定一段較長(zhǎng)的時(shí)間,后面的修改不會(huì)像之前一樣具有顛覆性,這也是技術(shù)標(biāo)準(zhǔn)發(fā)展到一定成熟階段會(huì)發(fā)生的事情。
2. 應(yīng)用開發(fā)技術(shù)趨于穩(wěn)定并將等待下一次革新 從前端應(yīng)用開發(fā)框架上來看,先后經(jīng)歷了DOM API、MVC、MVP、MVVM、Virtual DOM、MNV*階段,逐步解決了前端開發(fā)效率、設(shè)計(jì)模式、DOM交互性能的問題。 這些問題處理完成后,相關(guān)的框架也會(huì)進(jìn)入穩(wěn)定發(fā)展、版本有序迭代的時(shí)期。也就是說前端的交互框架不會(huì)像以前那樣變化頻繁,相對(duì)于之前前端框架的頻繁更換到現(xiàn)在主流框架的穩(wěn)定升級(jí),我們可以看出這點(diǎn)。但目前前端可能還有一件需要去做的事情,那就是使用前端技術(shù)棧獨(dú)立開發(fā)Native應(yīng)用的能力,如果做到這點(diǎn),前端開發(fā)者就可以結(jié)合MNV開發(fā)模式獨(dú)立進(jìn)行Native應(yīng)用開發(fā)并快速實(shí)現(xiàn)高性能的移動(dòng)端應(yīng)用了。因?yàn)槟壳暗腗NV框架的設(shè)計(jì)實(shí)現(xiàn)依然依賴已有少數(shù)幾個(gè)成熟Native應(yīng)用的運(yùn)行環(huán)境,還做不到在通用的APP上用前端技術(shù)棧直接調(diào)用移動(dòng)設(shè)備原生API。 但如果前端技術(shù)棧具備了通用的Native開發(fā)能力,技術(shù)上也就意味著,Javascript腳本(或是衍生的其它腳本)可以將任何一個(gè)普通的移動(dòng)端應(yīng)用編譯打成為Native包,并能使用MNV*模式直接與移動(dòng)設(shè)備原生API進(jìn)行交互。目前也有框架實(shí)現(xiàn)在做這方面的嘗試,但還不是很理想,仍需要更多的改進(jìn)完善。但無論如何,前端技術(shù)棧的Native開發(fā)實(shí)現(xiàn)技術(shù)必將成為前端的下一個(gè)實(shí)踐核心。
3. 持續(xù)不斷的技術(shù)工具探索 前端技術(shù)效率和性能的提升當(dāng)然不是僅靠前端框架都能解決的,還需要其他各方面輔助工具的支持,例如高效的調(diào)試工具、構(gòu)建自動(dòng)化工具、自動(dòng)發(fā)布部署工具等。所以未來前端發(fā)展過程中各種高效工具的探索仍會(huì)不斷地出現(xiàn),來解決特定場(chǎng)景下的問題,最后進(jìn)行一個(gè)優(yōu)勝劣汰的過程。
4. 瀏覽器平臺(tái)新特性的應(yīng)用 就瀏覽器端應(yīng)用而言,以Chrome為代表的瀏覽器版本和特性發(fā)展迭代極其迅速,經(jīng)過多版本的迭代,瀏覽器上已經(jīng)可以實(shí)現(xiàn)較多的增強(qiáng)和實(shí)用特性,例如Web Component、Service Worker、IndexDB、WebAssembly、WebRTC、Ecmascript 6+的支持等等,但由于瀏覽器的種類和版本的多樣性,我們還不能在業(yè)務(wù)中直接推廣使用這些新的特性,但這些卻仍然給了我們很多未來技術(shù)實(shí)現(xiàn)的可能,并且未來較多技術(shù)也會(huì)在這些新特性的基礎(chǔ)上優(yōu)化或改進(jìn)產(chǎn)生。
5. 更優(yōu)化的前端技術(shù)開發(fā)生態(tài) 貫穿瀏覽器、服務(wù)端和移動(dòng)端,前端正朝著多端、多技術(shù)實(shí)現(xiàn)的方向發(fā)展。這意味著前端這套技術(shù)棧能做的事情可能更多,涉及的平臺(tái)更廣,但作為整套技術(shù)開發(fā)生態(tài)的一部分,每一項(xiàng)技術(shù)的出現(xiàn)都必不可少的要去考慮開發(fā)效率、維護(hù)成本、性能、擴(kuò)展性這幾個(gè)方面的問題,所以尋找并發(fā)展更優(yōu)的開發(fā)生態(tài)體系仍是前端未來的大方向,對(duì)于新技術(shù)的出現(xiàn),我們也會(huì)從下面幾個(gè)方面去評(píng)價(jià)它的意義。
- 開發(fā)效率。通常提高開發(fā)效率的方式就是使用開發(fā)框架。例如DOM編程框架的實(shí)現(xiàn),簡(jiǎn)化了腳本API的使用、提高了代碼復(fù)用性,選擇好的框架常常能夠讓我們的工作事半功倍。
- 維護(hù)成本。使用框架提高了項(xiàng)目的開發(fā)效率,但卻并不能解決代碼維護(hù)性的問題。這就需要借助合適的模式來管理項(xiàng)目開發(fā)的代碼,降低項(xiàng)目的維護(hù)成本,例如提取公共業(yè)務(wù)基礎(chǔ)庫(kù)、模塊化、組件化等。目前可能最佳的實(shí)踐就是組件化了,讓業(yè)務(wù)模塊的實(shí)現(xiàn)和管理有章可循,同時(shí)這也是Web標(biāo)準(zhǔn)未來發(fā)展的需要。
- 性能。從前端開發(fā)框架的演進(jìn)來說,可以總結(jié)為先專注于解決前端的開發(fā)效率問題,然后解決前端的交互性能問題,再去嘗試打通Native開發(fā)的能力。所以性能將作為未來評(píng)價(jià)任何一個(gè)框架或技術(shù)優(yōu)劣性的重要標(biāo)準(zhǔn)而存在,同時(shí)性能也將是一個(gè)無法避開的永久性話題。
- 擴(kuò)展性。其實(shí)擴(kuò)展性不只是講框架的方便定制和擴(kuò)展特性,還要做到能與原來的技術(shù)框架相兼容并解耦合。很實(shí)際的場(chǎng)景,例如要使用某個(gè)新技術(shù)對(duì)原有的業(yè)務(wù)做改造,我們不可能馬上就替換掉所有的業(yè)務(wù)模塊,那么就不能因?yàn)樾略黾拥募夹g(shù)框架實(shí)現(xiàn)而導(dǎo)致舊的模塊運(yùn)行出現(xiàn)問題。所以在新技術(shù)的應(yīng)用中,除了保證原有業(yè)務(wù)層的擴(kuò)展兼容,實(shí)現(xiàn)功能的平滑過渡也是一個(gè)必須考慮的問題。