JavaScript中的模塊化開發(fā)ES6:import與export詳解
在 JavaScript 中,模塊化開發(fā)是一種將代碼分割為獨立、可復用部分的開發(fā)方式。ES6(ECMAScript 2015)引入了原生的模塊系統(tǒng)(即 import 和 export),使得開發(fā)者可以更方便地組織和管理代碼。
?? 一、什么是模塊化?
模塊化是指將一個大型程序拆分為多個功能獨立的文件(模塊),每個模塊負責一部分功能,通過接口暴露和引入的方式進行通信。模塊化的好處包括:
- 提高代碼可維護性
- 便于復用
- 避免命名沖突
- 更好的組織代碼結構
?? 二、export 詳解
export 用于從模塊中導出函數(shù)、對象、變量等,供其他模塊使用。
1. 命名導出(Named Exports)
// math.js
export const PI = 3.14;
export function add(a, b) {
return a + b;
}
也可以在導出時使用別名:
export { PI as PI_CONSTANT } from './math.js';
2. 默認導出(Default Export)
一個模塊只能有一個默認導出。
// utils.js
export default function() {
console.log("Hello from default export");
}
3. 同時導出命名和默認
// lib.js
export const name = "Alice";
export default class Person {
constructor(name) {
this.name = name;
}
}
?? 三、import 詳解
import 用于從其他模塊導入變量、函數(shù)、類等。
1. 導入命名導出
// main.js
import { PI, add } from './math.js';
console.log(PI); // 3.14
console.log(add(2, 3)); // 5
2. 導入并重命名
import { PI as PI_CONSTANT } from './math.js';
3. 導入整個模塊
import * as MathUtils from './math.js'; console.log(MathUtils.PI); console.log(MathUtils.add(1, 2));
4. 導入默認導出
// utils.js 是默認導出一個函數(shù) import sayHello from './utils.js'; sayHello(); // Hello from default export
5. 同時導入默認和命名導出
import Person, { name } from './lib.js';
console.log(name); // Alice
const p = new Person("Bob");
?? 四、模塊加載方式
模塊在瀏覽器中運行時,需要使用 <script type="module">:
<script type="module" src="main.js"></script>
或者內(nèi)聯(lián)方式:
<script type="module">
import { add } from './math.js';
console.log(add(1, 2));
</script>
?? 五、注意事項
- 模塊是嚴格模式:模塊默認啟用
"use strict",無需手動聲明。 - 模塊代碼只執(zhí)行一次:即使被多個文件導入,也只會執(zhí)行一次。
- 模塊路徑需帶擴展名:如
./math.js,不能省略.js。 - 模塊是異步加載的:瀏覽器會異步加載模塊,不會阻塞 HTML 解析。
?? 六、示例:模塊化項目結構
project/ │ ├── index.html ├── main.js ├── math.js └── utils.js
math.js
export const PI = 3.14;
export function multiply(a, b) {
return a * b;
}
utils.js
export default function greet(name) {
console.log(`Hello, ${name}!`);
}
main.js
import { PI, multiply } from './math.js';
import greet from './utils.js';
console.log("PI:", PI);
console.log("Multiply 3 * 4:", multiply(3, 4));
greet("Alice");
?? 七、模塊打包工具(可選)
雖然原生模塊已經(jīng)很強大,但在實際開發(fā)中,我們常使用打包工具來優(yōu)化模塊加載:
- Webpack
- Rollup
- Vite
- Parcel
這些工具可以:
- 自動處理模塊路徑
- 支持代碼分割
- 支持 TypeScript、JSX 等擴展
- 提升加載性能
? 總結
| 特性 | 說明 |
|---|---|
export | 導出變量、函數(shù)、類等 |
import | 導入模塊內(nèi)容 |
| 命名導出 | 可導出多個值,通過名稱導入 |
| 默認導出 | 每個模塊只能有一個默認導出 |
| 模塊執(zhí)行 | 只執(zhí)行一次,多次導入不會重復執(zhí)行 |
| 使用方式 | 需配合 <script type="module"> 使用 |
到此這篇關于JavaScript中的模塊化開發(fā)ES6:import與export詳解的文章就介紹到這了,更多相關js中的模塊化:import與export內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JS中判斷字符串中出現(xiàn)次數(shù)最多的字符及出現(xiàn)的次數(shù)的簡單實例
下面小編就為大家?guī)硪黄狫S中判斷字符串中出現(xiàn)次數(shù)最多的字符及出現(xiàn)的次數(shù)的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
javascript中直接引用Microsoft的COM生成Word
直接引用Microsoft的COM是可以生成Word的,下面為大家介紹下實現(xiàn)的javascript代碼2014-01-01
JS觸發(fā)事件event.target VS event.currentTarget實例
這篇文章主要介紹了JS觸發(fā)事件event.target VS event.currentTarget實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10

