亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript ES 模塊的使用

 更新時間:2020年11月12日 10:46:03   作者:前端小蜜蜂  
這篇文章主要介紹了JavaScript ES 模塊的使用,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下

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

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

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

導(dǎo)出

默認(rèn)導(dǎo)出

每個模塊都有一個 "默認(rèn) "導(dǎo)出,它代表了模塊導(dǎo)出的主要值。可能會有更多的導(dǎo)出值,但默認(rèn)導(dǎo)出值代表模塊的定義。一個模塊中只能有一個默認(rèn)導(dǎo)出。

const fruitBasket = new FruitBasket()

export default fruitBasket

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

我們可以默認(rèn)導(dǎo)出一個函數(shù)聲明和一個類聲明,而不需要先把它分配給一個變量。

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

我們甚至可以將字面值作為默認(rèn)導(dǎo)出。

export default 123

命名導(dǎo)出

任何變量聲明都可以在創(chuàng)建時導(dǎo)出,這將創(chuàng)建一個 "命名導(dǎo)出",使用變量名作為導(dǎo)出名。

export const fruitBasket = new FruitBasket()

我們還可以立即導(dǎo)出函數(shù)和類的聲明。

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

如果我們想導(dǎo)出一個已經(jīng)定義好的變量,我們可以通過大括號把變量名包裝為對象來實現(xiàn)。

const fruitBasket = new FruitBasket()

export { fruitBasket }

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

const fruitBasket = new FruitBasket()
class Apple {}

export { fruitBasket as basketOfFruit, Apple }

聚合導(dǎo)出

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

import fruitBasket from './fruitBasket.js'

export { fruitBasket }

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

export * from './fruitBasket.js'

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

我們可以專門從其他文件中導(dǎo)出默認(rèn)模塊,或者在重新導(dǎo)出時為默認(rèn)導(dǎo)出命名。

export { default } from './fruitBasket.js'

// 或者

export { default as fruitBasket } from './fruitBasket.js'

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

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

最后,我們可以使用 as 關(guān)鍵字將整個模塊打包成一個單獨的命名導(dǎo)出。假設(shè)我們有以下文件:

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

現(xiàn)在我們可以將其打包成一個單獨的導(dǎo)出對象,這個對象包含了所有命名導(dǎo)出和默認(rèn)導(dǎo)出對象。

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

導(dǎo)入

默認(rèn)導(dǎo)入

當(dāng)導(dǎo)入一個默認(rèn)值時,我們需要給它指定一個名字。既然是默認(rèn)值,我們給它取什么名字并不重要。

import fruitBasketList from './fruitBasket.js'

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

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

命名導(dǎo)入

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

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

我們也可以在導(dǎo)入時使用 as 關(guān)鍵字重命名導(dǎo)入。

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

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

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

副作用導(dǎo)入

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

import './fruitBasket.js'

動態(tài)導(dǎo)入

有時我們在導(dǎo)入文件之前并不知道文件的名稱?;蛘呶覀冊趫?zhí)行代碼到一半的時候才需要導(dǎo)入一個文件,我們可以使用動態(tài)導(dǎo)入在代碼中的任何位置導(dǎo)入模塊。之所以稱之為 "動態(tài)",是因為導(dǎo)入的路徑可能是不確定的,可以是字符串變量也可以是字符串表達(dá)式,而不像靜態(tài)導(dǎo)入那樣必須是一個字符串字面量。

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

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

總結(jié)

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

以上就是JavaScript ES 模塊的使用的詳細(xì)內(nèi)容,更多關(guān)于JavaScript ES 模塊的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 《JavaScript函數(shù)式編程》讀后感

    《JavaScript函數(shù)式編程》讀后感

    這里給大家分享的是個人在最近看《JavaScript函數(shù)式編程》一書的第一章之后的一些感觸和理解,這里記錄下來,有需要的小伙伴可以參考下
    2015-08-08
  • JS替換字符串中指定位置的字符(多種方法)

    JS替換字符串中指定位置的字符(多種方法)

    這篇文章主要介紹了js替換字符串中指定位置的字符,本文通過兩種方法實例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • JS中使用變量保存arguments對象的方法

    JS中使用變量保存arguments對象的方法

    這篇文章主要介紹了JS中使用變量保存arguments對象的方法的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 小程序開發(fā)之云函數(shù)的使用教程詳解

    小程序開發(fā)之云函數(shù)的使用教程詳解

    云函數(shù)是部署在云端的函數(shù),他和小程序本地的函數(shù)存在很大的區(qū)別。本文將通過示例詳細(xì)為大家介紹如何在小程序開發(fā)中使用云函數(shù),需要的可以參考一下
    2022-03-03
  • js實現(xiàn)導(dǎo)入導(dǎo)出功能實例代碼(FileSave.js)

    js實現(xiàn)導(dǎo)入導(dǎo)出功能實例代碼(FileSave.js)

    這篇文章主要給大家介紹了關(guān)于js實現(xiàn)導(dǎo)入導(dǎo)出功能(FileSave.js)的相關(guān)資料,FileSaver.js是在客戶端保存文件的解決方案,非常適合在客戶端上生成文件的Web應(yīng)用,需要的朋友可以參考下
    2023-11-11
  • Layui 動態(tài)禁止select下拉的例子

    Layui 動態(tài)禁止select下拉的例子

    今天小編就為大家分享一篇Layui 動態(tài)禁止select下拉的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript實現(xiàn)漢字轉(zhuǎn)換為拼音及縮寫的方法示例

    JavaScript實現(xiàn)漢字轉(zhuǎn)換為拼音及縮寫的方法示例

    這篇文章主要介紹了JavaScript實現(xiàn)漢字轉(zhuǎn)換為拼音及縮寫的方法,結(jié)合實例形式分析了javascript數(shù)組遍歷、轉(zhuǎn)換實現(xiàn)漢字轉(zhuǎn)拼音相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • JavaScript中數(shù)據(jù)結(jié)構(gòu)與算法(二):隊列

    JavaScript中數(shù)據(jù)結(jié)構(gòu)與算法(二):隊列

    這篇文章主要介紹了JavaScript中數(shù)據(jù)結(jié)構(gòu)與算法(二):隊列,隊列是只允許在一端進(jìn)行插入操作,另一個進(jìn)行刪除操作的線性表,隊列是一種先進(jìn)先出(First-In-First-Out,F(xiàn)IFO)的數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下
    2015-06-06
  • 支持IE和FF的div+css選項卡

    支持IE和FF的div+css選項卡

    支持IE和FF的div+css選項卡...
    2006-11-11
  • js實現(xiàn)常見的工具條效果

    js實現(xiàn)常見的工具條效果

    本文主要介紹了js實現(xiàn)常見的工具條效果的實例。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03

最新評論