Babel & Webpack & NPM – React 白話文運動 07

更新於 發佈於 閱讀時間約 7 分鐘



前言

這一篇會針對三個名詞做一些解釋,這些名詞是建立 React 專案,需要會的工具,包含了:

  1. Babel 是什麼?
  2. Webpack 是什麼?
  3. Npm 是什麼?

當然主要介紹的是使用這些工具的概念,但是還是有其他工具可以做選擇,例如:Npm 之於 Yarn。

Babel 是什麼?

前一篇文章有提到說 JSX 是需要透過工具來進行編譯的,而此系列文前幾篇也有提到 JavaScript ES6 的語法。

其實在某些情況下,ES6 也是需要進行編譯的,Babel 這個套件就是用來進行編譯的(Compile)。

先來講解一下 JavaScript 這個語言本身是一個直譯式的程式語言,並且瀏覽器能不編譯的情況下就執行裡面的程式語法。

不過不一定每個瀏覽器都支援所有的最新語法,因此我們才透過 Babel 這樣的工具。

將最新的語法,包含 ES6 以及 JSX 的語法轉換成舊版本的 JavaScript 語法,才能讓瀏覽器去執行。

從前端開發的角度來看,Babel 是一個不可或缺的工具。它的主要功能是將最新版本的 JavaScript 語法,尤其是 ECMAScript 6(ES6)的語法,轉換成瀏覽器能夠理解和執行的舊版本 JavaScript。

ES6 引入了許多強大的功能,如箭頭函數、模板字串、解構賦值等,但由於瀏覽器的支援度不同,為了確保跨瀏覽器相容性,我們需要使用 Babel 進行編譯。

另外,當開發使用 JSX 語法的 React 應用程式時,同樣需要 Babel 進行編譯。JSX 是一種 JavaScript 語法擴充,用來描述 React 元件的結構。它使得在 JavaScript 中撰寫類似 HTML 的標記成為可能,但瀏覽器無法直接執行 JSX 語法,因此需要 Babel 將其轉換成純 JavaScript。

Webpack 是什麼?

在講解完了 Babel 這個編譯工具之後,還需要特別講解一個模組化打包工具,叫做「Webpack」。

大家可以想像一下,一個大型專案裡面有相當多種類的檔案,除了 JavaScript 以外可能還有不同類型的檔案,例如:CSS、LESS、SCSS、JSX…等等。

那這些散落在各個檔案夾的檔案,就需要一個整合工具來去處理,因此才有了 Webpack 這樣的模組化打包工具(Module Bundler)出現,來將所有的檔案進行整合處理。

模組化打包工具的好處,除了讓我們將所有檔案進行模組化(Modulize)以外,更可以有效的提高效能。

這邊也花更多篇幅解釋更詳細一些,Webpack 是一個模組化打包工具,其主要功能是將專案中的各種檔案,包括 JavaScript、CSS、LESS、SCSS、JSX 等,整合成一個或多個最終的檔案。這樣的模組化打包有助於提高開發效率,尤其在大型專案中,我們可以將功能模組化拆分,進而實現程式碼重用和測試的便利性。

Webpack 不僅僅是一個打包工具,它還提供了一系列強大的功能,例如程式碼拆分(Code Splitting),這允許將程式碼拆分成多個區塊,僅在需要時載入,以提升頁面載入速度。同時,模組化(Modulize)是 Webpack 中的核心概念,通過將大型功能拆分成小型檔案和函式,實現程式碼的結構清晰,易於維護和測試。

除此之外,Webpack 還可以進行優化效能,將不同模組以及分散在不同位置的檔案進行打包,轉換成單一檔案,從而減少瀏覽器的載入時間,提升應用程式的性能。

webpack 功能介紹

程式碼拆分(Code Splitting)

將程式碼拆分成多個區塊,當我們需要使用某個區塊時,再進行載入。

模組化(Modulize)

模組化是一個很重要的概念,勢將很多個大型功能拆分成小型的檔案以及函式,透過這些模組化的小型檔案,來進行複用以及測試。

優化效能(Optimize performance)

將各種模組(Module)以及一些散落在不同地方的檔案進行打包,變成單一檔案,因此如果使用某個功能時進行讀取,大幅降低載入時間。

