JavaScript中的模塊化開(kāi)發(fā)ES6:import與export詳解
在 JavaScript 中,模塊化開(kāi)發(fā)是一種將代碼分割為獨(dú)立、可復(fù)用部分的開(kāi)發(fā)方式。ES6(ECMAScript 2015)引入了原生的模塊系統(tǒng)(即 import 和 export),使得開(kāi)發(fā)者可以更方便地組織和管理代碼。
?? 一、什么是模塊化?
模塊化是指將一個(gè)大型程序拆分為多個(gè)功能獨(dú)立的文件(模塊),每個(gè)模塊負(fù)責(zé)一部分功能,通過(guò)接口暴露和引入的方式進(jìn)行通信。模塊化的好處包括:
- 提高代碼可維護(hù)性
- 便于復(fù)用
- 避免命名沖突
- 更好的組織代碼結(jié)構(gòu)
?? 二、export 詳解
export 用于從模塊中導(dǎo)出函數(shù)、對(duì)象、變量等,供其他模塊使用。
1. 命名導(dǎo)出(Named Exports)
// math.js
export const PI = 3.14;
export function add(a, b) {
return a + b;
}
也可以在導(dǎo)出時(shí)使用別名:
export { PI as PI_CONSTANT } from './math.js';
2. 默認(rèn)導(dǎo)出(Default Export)
一個(gè)模塊只能有一個(gè)默認(rèn)導(dǎo)出。
// utils.js
export default function() {
console.log("Hello from default export");
}
3. 同時(shí)導(dǎo)出命名和默認(rèn)
// lib.js
export const name = "Alice";
export default class Person {
constructor(name) {
this.name = name;
}
}
?? 三、import 詳解
import 用于從其他模塊導(dǎo)入變量、函數(shù)、類(lèi)等。
1. 導(dǎo)入命名導(dǎo)出
// main.js
import { PI, add } from './math.js';
console.log(PI); // 3.14
console.log(add(2, 3)); // 5
2. 導(dǎo)入并重命名
import { PI as PI_CONSTANT } from './math.js';
3. 導(dǎo)入整個(gè)模塊
import * as MathUtils from './math.js'; console.log(MathUtils.PI); console.log(MathUtils.add(1, 2));
4. 導(dǎo)入默認(rèn)導(dǎo)出
// utils.js 是默認(rèn)導(dǎo)出一個(gè)函數(shù) import sayHello from './utils.js'; sayHello(); // Hello from default export
5. 同時(shí)導(dǎo)入默認(rèn)和命名導(dǎo)出
import Person, { name } from './lib.js';
console.log(name); // Alice
const p = new Person("Bob");
?? 四、模塊加載方式
模塊在瀏覽器中運(yùn)行時(shí),需要使用 <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>
?? 五、注意事項(xiàng)
- 模塊是嚴(yán)格模式:模塊默認(rèn)啟用
"use strict",無(wú)需手動(dòng)聲明。 - 模塊代碼只執(zhí)行一次:即使被多個(gè)文件導(dǎo)入,也只會(huì)執(zhí)行一次。
- 模塊路徑需帶擴(kuò)展名:如
./math.js,不能省略.js。 - 模塊是異步加載的:瀏覽器會(huì)異步加載模塊,不會(huì)阻塞 HTML 解析。
?? 六、示例:模塊化項(xiàng)目結(jié)構(gòu)
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)很強(qiáng)大,但在實(shí)際開(kāi)發(fā)中,我們常使用打包工具來(lái)優(yōu)化模塊加載:
- Webpack
- Rollup
- Vite
- Parcel
這些工具可以:
- 自動(dòng)處理模塊路徑
- 支持代碼分割
- 支持 TypeScript、JSX 等擴(kuò)展
- 提升加載性能
? 總結(jié)
| 特性 | 說(shuō)明 |
|---|---|
export | 導(dǎo)出變量、函數(shù)、類(lèi)等 |
import | 導(dǎo)入模塊內(nèi)容 |
| 命名導(dǎo)出 | 可導(dǎo)出多個(gè)值,通過(guò)名稱(chēng)導(dǎo)入 |
| 默認(rèn)導(dǎo)出 | 每個(gè)模塊只能有一個(gè)默認(rèn)導(dǎo)出 |
| 模塊執(zhí)行 | 只執(zhí)行一次,多次導(dǎo)入不會(huì)重復(fù)執(zhí)行 |
| 使用方式 | 需配合 <script type="module"> 使用 |
到此這篇關(guān)于JavaScript中的模塊化開(kāi)發(fā)ES6:import與export詳解的文章就介紹到這了,更多相關(guān)js中的模塊化:import與export內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS中判斷字符串中出現(xiàn)次數(shù)最多的字符及出現(xiàn)的次數(shù)的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇JS中判斷字符串中出現(xiàn)次數(shù)最多的字符及出現(xiàn)的次數(shù)的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
前端實(shí)現(xiàn)無(wú)感刷新Token的方法與避坑指南
實(shí)現(xiàn)token無(wú)感刷新對(duì)于前端來(lái)說(shuō)是一項(xiàng)非常常用的技術(shù),今天,我們就來(lái)徹底搞懂如何真正實(shí)現(xiàn)無(wú)感刷新Token以及為什么?90%?的實(shí)現(xiàn)都有致命缺陷2026-03-03
javascript中直接引用Microsoft的COM生成Word
直接引用Microsoft的COM是可以生成Word的,下面為大家介紹下實(shí)現(xiàn)的javascript代碼2014-01-01
div當(dāng)滾動(dòng)到頁(yè)面頂部的時(shí)候固定在頂部實(shí)例代碼
使用Javascript實(shí)現(xiàn)了滾動(dòng)頁(yè)面時(shí),DIV到達(dá)頂部時(shí)固定在頂部。在IE下效果有點(diǎn)閃,具體代碼如下,感興趣的朋友可以參考下哈2013-05-05
JS觸發(fā)事件event.target VS event.currentTarget實(shí)例
這篇文章主要介紹了JS觸發(fā)事件event.target VS event.currentTarget實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

