【轉】論前端的工程化

   出處 :http://www.cnblogs.com/lovesong/p/6574579.html

    在不知道何時,忽然有人提起前端工程化這東西,一開始以爲又是某個大神故意提起的高深詞彙,專門來嚇唬人的。html

    繼而我瘋狂查找了不少的資料,在接近二十篇的相關資料,每一篇文章都寫得神乎其神,大有惟我獨尊的意味,但每篇看下來,總感受不對經——就是你們都把本身一套比較規範的開發套路充當出前端工程化,前端工程化變成了前端優化,讓人看了,「對啊,這樣作規範多了,優化不錯啊,巴拉巴拉」,但又以爲工程化不該該只是這些,像缺什麼,讓人看得雲裏霧裏,似懂非懂。這種文章雖不算誤人子弟,但諱莫如深,妖魔化了前端工程化。前端

    我照例是詢問了幾個前端好友,答案卻出其的一致,前端工程化就是規範標準化、構建自動化、測試自動化,還有模塊化、組件化,達到提高協做開發效率和開發質量。這樣說卻不能讓我滿意,我內心感受最關鍵的點沒有指出來。webpack

    因而在我瞭解這些後,以爲先撇清他們所講,本身靜下心來思考這個話題。web

    前端工程化是什麼?數據庫

    前端工程化是一種思想!在一個瞬間,我頭腦裏給我這麼一個答案。前端工程化首先應該是一個思想,而不是一個個具體的工程化方案,前面絕大多數文章、人都在講方案,以一個方案去講清一個思想,過輕浮了。就像模塊化,使用webpack/broswerify,或者requirejs/seajs,AMD/CMD/CommonJS就是模塊化,哪能這麼去解釋,連webpack得官網都說了,webpack is a module bundler,咱們甚至不用到前面所說的工具就能實現模塊化思想。舉另一個簡單例子,就是實現社會主義現代化,首先它應該是一個指導思想,而那些五年規劃,就是具體方案,這些五年規劃是爲了達到社會主義現代化的具體方針,方針有不少針對性解決的東西,但都是圍繞着指導思想走了。編程

    因此!認請思想,才能在這個思想指導下,制定出合適本身的項目的方案。(切莫直接照搬方案,至少在理解思想前)前端工程化

    那麼,前端工程化是什麼?app

    前端開發,首先是軟件開發,那麼前端工程化,應該是軟件工程的一部分。框架

  『軟件工程(software engineering)這個概念,研究和應用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟件,以及如何把通過時間考驗而證實正確的管理技術和當前可以獲得的最好的技術方法結合起來的學科。』 (維基百科)前端優化

    仔細剖析這句話是很是重要的。

    怎麼理解這個系統性。照着系統的概念,系統就是若干相互聯繫、相互做用、相互依賴的要素結合而成的,具備必定的結構和功能,並處在必定環境下的有機總體。咱們所要作的事,確定是互相關聯的,不會單一出現某一元素是置身事外,而且是有序的整理、編排造成的具備總體性的總體。強調的是關聯性、完整性。就軟件的生命週期來說,定義及規劃、需求分析、軟件設計、程序編碼、軟件測試、運行維護,每一個步驟都是息息相關的,繼而造成一個完整的過程。說個題外話,經常使用的生命週期模型,在現代軟件產品中,講究的快速迭代,就是迭代式模型。

    規範化。規範這個字面上就很好理解,可是問題就在於,咱們須要規範化的是什麼?其實軟件的生命週期的每一個步驟,都須要規範標準。做爲一個軟件工程師,我大可能是關注程序編碼的規範,其餘的生命週期裏的不甚瞭解。從開發環境(版本控制工具、IDE、數據庫等)、編程風格(代碼格式、命名規範),到編程經驗、自動化構建與測試。這些都應該有標準,固然,規範的深度也是值得考慮的問題,由於太多的具體標準,有時難以記住、實施,因此有時又提倡約定大於配置。

    可定量的過程化方法。跟前面所說的系統性、規範性同樣,可定量也是在描述這個過程化方法(開發流程)。可定量這個沒啥好說的,能夠規定數量(這解釋解釋得我臉紅)。

    正確的管理技術。管理是人、事、物,從人來說,就是如何進行團隊協做的方法;從事來說,是協調這件事的起始過程;從物來說,是對於某個具象的東西控制;例如代碼的版本控制。

    最好的技術方法。從編程開發上講,可簡單理解爲,使用什麼語言、工具、框架/庫,可最好適用於你的項目。(沒有最好的技術方法,只有最合適的)

    因此從上面的方法論,軟件工程的目的就是:提升效率、保證質量。

    那麼,若是從軟件工程概念理解前端工程化,那麼前端工程化可解讀成什麼?

    美團點評技術團隊有篇文章《前端工程化開發方案app-proto》總結的特別好。根據具體的業務特色,將前端的開發流程、技術、工具、經驗等規範化、標準化就是前端工程化。將該概念細細品味,就會發覺跟軟件工程的概念一一對應了。可能有人會說,組件化、模塊化、自動化怎麼沒有,我以爲組件化、模塊化應該歸類到編程經驗裏,還沒重要到要提出來強調說明,而自動化這個的確是能夠加上(畢竟是提升效率的大殺器)。 這裏我要特別讚許的是,文章的標題指明是前端工程化方案,沒有誤導人。

    因此前端工程化是什麼?

    將前端的開發流程、技術、工具、經驗等規範化、標準化、自動化就是前端工程化。到此爲止,前端工程化再也不是個模棱兩可的概念。在這概念下,如何指示本身的項目開發,我以爲軟件工程師能夠這樣:

  1. 選擇適宜的框架、庫,之因此先這個,由於它會影響你工具選擇和代碼規範。

  2. 選擇工具,包含開發工具、版本控制工具、構建工具、測試工具等。

  3. 制定代碼規範,統一編程風格,附帶工具作校驗。

  4. 選擇開發模式(相似以前說的組件化、模塊化),但通常這個是與框架結合了。

  5. 使用工具將開發流程自動化。

    好了,長篇大論了那麼多,這就是我對前端工程化的理解的艱辛路程。

 

本文爲原創文章,轉載請保留原出處,方便溯源,若有錯誤地方,謝謝指正。

相關文章
相關標籤/搜索