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

更新於 2024/12/10閱讀時間約 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 之類技術)

 

希望能透過「React框架白話文運動」系列文章,利用口語化語表以及簡單的程式碼範例,能讓讀者更明白React的各種應用。 系列文章會講述以下: 1. 了解 ES6 JavaScript 語法 2. 了解 React 的運作原理 3. 了解 React 的狀態管理 4. 使用 React Hook管理狀態並且存取資料
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。JSX 也是目前我們比較常看到的 React 寫法 ,因此接下來會介紹,JSX 是什麼?JSX 語法以及使用 JSX 建構 React 元件。
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發。React 並不是一個框架。這是因為它只負責呈現 UI 的元件。不過,React 為 Angular 和 Vue 等框架提供了另一種解決方式,使我們可以與它一起完成覆雜的前端頁面功能。
這一篇會介紹非常重要的 JavaScript 函式概念 - 高階函式(Higher-order function),高階函數是將一個或多個函數作為參數,或將一個函數作為結果返回的函數。在本文中,我們將深入探討什麽是高階函數、使用高階函數的好處以及如何在實際應用中使用高階函數,函式導向是什麼?
歡迎來到 React 白話文運動第三篇,今天我們將深入探討 JavaScript 中的非同步操作,並介紹兩個重要的關鍵字:Async 與 Await。在這篇文章中,我們將透過實例演示非同步操作的概念,以及如何使用 Promise、Fetch、Async 和 Await 來更有效地處理非同步程式。
今天會接續介紹 JS ES6 其他新穎的語法,物件解構(Object Destructuring)物件語法強化(Object Literal Enhancement)陣列解構(Array Destructuring)延展運算子(Spread Operator)。
在進入到 React 前端框架之前,幫讀者複習有關 JavaScript 的知識。此篇著重,JavaScript 的歷史、let & const & var 差異、樣板字面值( Template Literals )、箭頭函式( Arrow Function )JS ES6 一個非常重要的前置知識。
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。JSX 也是目前我們比較常看到的 React 寫法 ,因此接下來會介紹,JSX 是什麼?JSX 語法以及使用 JSX 建構 React 元件。
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發。React 並不是一個框架。這是因為它只負責呈現 UI 的元件。不過,React 為 Angular 和 Vue 等框架提供了另一種解決方式,使我們可以與它一起完成覆雜的前端頁面功能。
這一篇會介紹非常重要的 JavaScript 函式概念 - 高階函式(Higher-order function),高階函數是將一個或多個函數作為參數,或將一個函數作為結果返回的函數。在本文中,我們將深入探討什麽是高階函數、使用高階函數的好處以及如何在實際應用中使用高階函數,函式導向是什麼?
歡迎來到 React 白話文運動第三篇,今天我們將深入探討 JavaScript 中的非同步操作,並介紹兩個重要的關鍵字:Async 與 Await。在這篇文章中,我們將透過實例演示非同步操作的概念,以及如何使用 Promise、Fetch、Async 和 Await 來更有效地處理非同步程式。
今天會接續介紹 JS ES6 其他新穎的語法,物件解構(Object Destructuring)物件語法強化(Object Literal Enhancement)陣列解構(Array Destructuring)延展運算子(Spread Operator)。
在進入到 React 前端框架之前,幫讀者複習有關 JavaScript 的知識。此篇著重,JavaScript 的歷史、let & const & var 差異、樣板字面值( Template Literals )、箭頭函式( Arrow Function )JS ES6 一個非常重要的前置知識。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
生活實驗 八六七     我的   目標 只有   一個, 就是   讓你    累夠。 所以    讓你 陪我    聽歌    High夠。 歌單: https://www.youtube.com/watch?v=usgAsgYIYq4
Thumbnail
在淑明女子大學附近,偶然發現了一家名為Bagel Factory的貝果店,提供多種口味的貝果與Cream Cheese,讓人食指大動。此文將分享該店的招牌及價位,並提供地圖資訊以方便大家前往。無論是喜歡藍莓、洋蔥,還是各式Cream Cheese,這裡都能滿足你的味蕾!
Thumbnail
以前去首爾玩的時候,最愛去安國站那區的咖啡廳,安國站大多都是韓屋造型的餐廳&咖啡廳,美感和氛圍都非常棒!所以一直都非常關注! 疫情期間,突然竄起這家 倫敦貝果博物館貝果店,聽說是Cafe Layered老闆開的新店!以前著迷司康的時候,去首爾旅行被這家Cafe Layered著迷住,甜點和氛圍加上
Thumbnail
傳統台灣人個性非常保守,不想承擔任何風險,投資任何商品,只要掛上保本,就會趨之若鶩,甚至把全部的錢都存在銀行,因為它「保本」。不過只要通膨大於定存利率,實質購買力還是會下降,等於實務上並沒有保本. 有沒有一種方式,讓我最差情況可以近乎保本,但是卻能保有獲利想像空間呢?答案就是槓鈴策略的資產配置!
Thumbnail
前言這一篇會針對三個名詞做一些解釋,這些名詞是建立 React 專案,需要會的工具,包含了:Babel 是什麼?Webpack 是什麼?Npm 是什麼?當然主要介紹的是使用這些工具的概念,但是還是有其他工具可以做選擇,例如:Npm 之於 Yarn。這一篇會針對三個名詞做一些解釋,這些名詞是建立 R
Thumbnail
山川之間的靈性連結,彷彿這片土地是仙境一般。而在這仙境之中,我計劃將建築巧妙地融入自然環境,這不僅是一座建築物,更是對大自然的尊重和回饋。 為了實現這個概念,我將建築設計為一個融入山的延伸,就像是大自然自己的創作之一。這
Thumbnail
藝。記 又再次回到維也納! 為甚麼這麼就沒更新,因為跟V先生去旅遊,我只有手機,所以沒辦法在這裡刊登,我們去巴黎,去了很多美術館,每天都去博物館的行程,不說還好,V先生高中時其實主科是修英文、藝術,第二外語是法文,在德國這裡高中都是可以自選主科的,是不是很剛好!!!所以我們在巴黎的旅途非常愉快
Thumbnail
我還沒能在這樣個孤獨環境中找到自得其樂的模式,還沒能在這個人際失落的階段找到處之泰然的方法。 所以,我說想家。 我想將自己對摺、打包,漂流過海。
大牛遞出辭呈,完成交接,歡喜北上Basel,念他心目中理想的神學院 Theologisches Seminar St. Chrischona,一步一腳印,朝宣教的路前進。 佈道演練 雖然是牧二代,傳福音真的很菜!大牛從沒想過自己去宣教,也不太把福音當一回事,傳福音或佈道,從來沒練過,這樣上宣教工場,
Thumbnail
奧賽美術館跟羅浮宮、艾菲爾鐵塔一樣,都沿塞納河而建。但這樣一個舉世無雙的藝術堡壘,與其說是為了慕名而來的觀光客建造,倒不如說是為了文學、藝術涵養豐富的法國人而存在。每月的第一個星期日,巴黎的博物館開放免費參觀,總是吸引絡繹不絕的人潮,但觀光客很難有幸恰巧賺到這個利多,................
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
生活實驗 八六七     我的   目標 只有   一個, 就是   讓你    累夠。 所以    讓你 陪我    聽歌    High夠。 歌單: https://www.youtube.com/watch?v=usgAsgYIYq4
Thumbnail
在淑明女子大學附近,偶然發現了一家名為Bagel Factory的貝果店,提供多種口味的貝果與Cream Cheese,讓人食指大動。此文將分享該店的招牌及價位,並提供地圖資訊以方便大家前往。無論是喜歡藍莓、洋蔥,還是各式Cream Cheese,這裡都能滿足你的味蕾!
Thumbnail
以前去首爾玩的時候,最愛去安國站那區的咖啡廳,安國站大多都是韓屋造型的餐廳&咖啡廳,美感和氛圍都非常棒!所以一直都非常關注! 疫情期間,突然竄起這家 倫敦貝果博物館貝果店,聽說是Cafe Layered老闆開的新店!以前著迷司康的時候,去首爾旅行被這家Cafe Layered著迷住,甜點和氛圍加上
Thumbnail
傳統台灣人個性非常保守,不想承擔任何風險,投資任何商品,只要掛上保本,就會趨之若鶩,甚至把全部的錢都存在銀行,因為它「保本」。不過只要通膨大於定存利率,實質購買力還是會下降,等於實務上並沒有保本. 有沒有一種方式,讓我最差情況可以近乎保本,但是卻能保有獲利想像空間呢?答案就是槓鈴策略的資產配置!
Thumbnail
前言這一篇會針對三個名詞做一些解釋,這些名詞是建立 React 專案,需要會的工具,包含了:Babel 是什麼?Webpack 是什麼?Npm 是什麼?當然主要介紹的是使用這些工具的概念,但是還是有其他工具可以做選擇,例如:Npm 之於 Yarn。這一篇會針對三個名詞做一些解釋,這些名詞是建立 R
Thumbnail
山川之間的靈性連結,彷彿這片土地是仙境一般。而在這仙境之中,我計劃將建築巧妙地融入自然環境,這不僅是一座建築物,更是對大自然的尊重和回饋。 為了實現這個概念,我將建築設計為一個融入山的延伸,就像是大自然自己的創作之一。這
Thumbnail
藝。記 又再次回到維也納! 為甚麼這麼就沒更新,因為跟V先生去旅遊,我只有手機,所以沒辦法在這裡刊登,我們去巴黎,去了很多美術館,每天都去博物館的行程,不說還好,V先生高中時其實主科是修英文、藝術,第二外語是法文,在德國這裡高中都是可以自選主科的,是不是很剛好!!!所以我們在巴黎的旅途非常愉快
Thumbnail
我還沒能在這樣個孤獨環境中找到自得其樂的模式,還沒能在這個人際失落的階段找到處之泰然的方法。 所以,我說想家。 我想將自己對摺、打包,漂流過海。
大牛遞出辭呈,完成交接,歡喜北上Basel,念他心目中理想的神學院 Theologisches Seminar St. Chrischona,一步一腳印,朝宣教的路前進。 佈道演練 雖然是牧二代,傳福音真的很菜!大牛從沒想過自己去宣教,也不太把福音當一回事,傳福音或佈道,從來沒練過,這樣上宣教工場,
Thumbnail
奧賽美術館跟羅浮宮、艾菲爾鐵塔一樣,都沿塞納河而建。但這樣一個舉世無雙的藝術堡壘,與其說是為了慕名而來的觀光客建造,倒不如說是為了文學、藝術涵養豐富的法國人而存在。每月的第一個星期日,巴黎的博物館開放免費參觀,總是吸引絡繹不絕的人潮,但觀光客很難有幸恰巧賺到這個利多,................