欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

javascript如何動(dòng)態(tài)導(dǎo)入ECMAScript模塊

小編給大家分享一下javascript如何動(dòng)態(tài)導(dǎo)入ECMAScript模塊,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)文峰免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

ECMAScript(又名ES2015或ES)模塊是在JavaScript中組織內(nèi)聚代碼塊的一種方法。

ES模塊系統(tǒng)有2個(gè)部分:

  • import模塊 - 使用 import { func } from './myModule'

  • export模塊-  使用 export const func = () => {}

import 模塊是使用 import 語法導(dǎo)入依賴項(xiàng)的模塊:

import { concat } from './concatModule';

concat('a', 'b'); // => 'ab'

而被導(dǎo)入的模塊使用export語法從自身導(dǎo)出組件:

export const concat = (paramA, paramB) => paramA + paramB;

import { concat } from './concatModule'使用ES模塊的方式是靜態(tài)的:意味著模塊之間的依賴關(guān)系在編譯時(shí)就已經(jīng)知道了。

雖然靜態(tài)導(dǎo)入在大多數(shù)情況下是有效的,但有時(shí)我們想節(jié)省客戶的帶寬并有條件地加載模塊。

為了實(shí)現(xiàn)這一點(diǎn),我們可以用不同的方式使用 import(pathToModule) 語法對(duì)模塊進(jìn)行新的動(dòng)態(tài)導(dǎo)入:作為一個(gè)函數(shù)。動(dòng)態(tài)導(dǎo)入是ES2020開始的一個(gè)JavaScript語言特性。

1. 動(dòng)態(tài)模塊的導(dǎo)入

當(dāng)import關(guān)鍵字用作函數(shù)而不是靜態(tài)導(dǎo)入語法時(shí):

const module = await import(pathToModule);

它返回一個(gè)promise ,并開始一個(gè)加載模塊的異步任務(wù)。如果模塊被成功加載,那么promise就會(huì)解析到模塊的內(nèi)容,否則,promise 就會(huì)被拒絕。

請注意,pathToModule可以是任何表達(dá)式,其值為表示導(dǎo)入模塊路徑的字符串。有效的值是普通的字符串字面意義(如./myModule)或有字符串的變量。

例如,我們在一個(gè)異步函數(shù)中加載一個(gè)模塊。

async function loadMyModule() {
  const myModule = await import('./myModule');
  // ... use myModule
}

loadMyModule();

有趣的是,與靜態(tài)導(dǎo)入相反,動(dòng)態(tài)導(dǎo)入接受以模塊路徑求值的表達(dá)式

async function loadMyModule(pathToModule) {
  const myModule = await import(pathToModule);
  // ... use myModule
}

loadMyModule('./myModule');

現(xiàn)在,了解了如何加載模塊后,我們來看看如何從導(dǎo)入的模塊中提取組件。

2.導(dǎo)入組件

2.1 導(dǎo)入命名組件

考慮下面的模塊:

// namedConcat.js
export const concat = (paramA, paramB) => paramA + paramB;

這里導(dǎo)出了一個(gè) concat 函數(shù)。

如果想動(dòng)態(tài)導(dǎo)入namedConcat.js,并訪問命名的導(dǎo)出concat,那么只需通解構(gòu)的方式就行了:

async function loadMyModule() {
  const { concat } = await import('./namedConcat');
  concat('b', 'c'); // => 'bc'
}

loadMyModule();

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

如果模塊是默認(rèn)導(dǎo)出的,我們可以使用default屬性來訪問。

還是上面的例子,我們將defaultConcat.js里面的concat函數(shù)默認(rèn)導(dǎo)出:

// defaultConcat.js
export default (paramA, paramB) => paramA + paramB;

在動(dòng)態(tài)導(dǎo)入模塊中,可以使用default屬性來訪問:

async function loadMyModule() {
  const { default: defaultImport } = await import('./defaultConcat');
  defaultImport('b', 'c'); // => 'bc'
}

loadMyModule();

注意,default在JavaScript中是一個(gè)關(guān)鍵字,所以它不能用作變量名。

2.3導(dǎo)入混合形式

如果模塊里面既有默認(rèn)導(dǎo)出也有命名導(dǎo)出,同樣也是使用解構(gòu)的方式來訪問:

async function loadMyModule() {
  const { 
    default: defaultImport,
    namedExport1,
    namedExport2
  } = await import('./mixedExportModule');
  // ...
}

loadMyModule();

3.何時(shí)使用動(dòng)態(tài)導(dǎo)入

建議在模塊比較大的,或者要根據(jù)條件才導(dǎo)入的模塊可以使用動(dòng)態(tài)導(dǎo)入。

async function execBigModule(condition) {
  if (condition) {
    const { funcA } = await import('./bigModuleA');
    funcA();
  } else {
    const { funcB } = await import('./bigModuleB');
    funcB();
  }
}

execBigModule(true);

對(duì)于小模塊(如前面例子中的namedConcat.jsdefaultConcat.js),只有幾十行代碼,使用動(dòng)態(tài)導(dǎo)入在點(diǎn)殺雞用牛刀感覺。

看完了這篇文章,相信你對(duì)“javascript如何動(dòng)態(tài)導(dǎo)入ECMAScript模塊”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

標(biāo)題名稱:javascript如何動(dòng)態(tài)導(dǎo)入ECMAScript模塊
網(wǎng)站路徑:http://aaarwkj.com/article40/igeeho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站策劃、商城網(wǎng)站軟件開發(fā)、定制開發(fā)ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
最新天堂av资源在线观看| 精品国产成人一区二区| 天天做日日干夜夜操| 国产一级黄色片免费看| 日本不卡不二三区在线看| 久久热这里只有精品网站| 亚洲视频一直看一直爽| 美女一区二区三区日本美女在线观看| 91久久亚洲综合精品成人| 亚洲av色香蕉一区二区| 中文字幕久久一区二区三区| 超薄丝袜美腿一二三区在线播放 | 97免费公开在线观看| 人妻天堂久久一区二区三区| 91国产自拍在线视频| 免费观看国产裸体视频| 成人短篇在线视频夫妻刺激自拍| 国产在线一区二区三区不卡| 欧美熟妇精品一级视频| 婷婷综合伊人久久狠狠| 日韩不卡在线观看免费| 国产91日韩欧美在线观看| 欧美国产日韩二区一区在线| 午夜理论片在线观看有码| 国产在线精品成人欧美| 蜜桃视频在线视频免费观看| 欧美日韩国产精品一区二区在线观看| 一区二区五区日韩国产| 日韩不卡一区二区三区| 人妻av一区二区三区| 精品人妻一区二区在线99| 亚洲精品在线观看av| 色哟哟视频在线免费观看| 色琪琪原网另类欧美日韩| 18禁在线免费观看网站| 色噜噜人妻av中文字幕| 日本色电影一区二区三区| 日本av在线中文一区二区| 老牛av一区二区三区| 91久久高清国语自产拍| 精品久久久久久蜜臀av|