當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
javascript --- ES6模块与CommonJS模块的差异
生活随笔
收集整理的這篇文章主要介紹了
javascript --- ES6模块与CommonJS模块的差异
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
-
CommonJS模塊是運(yùn)行時(shí)加載,ES6模塊是編譯時(shí)輸出接口
是因?yàn)镃ommonJS加載的是一個(gè)對(duì)象(module.exports屬性),該對(duì)象只有在腳本運(yùn)行結(jié)束時(shí)才會(huì)生成.而ES6模塊不是對(duì)象,它的對(duì)外接口只是一種靜態(tài)定義,在代碼靜態(tài)解析階段就會(huì)生成. -
CommonJS模塊輸出的是一個(gè)值的復(fù)制,ES6模塊輸出的是值得引用
ES6模塊的運(yùn)行機(jī)制:JS引擎對(duì)腳本靜態(tài)分析的時(shí)候,遇到模塊加載命令import就會(huì)生成一個(gè)只讀引用。等到真正執(zhí)行時(shí),再根據(jù)這個(gè)只讀引用到被加載的模塊中取值。因此,ES6模塊是動(dòng)態(tài)引用,并且不會(huì)緩存值,模塊里面的變量綁定其所在的模塊.
// lib.js export let counter = 3; export function incCounter() {counter++; }// main.js import { counter, incCounter } from './lib'; console.log(counter); // 3 incCounter(); console.log(counter); // 4參考《ES6標(biāo)準(zhǔn)入門》(第3版)P477~P479
總結(jié)
以上是生活随笔為你收集整理的javascript --- ES6模块与CommonJS模块的差异的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 若依框架入门
- 下一篇: javascript --- Sort