使用最新的語法

Webpack 的打包工具,是可以整合多個工具的,包含 Babel。因此也可以透過整合 Babel 的 Webpack,使用包含 JSX、ES6 …等等的最新語法。

整合 Babel 和 Webpack 的好處在於,可以使用最新版本的 JavaScript 語法,包括 ES6 和 JSX,並且這些語法會在建置過程中被轉換成瀏覽器可執行的版本。這樣的整合讓開發者能夠充分發揮最新技術的優勢,同時確保應用程式在各種瀏覽器中穩定運行。

Npm 是什麼?

上面已經介紹了兩種工具,但這些工具或是程式碼能去哪邊下載呢?對於前端開發者來說,只要安裝了 Node.js 時就會自動擁有 npm,而 npm 是什麼呢?

npm 是世界上最大的軟體註冊中心。 來自各大洲的開源開發人員使用 npm 來共享和借用軟體模組包,許多公司也使用 npm 來管理私人開發。

npm 全名為 Node Package Manager,我們可以透過 Node 裡面的 npm cli 工具進行套件的安裝以及管理。

舉例來說,如果想要使用 React 套件,只需要在終端機(terminal)輸入指令,npm 就會自動從Registry 中尋找 react 這個前端框架,並且下載至 node_modules 資料夾中。


備註

目前文章已移至  Babel & Webpack & NPM – React 白話文運動 07

未來文章一併更新於此網站 Hogan.B Lab

並且包含多語系 繁體中文英文日文簡體中文

觀看分類:React 白話文運動其他系列


React 白話文運動系列

React JSX – React 白話文運動 06

React 運作原理 – React 白話文運動 05

JavaScript 高階函式 – React 白話文運動 04

JavaScript Async Await – React 白話文運動 03

JavaScript ES6 Object – React 白話文運動 02

JavaScript ES6 – React 白話文運動 01


補充

這邊感謝 Sam Huang 的補充,歡迎各位讀者也可以去 Sam 的專區閱讀!

對文中提到 babel 的章節做些補充 Babel 本身是個 compiler 沒錯(官網自稱),但如果是指向下相容的部分,或許用 transpiler 比較精確。ES6 有大量語法是語法糖,透過 babel 可以轉成 ES5 語法,「可能」會有比較好的相容性。

然後直譯式及編譯式比較是語言跟執行環境的關係,目前也不太有所謂純粹直譯式的語言(為兼顧效能及彈性,通常會引入 JIT 之類技術)

 

