成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

JavaScript ES 模塊的使用

瀏覽:85日期:2023-10-08 15:47:13

自從 ES 模塊被添加到規范中后,JavaScript 中的模塊就更加簡單了。模塊按文件分開,異步加載。導出是用 export 關鍵字定義的;值可以用 import 關鍵字導入。

雖然導入和導出單個值的基礎知識非常容易掌握和使用,但還有許多其他方法可以使用 ES 模塊來使你的導入和導出按照你需要的方式工作。在本文中,我將介紹你可以在模塊中導出和導入的所有方法。

需要記住的一點是,導出和靜態導入只能發生在模塊的最外層。你不能從函數、if 語句或任何其他塊中導出或靜態導入。另外,動態導入可以在函數中完成,我們將在本文最后討論它。

導出

默認導出

每個模塊都有一個 '默認 '導出,它代表了模塊導出的主要值。可能會有更多的導出值,但默認導出值代表模塊的定義。一個模塊中只能有一個默認導出。

const fruitBasket = new FruitBasket()export default fruitBasket

注意,在默認導出之前,我必須先定義該值。如果我想,我也可以立即導出我的值,而不把它分配給一個變量,但這樣我就不能在導出的同時將其賦值給一個變量。

我們可以默認導出一個函數聲明和一個類聲明,而不需要先把它分配給一個變量。

