日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

ES6中 import、 export default 和 export 的用法和區(qū)別

時間:2021-05-06 10:42:08 類型:JS/JQUERY
字號:    

ES6實現(xiàn)了模塊功能export和import

在ES6出現(xiàn)之前,已經(jīng)出現(xiàn)了解決js模塊加載的方案,最主要的是CommonJS和AMD規(guī)范。CommonJS主要應(yīng)用于服務(wù)器,實現(xiàn)同步加載,如nodejs。AMD規(guī)范應(yīng)用于瀏覽器,如requirejs,為異步加載。同時還有CMD規(guī)范,為同步加載方案如seaJS。

ES6在語言規(guī)格的層面上,實現(xiàn)了模塊功能,而且實現(xiàn)得相當(dāng)簡單,完全可以取代現(xiàn)有的CommonJS和AMD規(guī)范,成為瀏覽器和服務(wù)器通用的模塊解決方案。

ES6模塊主要有兩個功能:export 和 import

export用于對外輸出本模塊(一個文件可以理解為一個模塊)變量的接口

import用于在一個模塊中加載另一個含有export接口的模塊

export default 和 export 的區(qū)別

1. export與export default均可用于導(dǎo)出常量、函數(shù)、文件、模塊等

2. 可以在其它文件或模塊中通過import+(常量 | 函數(shù) | 文件 | 模塊)名的方式,將其導(dǎo)入,以便能夠?qū)ζ溥M行使用

3. 在一個文件或模塊中,export、import可以有多個,export default僅有一個

4. 通過export方式導(dǎo)出,在導(dǎo)入時要加{ },export default則不需要

5. 其實很多時候export與export default可以實現(xiàn)同樣的目的,只是用法有些區(qū)別。注意第四條,通過export方式導(dǎo)出,在導(dǎo)入時要加{ },export default則不需要。使用export default命令,為模塊指定默認輸出,這樣就不需要知道所要加載模塊的變量名

// export 導(dǎo)出案例 demo1.js
export const str = 'hello'
export function init1 () {
  console.log('hello')
}
export const init2 = () => {
  console.log('hello)
}
export class INIT {
  constructor() {
    console.log('hello')
    this.init()
  }
  init () {
    console.log('hello')
  }
}
// 對應(yīng)導(dǎo)入方式 demo2.js ,可按需導(dǎo)入
import { str, init1, init2, INIT } from 'demo1.js
// export default 導(dǎo)出案例 demo1.js
const str = 'hello'
// 此處相當(dāng)于為str變量值"hello"起了一個系統(tǒng)默認的變量名default,自然default只能有一個值,所以一個文件內(nèi)不能有多個export default
export default str
// export default 導(dǎo)出案例 demo2.js
const str1 = 'hello'
export default {
  str1: str1,
  str2: 'hi'
}
// 對應(yīng)導(dǎo)入方式 demo3.js
import a from 'demo1.js'
import b from 'demo2.js'
console.log(a)
console.log(b)
// 本質(zhì)上,demo1.js文件和demo2.js文件的export default輸出一個叫做default的變量,然后系統(tǒng)允許你為它取任意名字,本案例中取名為a和b。
// 所以可以為import的模塊起任何變量名,且不需要用大括號包含

切記,注意以下代碼的區(qū)別

export default const a =1    // 錯誤
const a =1
export default a   // 正確
export const a =1    // 正確

const/let是ES6關(guān)鍵字,如果default后跟const之類的關(guān)鍵字是不符合的,

ES6規(guī)范中標(biāo)記出了default后面能帶的參數(shù)

究其本質(zhì),export default 命令其實,是將該命令后面的值賦給default變量以后再默認,只是輸出了一個叫做 default 的變量,所以export default的后面不能跟變量聲明語句

export default a 的含義是將變量a的值賦給變量default


作者:古德毛寧_39de
鏈接:https://www.jianshu.com/p/3aa5cd89211c


<