- ES6 模組化的基礎概念
ES6 模組化的核心在於兩個關鍵字:export 和 import。
export:用於將模組中的變數、函式、類等匯出,供其他模組使用。
import:用於從其他模組中匯入需要的功能。
2. 模組的匯出(export)
ES6 提供了兩種匯出方式:命名匯出(Named Exports) 和 預設匯出(Default Export)。
2.1. 命名匯出(Named Exports)
你可以匯出多個變數或函式,並在其他模組中按需匯入。
// math.js
export const add = (a, b) => a + b;
export const multiply = (a, b) => a * b;
在另一個模組中,你可以按名稱匯入這些匯出內容:
// main.js
import { add, multiply } from './math.js';
console.log(add(2, 3)); // 輸出 5
console.log(multiply(2, 3)); // 輸出 6
2.2. 預設匯出(Default Export)
一個模組可以有一個預設匯出。預設匯出可以是任何值、函式或類。匯入時不需要用花括號,可以自定義匯入的名字。
// logger.js
export default function log(message) {
console.log(message);
}
匯入時:
// main.js
import log from './logger.js';
log('Hello, ES6 modules!'); // 輸出 'Hello, ES6 modules!'
- 模組的匯入(import)
3.1. 命名匯入
可以從模組中按名稱匯入多個匯出的內容:
import { add, multiply } from './math.js';
3.2. 預設匯入
當匯入模組的預設匯出時,不需要使用花括號,可以自行命名:
import log from './logger.js';
3.3. 匯入所有內容
你可以使用 * 匯入模組中的所有匯出,並賦值給一個物件,這樣可以透過物件屬性訪問模組中的每個匯出。
// 匯入所有命名匯出
import * as math from './math.js';
console.log(math.add(2, 3)); // 輸出 5
console.log(math.multiply(2, 3)); // 輸出 6
- 與 Webpack 的結合
在現代前端開發中,工具如 Webpack 可以很好地結合 ES6 模組來打包程式碼。Webpack 會解析 import 和 export 語法,並將不同模組打包成瀏覽器可以識別的程式碼。
Webpack 的配置一般如下:
const path = require('path');
module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader', // 使用 Babel 轉換 ES6 程式碼
},
},
],
},
};