久久久久久AV无码免费看大片,亚洲一区精品人人爽人人躁,国产成人片无码免费爱线观看,亚洲AV成人无码精品网站,为什么晚上搞的时候要盖被子

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

時(shí)間:2021-05-06 10:42:08 類型:JS/JQUERY
字號(hào):    

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

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

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

ES6模塊主要有兩個(gè)功能:export 和 import

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

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

export default 和 export 的區(qū)別

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

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

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

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

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

// 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')
  }
}
// 對(duì)應(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"起了一個(gè)系統(tǒng)默認(rèn)的變量名default,自然default只能有一個(gè)值,所以一個(gè)文件內(nèi)不能有多個(gè)export default
export default str
// export default 導(dǎo)出案例 demo2.js
const str1 = 'hello'
export default {
  str1: str1,
  str2: 'hi'
}
// 對(duì)應(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輸出一個(gè)叫做default的變量,然后系統(tǒng)允許你為它取任意名字,本案例中取名為a和b。
// 所以可以為import的模塊起任何變量名,且不需要用大括號(hào)包含

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

export default const a =1    // 錯(cuò)誤
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 命令其實(shí),是將該命令后面的值賦給default變量以后再默認(rèn),只是輸出了一個(gè)叫做 default 的變量,所以export default的后面不能跟變量聲明語(yǔ)句

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


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


<