新聞中心
在不知道什么時(shí)候,突然有人提起前端工程化這東西,一開始覺得又是某個(gè)大神故意提起的高深詞匯,專門來嚇唬人的。
繼而我瘋狂查找了很多的資料,在接近二十篇的相關(guān)資料,每一篇文章都寫得神乎其神,大有唯我獨(dú)尊的意味,但每篇看下來,總感覺不對(duì)經(jīng)——就是大家都把自己一套比較規(guī)范的開發(fā)套路充當(dāng)出前端工程化,前端工程化變成了前端優(yōu)化,讓人看了,“對(duì)啊,這樣做規(guī)范多了,優(yōu)化不錯(cuò)啊,巴拉巴拉”,但又覺得工程化不應(yīng)該只是這些,像缺什么,讓人看得云里霧里,似懂非懂。這種文章雖不算誤人子弟,但諱莫如深,妖魔化了前端工程化。
我照例是詢問了幾個(gè)前端好友,答案卻出其的一致,前端工程化就是規(guī)范標(biāo)準(zhǔn)化、構(gòu)建自動(dòng)化、測試自動(dòng)化,還有模塊化、組件化,達(dá)到提升協(xié)作開發(fā)效率和開發(fā)質(zhì)量。這樣說卻不能讓我滿意,我心里感覺最關(guān)鍵的點(diǎn)沒有指出來。
于是在我了解這些后,覺得先撇清他們所講,自己靜下心來思考這個(gè)話題。
前端工程化是什么?
前端工程化是一種思想!在一個(gè)瞬間,我頭腦里給我這么一個(gè)答案。前端工程化首先應(yīng)該是一個(gè)思想,而不是一個(gè)個(gè)具體的工程化方案,前面絕大多數(shù)文章、人都在講方案,以一個(gè)方案去講清一個(gè)思想,太輕浮了。就像模塊化,使用webpack/broswerify,或者requirejs/seajs,AMD/CMD/CommonJS就是模塊化,哪能這么去解釋,連webpack得官網(wǎng)都說了,webpack is a module bundler,我們甚至不用到前面所說的工具就能實(shí)現(xiàn)模塊化思想。舉另外一個(gè)簡單例子,就是實(shí)現(xiàn)社會(huì)主義現(xiàn)代化,首先它應(yīng)該是一個(gè)指導(dǎo)思想,而那些五年規(guī)劃,就是具體方案,這些五年規(guī)劃是為了達(dá)到社會(huì)主義現(xiàn)代化的具體方針,方針有很多針對(duì)性解決的東西,但都是圍繞著指導(dǎo)思想走了。
所以!認(rèn)請(qǐng)思想,才能在這個(gè)思想指導(dǎo)下,制定出合適自己的項(xiàng)目的方案。(切莫直接照搬方案,至少在理解思想前)
那么,前端工程化是什么?
前端開發(fā),首先是軟件開發(fā),那么前端工程化,應(yīng)該是軟件工程的一部分。
『軟件工程(software engineering)這個(gè)概念,研究和應(yīng)用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護(hù)軟件,以及如何把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來的學(xué)科?!?(維基百科)
仔細(xì)剖析這句話是非常重要的。
怎么理解這個(gè)系統(tǒng)性。照著系統(tǒng)的概念,系統(tǒng)就是若干相互聯(lián)系、相互作用、相互依賴的要素結(jié)合而成的,具有一定的結(jié)構(gòu)和功能,并處在一定環(huán)境下的有機(jī)整體。我們所要做的事,肯定是互相關(guān)聯(lián)的,不會(huì)單一出現(xiàn)某一元素是置身事外,并且是有序的整理、編排形成的具有整體性的整體。強(qiáng)調(diào)的是關(guān)聯(lián)性、完整性。就軟件的生命周期來講,定義及規(guī)劃、需求分析、軟件設(shè)計(jì)、程序編碼、軟件測試、運(yùn)行維護(hù),每個(gè)步驟都是息息相關(guān)的,繼而形成一個(gè)完整的過程。說個(gè)題外話,常用的生命周期模型,在現(xiàn)代軟件產(chǎn)品中,講究的快速迭代,就是迭代式模型。
規(guī)范化。規(guī)范這個(gè)字面上就很好理解,但是問題就在于,我們需要規(guī)范化的是什么?其實(shí)軟件的生命周期的每個(gè)步驟,都需要規(guī)范標(biāo)準(zhǔn)。作為一個(gè)軟件工程師,我大多是關(guān)注程序編碼的規(guī)范,其他的生命周期里的不甚了解。從開發(fā)環(huán)境(版本控制工具、IDE、數(shù)據(jù)庫等)、編程風(fēng)格(代碼格式、命名規(guī)范),到編程經(jīng)驗(yàn)、自動(dòng)化構(gòu)建與測試。這些都應(yīng)該有標(biāo)準(zhǔn),當(dāng)然,規(guī)范的深度也是值得考慮的問題,因?yàn)樘嗟木唧w標(biāo)準(zhǔn),有時(shí)難以記住、實(shí)施,所以有時(shí)又提倡約定大于配置。
可定量的過程化方法。跟前面所說的系統(tǒng)性、規(guī)范性一樣,可定量也是在描述這個(gè)過程化方法(開發(fā)流程)。可定量這個(gè)沒啥好說的,可以規(guī)定數(shù)量(這解釋解釋得我臉紅)。
正確的管理技術(shù)。管理是人、事、物,從人來講,就是如何進(jìn)行團(tuán)隊(duì)協(xié)作的方法;從事來講,是協(xié)調(diào)這件事的起始過程;從物來講,是對(duì)于某個(gè)具象的東西控制;例如代碼的版本控制。
最好的技術(shù)方法。從編程開發(fā)上講,可簡單理解為,使用什么語言、工具、框架/庫,可最好適用于你的項(xiàng)目。(沒有最好的技術(shù)方法,只有最合適的)
所以從上面的方法論,軟件工程的目的就是:提高效率、保證質(zhì)量。
那么,如果從軟件工程概念理解前端工程化,那么前端工程化可解讀成什么?
美團(tuán)點(diǎn)評(píng)技術(shù)團(tuán)隊(duì)有篇文章《前端工程化開發(fā)方案app-proto》總結(jié)的特別好。根據(jù)具體的業(yè)務(wù)特點(diǎn),將前端的開發(fā)流程、技術(shù)、工具、經(jīng)驗(yàn)等規(guī)范化、標(biāo)準(zhǔn)化就是前端工程化。將該概念細(xì)細(xì)品味,就會(huì)發(fā)覺跟軟件工程的概念一一對(duì)應(yīng)了??赡苡腥藭?huì)說,組件化、模塊化、自動(dòng)化怎么沒有,我覺得組件化、模塊化應(yīng)該歸類到編程經(jīng)驗(yàn)里,還沒重要到要提出來強(qiáng)調(diào)說明,而自動(dòng)化這個(gè)的確是可以加上(畢竟是提高效率的大殺器)。 這里我要特別贊許的是,文章的標(biāo)題指明是前端工程化方案,沒有誤導(dǎo)人。
所以前端工程化是什么?
將前端的開發(fā)流程、技術(shù)、工具、經(jīng)驗(yàn)等規(guī)范化、標(biāo)準(zhǔn)化、自動(dòng)化就是前端工程化。到此為止,前端工程化不再是個(gè)模棱兩可的概念。在這概念下,如何指示自己的項(xiàng)目開發(fā),我覺得軟件工程師可以這樣:
選擇適宜的框架、庫,之所以先這個(gè),因?yàn)樗鼤?huì)影響你工具選擇和代碼規(guī)范。
選擇工具,包含開發(fā)工具、版本控制工具、構(gòu)建工具、測試工具等。
制定代碼規(guī)范,統(tǒng)一編程風(fēng)格,附帶工具做校驗(yàn)。
選擇開發(fā)模式(類似之前說的組件化、模塊化),但一般這個(gè)是與框架結(jié)合了。
使用工具將開發(fā)流程自動(dòng)化。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文題目:論前端工程化-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://fisionsoft.com.cn/article/jppci.html