1. 程式人生 > >Node.js模組與npm item3—各種前端build工具

Node.js模組與npm item3—各種前端build工具

各種前端build工具


Node, NPM, Grunt, Gulp, Bower, Webpack, Browserify, Yeoman, Brunch…… 前端目前有很多很多名詞,看著這些感覺永遠也學不完。 不要被這些名詞嚇唬住,這些工具出現的目的是讓我們的工作更加簡單。

快速掌握build工具祕訣


快速掌握這些工具,抓住幾個核心概念:

幫助你安裝
幫助你做事

當你接觸到一個新的開發工具的時候,你首先需要搞清楚一個東西:“這個工具的目的是幫我安裝東西,還是幫我做事?”

安裝類的工具

npm、Bower和Yeoman幾乎什麼東西都能裝,它們可以用來安裝前端庫,例如Angular.js或是React.js。它們還可以為你的開發環境安裝伺服器。它們可以安裝測試庫。它們甚至可以幫你安裝其他的前端開發工具。

做事類的工具

Grunt、Webpack、Require.js、Brunchu和Gulp則更加複雜一點。這類工具的目標,是在web開發中幫你完成自動化。有的時候,這類工具所做的事情,被稱為“任務(task)”

為了完成這些任務,這類工具經常需要自己的包和外掛生態。每一個工具都會使用不同的方式來完成任務。這些工具所做的事情也不盡相同。一些工具,擅長處理那些你所指定的任務,例如Grunt和Gulp等工具。還有一些工具,只只專注於一件事情,例如處理JavaScript的依賴,例如Browserify和Require.js等工具。

build工具的“祖宗”是Node和npm


Node和npm負責安裝和執行所有這些工具,因此你的所有專案中都會有它們的身影。由於這個原因,很多開發者在安裝新的工具之前,都會盡可能的嘗試使用這兩個工具解決問題。

它們兩個一個負責安裝,一個負責幫你做事情。

  • Node是做事工具
  • npm則是安裝工具
    npm可以安裝Angular.js和React.js等庫。它還可以安裝伺服器,讓你的應用在開發階段可以在本地執行。它還可以安裝很多其他工具,幫你完成很多事情,例如簡化程式碼。

而Node,則是幫你完成事情的,例如執行JavaScript檔案,以及伺服器等。

如果你剛剛開始學習,那麼Node和npm都是必學的東西。隨著你的專案不斷豐富,你將會逐漸知道這兩個工具的極限能力。當它們無法滿足你的需要的時候,就是你需要開始安裝其他工具的時候了。

build其實就是production-ready版本的應用


開發者經常會把JavaScript和CSS拆分成獨立的檔案。

獨立檔案的好處,是讓你可以專注於編寫針對性較強的程式碼,讓每一部分程式碼只針對一個問題,以免日後程式碼多到讓你自己都難以管理。但是當你的應用準備好被推向市場的時候,專案記憶體在多個JavaScript或是CSS檔案並不是一個好主意。當用戶訪問你的網站的時候,每一個檔案都需要獨立的HTTP請求,這會讓站點載入速度下降。

解決方法就是,給專案建立“build”,它要將所有CSS檔案合併成一個檔案,然後再合併JavaScript檔案。這樣一來,你就可以將檔案完成最小化。要想建立這個build,你需要使用build工具。

“最正確工具組合”這麼個東西不存在


使用哪些工具,完全是你自己說了算的事情。

你也可以選擇什麼工具都不用。但是要記住,隨著專案的發展,複製、黏貼、整合、開啟伺服器等事情會讓你慢慢手忙腳亂起來。

你也可以只使用Node和npm,其他工具一概不用。對於新手來說,這種方式很好,但是和上一條一樣,慢慢你會開始感到力不從心。

或者,除了Node和npm之外,你也可以使用少數幾個其他工具。那麼,你的開發過程將會以Node和npm為核心,然後搭配Grunt和Bower,或是Webpack或是Gulp和Bower。

使用正確的工具,能夠幫你將很多繁瑣的事情實現自動化。但是使用工具的代價,就是你需要付出學習成本。

build工具學習成本較高,因此你只需要學習你用的上的工具


專案開發本身就已經很複雜了,你可能要使用新的語言或是框架。你可能需要應付複雜的業務邏輯。而引入新的工具,只會讓你的學習成本變得更高。

對此,我的建議是,只學習那些你用的上的工具,其他的就先緩一緩吧。

學習任何一種新東西,最好的方式就是進行實踐。例如,不要為了學習Grunt而去學習,你可以在你的專案中去嘗試運用。