首頁  >  文章  >  web前端  >  詳解JavaScript ES6中export import與export default的用法與差異

詳解JavaScript ES6中export import與export default的用法與差異

黄舟
黄舟原創
2017-03-20 14:50:494437瀏覽

這篇文章主要跟大家介紹了JavaScript ES6中export、import與export default的用法和區別,文中介紹的非常詳細,相信對大家學習ES6會有一定的幫助,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

相信很多人都使用過export、export default、import,然而它們到底有什麼差別呢? 在看他們之間的差異之前,我們先來看看它們的用法。

ES6 import和export的用法

#ES6之前已經出現了js模組載入的方案,最主要的是CommonJS和AMD規範。 commonjs主要應用於伺服器,實作同步加載,如nodejs。 AMD規範應用於瀏覽器,如requirejs,為非同步載入。同時還有CMD規範,為同步載入方案如seaJS。

ES6在語言規格的層面上,實現了模組功能,而且實現得相當簡單,完全可以取代現有的CommonJS和AMD規範,成為瀏覽器和伺服器通用的模組解決方案。

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

  • #export用於對外輸出本模組(一個檔案可以理解為一個模組)變數的介面

  • import用於在一個模組中載入另一個含有export介面的模組。

也就是說使用export指令定義了模組的對外介面以後,其他JS檔就可以透過import指令載入這個模組(檔)。如下(假設a和b檔在同一目錄下)

// a.js

var sex="boy";
var echo=function(value){
  console.log(value)
}
export {sex,echo} 
//通过向大括号中添加sex,echo变量并且export输出,就可以将对应变量值以sex、echo变量标识符形式暴露给其他文件而被读取到
//不能写成export sex这样的方式,如果这样就相当于export "boy",外部文件就获取不到该文件的内部变量sex的值,因为没有对外输出变量接口,只是输出的字符串。
// b.js
通过import获取a.js文件的内部变量,{}括号内的变量来自于a.js文件export出的变量标识符。
import {sex,echo} from "./a.js" 
console.log(sex) // boy
echo(sex) // boy

a.js檔也可以如下export語法寫,但不如上邊直觀,不太推薦。

// a.js
export var sex="boy";
export var echo=function(value){
  console.log(value)
}

//因为function echo(){}等价于 var echo=function(){}所以也可以写成
export function echo(value){
   console.log(value)
}

以上是export與module的基本用法,再進行拓展學習

前面的例子可以看出,b.js使用import指令的時候,使用者需要知道a.js所暴露出的變數標識符,否則無法載入。可以使用export default指令,為模組指定預設輸出,這樣就不需要知道要載入模組的變數名稱

//a.js
var sex="boy";
export default sex(sex不能加大括号)
//原本直接export sex外部是无法识别的,加上default就可以了.但是一个文件内最多只能有一个export default。
其实此处相当于为sex变量值"boy"起了一个系统默认的变量名default,自然default只能有一个值,所以一个文件内不能有多个export default。
// b.js
本质上,a.js文件的export default输出一个叫做default的变量,然后系统允许你为它取任意名字。所以可以为import的模块起任何变量名,且不需要用大括号包含
import any from "./a.js"
import any12 from "./a.js" 
console.log(any,any12) // boy,boy

ES6中export、import與export default區別

在Javascript ES6中,export與export default皆可用於匯出#常數函數、檔案、模組等,你可以在其它檔案或模組中透過import+(常數| 函數| 檔案| 模組)名的方式,將其導入,以便能夠對其進行使用,但在一個檔案或模組中,export、import可以有多個,export default僅有一個。

具體使用:

1、

//demo1.js
export const str = 'hello world'

export function f(a){
 return a+1
}

對應的導入方式:

//demo2.js
import { str, f } from 'demo1' //也可以分开写两次,导入的时候带花括号

2、

//demo1.js
export default const str = 'hello world'

對應的導入方式:

//demo2.js
import str from 'demo1' //导入的时候没有花括号

總結

#

以上是詳解JavaScript ES6中export import與export default的用法與差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn