JavaScript 的 ESM 模組操作(import, export)

什麼是 ESM

在 JavaScript 中,ESM(ECMAScript Modules)是官方標準的模組系統,旨在提供一種在不同檔案或模組之間共享功能的方法。自 ES6(ECMAScript 2015)以來,JavaScript 提供了原生的 import 和 export 語句用於處理模組匯入和匯出。這些特性被廣泛用於現代前端開發框架和工具中,如 React、Angular、Vue.js,以及 Node.js

 

export

export 語法用於將代碼(如函式、class、變數或常數等)從一個檔案匯出,使得其他檔案可以通過 import 語法來使用這些程式碼。export 有兩種主要形式:命名匯出(Named Exports)和預設匯出(Default Exports)。

命名匯出

你可以從模組中匯出多個值,每個都有自己的名字。其他檔案匯入時可以指定需要的匯出名稱。

例如:

// file: mathFunctions.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;

// 或者在最後統一匯出
const multiply = (a, b) => a * b;
const divide = (a, b) => a / b;
export { multiply, divide };

 

預設匯出

每個模組可以有一個預設匯出。預設匯出的匯入時不需要知道匯出的名字。

export default { //file: MyComponent.js
	string : 'hello',
	array : [1,2,3],
	fn() {
    	console.log('default')
	}
}

 

import

import 語句用於將其他檔案或模組的 export 匯入到當前檔案中。根據匯出類型,匯入的方式也有所不同。

匯入命名匯出

注意要匯入匯出的模組時,script 的標籤要加上 type="module"

// 匯入具體的命名匯出
import { add, subtract } from './mathFunctions.js';
console.log(add(1, 2));

// 匯入所有命名匯出為一個對象
import * as math from './mathFunctions.js';
console.log(math.add(1, 2)); // 輸出: 3

 

匯入預設匯出

import app from './MyComponent.js';
console.log(app.str) // hello
console.log(app.array) // [1,2,3]
app.fn() // default

動態匯入

JavaScript 也支援動態匯入,這允許你根據需要在程式碼運行時匯入模組。這是通過 import() 函式實現的,它會回傳一個 Promise。

比如我有一個 myModule.js,內容是:

export function greet() {
    console.log("Hello from myModule!");
}
 
// 動態匯入模組
import('./myModule.js')
  .then((module) => {
    module.greet();
  })
  .catch(err => console.error('Module loading failed: ' + err));

動態匯入的用途

  1. 滿足特定條件載入模組:當特定條件滿足時才加載模組。
  2. 程式碼拆分:減少初始載入時間,將不常用的功能延遲載入。
  3. 條件性模組:根據執行時的條件決定載入哪個模組。

ESM 提供了一個強大且靈活的系統來組織和重用 JavaScript 程式碼,尤其適合大型專案和現代前端框架。它支援靜態和動態匯入,使得程式碼分割和lazyload成為可能,有助於提高應用的性能和維護性。

 

課程推薦

AI工作術全面學習實戰營:6 堂精選課程,學會最好用 AI 工具,翻轉你的人生

AI工作術全面學習實戰營:6 堂精選課程,學會最好用 AI 工具,翻轉你的人生

《PChome雜誌》攜手 5 位在 AI 領域的專業講師,打造上述 6 堂實用課程,教你學會時下最好用的 AI 工具,導入生成式 AI 來產製工作內容,改造並升級你的工作流程。

輸入折扣碼 ZERO2024 還可以額外獲得 NT$400 優惠喔。

HTML與SEO實戰應用—並以ChatGPT助力提升網站品質與流量

HTML與SEO實戰應用—並以ChatGPT助力提升網站品質與流量

本課程專為希望深入了解 HTML 並有效結合 SEO 策略的學員設計。我們將重點放在 HTML 的深度學習與應用上,同時穿插介紹如何透過搜索引擎優化提升網站能見度。透過即時互動式的直播教學,加上 ChatGPT 的輔助,您將學習到如何建立一個結構優良、美觀且符合 SEO 標準的網站。這不僅會提升網站的用戶體驗,還會大幅提高網站的搜索引擎排名,進而增加訪客流量和潛在客戶。
用AI強化職場競爭力 ChatGPT、Midjourney從入門到精通

用AI強化職場競爭力 ChatGPT、Midjourney從入門到精通

在快速變遷的職場中,提升競爭力成為關鍵。透過引領潮流的AI技術,ChatGPT和Midjourney將助您勇攀高峰。無論您是AI新手還是專家,這個課程將引導您從入門到精通,解密AI的奧秘,並學習如何運用於職場。
GitHub Copilot AI 程式碼編輯工具應用實務班

GitHub Copilot AI 程式碼編輯工具應用實務班

讓學員瞭解有效地使用該工具來加速開發流程、提高程式碼品質和生產力。課程重點放在以 JavaScript 程式語言為例,介紹 Copilot 的基本原理、使用方法和最佳實踐。

輸入折扣碼 TC1456JA 還可以額外獲得 NT$500 優惠喔。

ChatGPT X Clipchamp AI 生成影片、配音與字幕應用實戰班

ChatGPT X Clipchamp AI 生成影片、配音與字幕應用實戰班

掌握Clipchamp AI的操作技巧,靈活運用Clipchamp AI進行影片編輯和創作,實現創意表達和傳播目的。

輸入折扣碼 TC1451JAN 還可以額外獲得 NT$500 優惠喔。

如何串接多種數位工具資訊?Looker Studio 資料視覺化實戰班|GoogleAds x FB廣告 x GA流量數據

如何串接多種數位工具資訊?Looker Studio 資料視覺化實戰班|GoogleAds x FB廣告 x GA流量數據

Looker Studio除了可協助使用者監控網站流量、廣告成效、選擇匯入資源的管道之外,還可以將數據資料多平台整合、數據報表即時更新、數據範本可重複套用的效益,透過自動化系統,將數據全部匯入同一個報表平台,是企業不可或缺的重要工具。

輸入折扣碼 TC1270JIA 還可以額外獲得 NT$500 優惠喔。

和我們交流

加入我們的社群,裡面會有一些技術的內容、有趣的技術梗,以及職缺的分享,歡迎和我們一起討論。