您好,登錄后才能下訂單哦!
在不知道什么時候,突然有人提起前端工程化這東西,一開始覺得又是某個大神故意提起的高深詞匯,專門來嚇唬人的。
繼而我瘋狂查找了很多的資料,在接近二十篇的相關資料,每一篇文章都寫得神乎其神,大有唯我獨尊的意味,但每篇看下來,總感覺不對經——就是大家都把自己一套比較規范的開發套路充當出前端工程化,前端工程化變成了前端優化,讓人看了,“對啊,這樣做規范多了,優化不錯啊,巴拉巴拉”,但又覺得工程化不應該只是這些,像缺什么,讓人看得云里霧里,似懂非懂。這種文章雖不算誤人子弟,但諱莫如深,妖魔化了前端工程化。
我照例是詢問了幾個前端好友,答案卻出其的一致,前端工程化就是規范標準化、構建自動化、測試自動化,還有模塊化、組件化,達到提升協作開發效率和開發質量。這樣說卻不能讓我滿意,我心里感覺最關鍵的點沒有指出來。
于是在我了解這些后,覺得先撇清他們所講,自己靜下心來思考這個話題。
前端工程化是什么?
前端工程化是一種思想!在一個瞬間,我頭腦里給我這么一個答案。前端工程化首先應該是一個思想,而不是一個個具體的工程化方案,前面絕大多數文章、人都在講方案,以一個方案去講清一個思想,太輕浮了。就像模塊化,使用webpack/broswerify,或者requirejs/seajs,AMD/CMD/CommonJS就是模塊化,哪能這么去解釋,連webpack得官網都說了,webpack is a module bundler,我們甚至不用到前面所說的工具就能實現模塊化思想。舉另外一個簡單例子,就是實現社會主義現代化,首先它應該是一個指導思想,而那些五年規劃,就是具體方案,這些五年規劃是為了達到社會主義現代化的具體方針,方針有很多針對性解決的東西,但都是圍繞著指導思想走了。
所以!認請思想,才能在這個思想指導下,制定出合適自己的項目的方案。(切莫直接照搬方案,至少在理解思想前)
那么,前端工程化是什么?
前端開發,首先是軟件開發,那么前端工程化,應該是軟件工程的一部分。
『軟件工程(software engineering)這個概念,研究和應用如何以系統性的、規范化的、可定量的過程化方法去開發和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科。』 (維基百科)
仔細剖析這句話是非常重要的。
怎么理解這個系統性。照著系統的概念,系統就是若干相互聯系、相互作用、相互依賴的要素結合而成的,具有一定的結構和功能,并處在一定環境下的有機整體。我們所要做的事,肯定是互相關聯的,不會單一出現某一元素是置身事外,并且是有序的整理、編排形成的具有整體性的整體。強調的是關聯性、完整性。就軟件的生命周期來講,定義及規劃、需求分析、軟件設計、程序編碼、軟件測試、運行維護,每個步驟都是息息相關的,繼而形成一個完整的過程。說個題外話,常用的生命周期模型,在現代軟件產品中,講究的快速迭代,就是迭代式模型。
規范化。規范這個字面上就很好理解,但是問題就在于,我們需要規范化的是什么?其實軟件的生命周期的每個步驟,都需要規范標準。作為一個軟件工程師,我大多是關注程序編碼的規范,其他的生命周期里的不甚了解。從開發環境(版本控制工具、IDE、數據庫等)、編程風格(代碼格式、命名規范),到編程經驗、自動化構建與測試。這些都應該有標準,當然,規范的深度也是值得考慮的問題,因為太多的具體標準,有時難以記住、實施,所以有時又提倡約定大于配置。
可定量的過程化方法。跟前面所說的系統性、規范性一樣,可定量也是在描述這個過程化方法(開發流程)。可定量這個沒啥好說的,可以規定數量(這解釋解釋得我臉紅)。
正確的管理技術。管理是人、事、物,從人來講,就是如何進行團隊協作的方法;從事來講,是協調這件事的起始過程;從物來講,是對于某個具象的東西控制;例如代碼的版本控制。
最好的技術方法。從編程開發上講,可簡單理解為,使用什么語言、工具、框架/庫,可最好適用于你的項目。(沒有最好的技術方法,只有最合適的)
所以從上面的方法論,軟件工程的目的就是:提高效率、保證質量。
那么,如果從軟件工程概念理解前端工程化,那么前端工程化可解讀成什么?
美團點評技術團隊有篇文章《前端工程化開發方案app-proto》總結的特別好。根據具體的業務特點,將前端的開發流程、技術、工具、經驗等規范化、標準化就是前端工程化。將該概念細細品味,就會發覺跟軟件工程的概念一一對應了。可能有人會說,組件化、模塊化、自動化怎么沒有,我覺得組件化、模塊化應該歸類到編程經驗里,還沒重要到要提出來強調說明,而自動化這個的確是可以加上(畢竟是提高效率的大殺器)。 這里我要特別贊許的是,文章的標題指明是前端工程化方案,沒有誤導人。
所以前端工程化是什么?
將前端的開發流程、技術、工具、經驗等規范化、標準化、自動化就是前端工程化。到此為止,前端工程化不再是個模棱兩可的概念。在這概念下,如何指示自己的項目開發,我覺得軟件工程師可以這樣:
選擇適宜的框架、庫,之所以先這個,因為它會影響你工具選擇和代碼規范。
選擇工具,包含開發工具、版本控制工具、構建工具、測試工具等。
制定代碼規范,統一編程風格,附帶工具做校驗。
選擇開發模式(類似之前說的組件化、模塊化),但一般這個是與框架結合了。
使用工具將開發流程自動化。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。