export default function addToFruitBasket(fruit) { // ...}

我們甚至可以將字面值作為默認導出。

export default 123

命名導出

任何變量聲明都可以在創建時導出,這將創建一個 '命名導出',使用變量名作為導出名。

export const fruitBasket = new FruitBasket()

我們還可以立即導出函數和類的聲明。

export function addToFruitBasket(fruit) { // ...}export class FruitBasket { // ...}

如果我們想導出一個已經定義好的變量,我們可以通過大括號把變量名包裝為對象來實現。

const fruitBasket = new FruitBasket()export { fruitBasket }

我們甚至可以使用 as 關鍵字來重命名我們的導出,使之與變量名不同。如果需要,我們還可以同時導出其他變量。

const fruitBasket = new FruitBasket()class Apple {}export { fruitBasket as basketOfFruit, Apple }

聚合導出

我們還會經常遇到這種情況,就是從一個模塊導入模塊,然后立即導出這些值。比如這樣:

import fruitBasket from ’./fruitBasket.js’export { fruitBasket }

當你要同時導入和導出很多東西時,這可能會變得很繁瑣。ES 模塊允許我們同時導入和導出多個值。

export * from ’./fruitBasket.js’

這將把 ./fruitBasket.js 中所有命名導出重新包裝在一起再導出,但它不會導出默認導出值,因為一個模塊只能有一個默認導出值。如果我們要導入和導出多個具有默認導出的模塊,哪個值將成為導出模塊的默認導出值呢?

我們可以專門從其他文件中導出默認模塊,或者在重新導出時為默認導出命名。

export { default } from ’./fruitBasket.js’// 或者export { default as fruitBasket } from ’./fruitBasket.js’

我們也可以有選擇地從另一個模塊導出不同的項目,而不是把所有的項目都重新導出。在這種情況下,我們也使用大括號。

export { fruitBasket as basketOfFruit, Apple } from ’./fruitBasket.js’

最后,我們可以使用 as 關鍵字將整個模塊打包成一個單獨的命名導出。假設我們有以下文件:

// fruits.jsexport class Apple {}export class Banana {}

現在我們可以將其打包成一個單獨的導出對象,這個對象包含了所有命名導出和默認導出對象。

export * as fruits from ’./fruits.js’// { Apple: class Apple, Banana: class Banana }

導入

默認導入

當導入一個默認值時,我們需要給它指定一個名字。既然是默認值,我們給它取什么名字并不重要。

import fruitBasketList from ’./fruitBasket.js’

我們也可以同時導入所有的導出,包括命名導出和默認導出。這將會把所有的導出放到一個對象中,而默認導出將被賦予 'default '的屬性名。

import * as fruitBasket from ’./fruitBasket.js’// { default: fruitBasket }

命名導入

我們可以通過用大括號包裝導出的名稱來導入任何命名導出。

import { fruitBasket, Apple } from ’./fruitBasket.js’

我們也可以在導入時使用 as 關鍵字重命名導入。

import {fruitBasket as basketOfFruit, Apple} from ’./fruitBasket.js’

我們也可以在同一個導入語句中混合命名導出和默認導出。默認導出的內容會先列出,然后是大括號內的命名導出內容。

import fruitBasket, { Apple } from ’./fruitBasket.js’

副作用導入

有時候一個模塊并沒有導出值,我們只希望把該模塊導入進來立即執行。導入這樣的一個模塊時,不需要在文件中列出任何導出值。這被稱為”副作用(side-effect)“導入,它將直接執行模塊中的代碼而不提供任何導出值。

import ’./fruitBasket.js’

動態導入

有時我們在導入文件之前并不知道文件的名稱。或者我們在執行代碼到一半的時候才需要導入一個文件,我們可以使用動態導入在代碼中的任何位置導入模塊。之所以稱之為 '動態',是因為導入的路徑可能是不確定的,可以是字符串變量也可以是字符串表達式,而不像靜態導入那樣必須是一個字符串字面量。

由于 ES 模塊是異步的,所以模塊不會立即可用。我們必須等待它被加載后才能對它做事情。正因為如此,動態導入會返回一個解析模塊的 Promise。

async function createFruit(fruitName) { try { const FruitClass = await import(`./${fruitName}.js`) } catch { console.error(’Error getting fruit class module:’, fruitName) } return new FruitClass()}

總結

ES 導出的內容可以是值(包括變量和字面量)也可以是類和函數的聲明,從導出方式上可以分為默認導出、命名導出和聚合導出。根據不同的導出方式,導入可以分為默認導入、命名導入、副作用導入和動態導入。命名導出和導入均可以使用 as 指定別名。​導出和靜態導入必須在文件的最外層,動態導入可以在代碼的函數中異步完成。

以上就是JavaScript ES 模塊的使用的詳細內容,更多關于JavaScript ES 模塊的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美三电影在线| 欧美日韩一区二区视频在线 | 欧美a一区二区| 欧美精品一卡| 666欧美在线视频| 欧美色123| 亚洲美女少妇撒尿| 日韩码欧中文字| 欧洲av一区二区嗯嗯嗯啊| 一区二区三区四区精品在线视频| 国产精品美女久久久久高潮| 久久久精品tv| 亚洲午夜电影在线| 欧美高清不卡| 欧美日韩一级黄| 一区二区三区欧美亚洲| 丁香婷婷综合激情五月色| 美女图片一区二区| 亚洲啪啪综合av一区二区三区| 不卡一二三区首页| 成人黄色在线看| 久久久国产亚洲精品| 亚洲成人av中文| 亚洲伊人观看| 午夜激情综合网| 色噜噜狠狠成人网p站| 日韩制服丝袜av| 在线这里只有精品| 看电视剧不卡顿的网站| 91久久香蕉国产日韩欧美9色| 日韩电影在线观看电影| 日本道在线观看一区二区| 加勒比av一区二区| 9191久久久久久久久久久| 国产成人在线免费| 久久色在线观看| 欧美日一区二区在线观看 | 中文在线一区二区| wwww国产精品欧美| 午夜久久影院| 一区二区三区在线视频观看| 亚洲欧美网站| 蜜臀av亚洲一区中文字幕| 在线观看中文字幕不卡| 精品国产自在久精品国产| 综合欧美亚洲日本| 黄色精品免费| 国产精品久线在线观看| 午夜激情一区| 国产欧美日韩综合精品一区二区| eeuss鲁片一区二区三区在线看| 91精品黄色片免费大全| 黄网站免费久久| 久久久久久九九九九| 一区二区三区日韩欧美精品| 最新国产乱人伦偷精品免费网站| 自拍偷在线精品自拍偷无码专区| 亚洲天堂偷拍| 亚洲人吸女人奶水| av成人天堂| 伊人色综合久久天天人手人婷| 一本综合久久| 亚洲综合一区在线| 免费国产一区二区| 午夜精品久久久久久| 久久久久久久久久久一区| 午夜精品久久久久久久| 在线免费观看视频一区| 久久er99精品| 欧美亚一区二区| 国产在线视视频有精品| 777午夜精品免费视频| 国产乱人伦偷精品视频免下载| 制服丝袜日韩国产| 成人激情小说乱人伦| 久久噜噜亚洲综合| 欧美视频观看一区| 一区二区在线看| 玖玖在线精品| 九色|91porny| 91精品国产日韩91久久久久久| 成人高清免费在线播放| 久久这里只精品最新地址| 欧美激情性爽国产精品17p| 国产精品美女久久久久aⅴ| 在线免费高清一区二区三区| 亚洲国产一区二区在线播放| 色就色 综合激情| 国产精品77777竹菊影视小说| 精品国产一区二区三区忘忧草| 91美女视频网站| 中文字幕一区二区三区视频| 国产日韩综合| 久久精品国产一区二区三区免费看| 日韩一区二区不卡| 欧美日韩亚洲一区二区三区在线| 亚洲女子a中天字幕| 久久精品一区二区三区中文字幕| 久久精品国产99| 欧美一级夜夜爽| 午夜亚洲福利| 亚洲国产精品一区二区久久 | 欧美日韩高清在线| 成人18视频在线播放| 亚洲视频小说图片| 欧美午夜精品久久久久久孕妇| 成人毛片老司机大片| 17c精品麻豆一区二区免费| 久久久久久久久久久一区| 国产成人精品免费视频网站| 国产精品久久久久影院色老大| 久久久久国内| 国产精品白丝jk白祙喷水网站| 国产亚洲成年网址在线观看| 国产欧美成人| 激情都市一区二区| 久久影视一区二区| 一区二区三区四区五区在线| 韩国v欧美v日本v亚洲v| 中文字幕精品三区| 麻豆久久精品| 成人免费福利片| 亚洲欧美另类久久久精品| 欧美探花视频资源| 欧美日韩另类综合| 免费日本视频一区| 久久精品一区蜜桃臀影院| 国产欧美日韩在线播放| 精品一区二区免费| 欧美国产亚洲另类动漫| 色婷婷av一区二区三区软件| 成人福利视频网站| 亚洲国产精品一区二区久久| 欧美成人精品1314www| 亚洲欧洲日本一区二区三区| 精品在线亚洲视频| 国产精品美女久久久久aⅴ| 在线免费观看日本欧美| 韩国一区二区三区美女美女秀| 免费观看30秒视频久久| 国产精品国模大尺度视频| 欧美日韩成人高清| 夜久久久久久| 成人av片在线观看| 日韩国产精品久久久久久亚洲| 国产亚洲欧美色| 在线亚洲免费视频| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产日韩1区| av一本久道久久综合久久鬼色| 婷婷综合在线观看| 国产日韩欧美激情| 欧美精品免费视频| 国产农村妇女精品一区二区| 91网站黄www| 久久99国内精品| 亚洲自拍偷拍综合| 久久日一线二线三线suv| 色婷婷国产精品综合在线观看| 欧美日韩国产高清视频| 激情五月播播久久久精品| 亚洲一区二区三区四区的| 久久久综合视频| 欧美人妇做爰xxxⅹ性高电影 | 国产69精品久久99不卡| 日韩高清不卡一区二区| 亚洲乱码国产乱码精品精98午夜| 欧美一级在线观看| 在线观看91视频| 一区二区三区四区五区在线 | 国产一区二区三区免费在线观看| 亚洲综合色成人| 国产精品久久久久久久久久久免费看| 日韩一区二区在线播放| 91成人网在线| 国产精品区一区| 激情婷婷欧美| 91在线免费播放| 国模一区二区三区白浆| 婷婷久久综合九色国产成人| 国产精品国产精品国产专区不片| 欧美sm极限捆绑bd| 欧美片在线播放| 日本二三区不卡| 风间由美中文字幕在线看视频国产欧美| 亚洲精品五月天| 亚洲一区二区三区四区中文字幕| 一区二区三区中文字幕电影 | 日韩精品一区二区三区在线播放| 日韩一级免费观看| 日韩欧美视频在线| 2023国产精品自拍| 久久久99久久| 中文字幕的久久| 国产精品电影院| 亚洲欧美一区二区三区国产精品 | 亚洲精品在线一区二区| 国产视频一区二区在线观看| 国产欧美日韩在线看| 国产精品视频一二|