留言
avatar-img
留言分享你的想法!
Sam Huang-avatar-img
2023/12/13
哈哈太客氣,請隨意 :)
Sam Huang 感謝 Sam 這邊已新增至文章,也同步更新部落格文章~https://hogantechs.com/zh_tw/react-frontend-javascript-babel-webpack-npm/
Sam Huang-avatar-img
2023/12/12
最近很常被你的文章打到,看到就回點資訊對文中提到 babel 的章節做些補充Babel 本身是個 compiler 沒錯(官網自稱),但如果是指向下相容的部分,或許用 transpiler 比較精確。ES6 有大量語法是語法糖,透過 babel 可以轉成 ES5 語法,「可能」會有比較好的相容性然後直譯式及編譯式比較是語言跟執行環境的關係,目前也不太有所謂純粹直譯式的語言(為兼顧效能及彈性,通常會引入 JIT 之類技術)小補充,請勿見怪 :)
Sam Huang 太感謝 Sam 了,這邊我也會把回覆訂選~這邊會介意我將你的補充放進文章,並且標註你的帳號嗎?
avatar-img
Hogan|軟體工程師沙龍
18會員
13內容數
希望能透過「React框架白話文運動」系列文章,利用口語化語表以及簡單的程式碼範例,能讓讀者更明白React的各種應用。 系列文章會講述以下: 1. 了解 ES6 JavaScript 語法 2. 了解 React 的運作原理 3. 了解 React 的狀態管理 4. 使用 React Hook管理狀態並且存取資料
2023/12/30
React Props - React 白話文運動。這一篇則會針對 React 語法進一步做講解, 前幾篇也學會了如何建立一個 React 元件,並且學會了元件之間有父子元件的關係。這篇會介紹 React Props 的概念,包含了:React 元件宣告、React Props。
Thumbnail
2023/12/30
React Props - React 白話文運動。這一篇則會針對 React 語法進一步做講解, 前幾篇也學會了如何建立一個 React 元件,並且學會了元件之間有父子元件的關係。這篇會介紹 React Props 的概念,包含了:React 元件宣告、React Props。
Thumbnail
2023/12/14
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
2023/12/14
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
2023/12/07
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。JSX 也是目前我們比較常看到的 React 寫法 ,因此接下來會介紹,JSX 是什麼?JSX 語法以及使用 JSX 建構 React 元件。
Thumbnail
2023/12/07
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。JSX 也是目前我們比較常看到的 React 寫法 ,因此接下來會介紹,JSX 是什麼?JSX 語法以及使用 JSX 建構 React 元件。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
套件(Package)是將程式或程式庫進行組織、分發和共享的一種方式。在軟體開發中,套件通常包含了相關的程式碼、資源文件和元數據,並提供了統一的名稱空間和版本管理。
Thumbnail
套件(Package)是將程式或程式庫進行組織、分發和共享的一種方式。在軟體開發中,套件通常包含了相關的程式碼、資源文件和元數據,並提供了統一的名稱空間和版本管理。
Thumbnail
Vite 是由 Vue 開發者 Evan You 所開發出來,用來加快、優化程式碼打包的工具,在這裡我們不免會需要提到大部分前端開發者可能都會聽過、使用過的前端工具:Webpack。 在那之前,我們先來聊聊為什麼前端會需要所謂的打包工具呢?
Thumbnail
Vite 是由 Vue 開發者 Evan You 所開發出來,用來加快、優化程式碼打包的工具,在這裡我們不免會需要提到大部分前端開發者可能都會聽過、使用過的前端工具:Webpack。 在那之前,我們先來聊聊為什麼前端會需要所謂的打包工具呢?
Thumbnail
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
前言這一篇會針對三個名詞做一些解釋,這些名詞是建立 React 專案,需要會的工具,包含了:Babel 是什麼?Webpack 是什麼?Npm 是什麼?當然主要介紹的是使用這些工具的概念,但是還是有其他工具可以做選擇,例如:Npm 之於 Yarn。這一篇會針對三個名詞做一些解釋,這些名詞是建立 R
Thumbnail
前言這一篇會針對三個名詞做一些解釋,這些名詞是建立 React 專案,需要會的工具,包含了:Babel 是什麼?Webpack 是什麼?Npm 是什麼?當然主要介紹的是使用這些工具的概念,但是還是有其他工具可以做選擇,例如:Npm 之於 Yarn。這一篇會針對三個名詞做一些解釋,這些名詞是建立 R
Thumbnail
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。JSX 也是目前我們比較常看到的 React 寫法 ,因此接下來會介紹,JSX 是什麼?JSX 語法以及使用 JSX 建構 React 元件。
Thumbnail
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。JSX 也是目前我們比較常看到的 React 寫法 ,因此接下來會介紹,JSX 是什麼?JSX 語法以及使用 JSX 建構 React 元件。
Thumbnail
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發。React 並不是一個框架。這是因為它只負責呈現 UI 的元件。不過,React 為 Angular 和 Vue 等框架提供了另一種解決方式,使我們可以與它一起完成覆雜的前端頁面功能。
Thumbnail
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發。React 並不是一個框架。這是因為它只負責呈現 UI 的元件。不過,React 為 Angular 和 Vue 等框架提供了另一種解決方式,使我們可以與它一起完成覆雜的前端頁面功能。
Thumbnail
前言 create react app 是一個可以快速設定 react 專案的一個工具,在建立專案時已經把 babel,webpack 都已經預先封裝設置好,如果我們要修改 webpack alias 設定該如何設定呢 什麼是 alias alias 在 webpack 設定意義叫做,檔案路徑
Thumbnail
前言 create react app 是一個可以快速設定 react 專案的一個工具,在建立專案時已經把 babel,webpack 都已經預先封裝設置好,如果我們要修改 webpack alias 設定該如何設定呢 什麼是 alias alias 在 webpack 設定意義叫做,檔案路徑
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News