国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JavaScript ES6中export、import與export default的用法和區別

2024-05-06 16:35:51
字體:
來源:轉載
供稿:網友

前言

相信很多人都使用過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.jsvar 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) // boyecho(sex) // boy

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

// a.jsexport 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.jsvar 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.jsexport const str = 'hello world'export function f(a){ return a+1}

對應的導入方式:

//demo2.jsimport { str, f } from 'demo1' //也可以分開寫兩次,導入的時候帶花括號

2、

//demo1.jsexport default const str = 'hello world'

對應的導入方式:

//demo2.jsimport str from 'demo1' //導入的時候沒有花括號

總結

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 门头沟区| 黄平县| 龙岩市| 巴林右旗| 南阳市| 辽宁省| 宁都县| 三门峡市| 贞丰县| 海原县| 施秉县| 曲靖市| 通山县| 铜川市| 图木舒克市| 石嘴山市| 开平市| 福泉市| 盐城市| 金乡县| 韩城市| 金门县| 桦川县| 鹿邑县| 正蓝旗| 阿尔山市| 墨竹工卡县| 五河县| 壤塘县| 武穴市| 伊宁市| 富顺县| 托里县| 浏阳市| 嘉祥县| 门头沟区| 西平县| 江川县| 舟山市| 边坝县| 新干县|