11-ES6模塊

11.1 在javasacript之前的版本中模塊化代碼

通過(guò)立即執(zhí)行函數(shù)的必包實(shí)現(xiàn)模塊。

11.2 ES6模塊

1、ES6優(yōu)缺點(diǎn)和思想
  • es6結(jié)合了commonjs和AMD優(yōu)點(diǎn),
    • 與commonjs類似,es6模塊語(yǔ)法相對(duì)簡(jiǎn)單,基于文件(一個(gè)文件是一個(gè)模塊)
    • 與AMD類似,ES6支持異步模塊加載。
  • 瀏覽器尚未支持ES6,使用需編譯,如Babel;
  • 思想:
    • 必須顯式的使用export導(dǎo)出模塊變量,才能在外部訪問(wèn)模塊變量。否則,就算是模塊內(nèi)的全局變量,在模塊外部也訪問(wèn)不到;這樣做的好處是可以避免濫用全局變量而讓代碼更安全。
  • 兩個(gè)關(guān)鍵字
    • export 導(dǎo)出
    • import 導(dǎo)入
2、導(dǎo)出和導(dǎo)入

導(dǎo)出

//定義時(shí)導(dǎo)出
export const message = "hi"; 
export function message (){ };

//導(dǎo)出模塊標(biāo)識(shí)符
const body = "hello";
function head (){ };
export { body,head }; //一一羅列導(dǎo)出的變量

//導(dǎo)入
import { body,head } from "example.js"; //一一羅列導(dǎo)入的變量
import * as newModule from "example.js";//導(dǎo)出這個(gè)文件所有可導(dǎo)出的變量為一個(gè)新模塊,并取別名newModule
// 使用 newModule.head();

//默認(rèn)導(dǎo)出
export default class ninjia(){}
export function getClass(){} //定義默認(rèn)導(dǎo)出還可以指定導(dǎo)出的名稱

//默認(rèn)導(dǎo)出的導(dǎo)入
import newNinjia from "example.js";//導(dǎo)入默認(rèn)導(dǎo)出不需要加花括號(hào),可以重命名,直接使用,不需要加newModule.head();

//有默認(rèn)導(dǎo)出和其他導(dǎo)出的導(dǎo)入 簡(jiǎn)寫","
import newNinjia,{getClass} from 

//導(dǎo)出重命名
export {sayHi as sayHello}; //導(dǎo)出重命名
import {sayHello} from "example.js"; //導(dǎo)入則必須使用重命名導(dǎo)入 無(wú)法使用原始變量導(dǎo)入

//導(dǎo)入重命名
//當(dāng)需要導(dǎo)入的模塊名稱沖突時(shí),可使用as修改別名,當(dāng)然,修改后不能使用原名訪問(wèn)
import {greet as sayHello} from "example.js";
import {greet as sayHi} from "example.js";

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容