精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

這些 ECMAScript 模塊知識,都是我需要知道的

開發(fā) 前端
ECMAScript模塊(簡稱ES模塊)是一種JavaScript代碼重用的機制,于2015年推出,一經(jīng)推出就受到前端開發(fā)者的喜愛。在2015之年,JavaScript 還沒有一個代碼重用的標(biāo)準(zhǔn)機制。多年來,人們對這方面的規(guī)范進(jìn)行了很多嘗試,導(dǎo)致現(xiàn)在有多種模塊化的方式。

[[341136]]

ES 模塊是什么?

ECMAScript模塊(簡稱ES模塊)是一種JavaScript代碼重用的機制,于2015年推出,一經(jīng)推出就受到前端開發(fā)者的喜愛。在2015之年,JavaScript 還沒有一個代碼重用的標(biāo)準(zhǔn)機制。多年來,人們對這方面的規(guī)范進(jìn)行了很多嘗試,導(dǎo)致現(xiàn)在有多種模塊化的方式。

你可能聽說過AMD模塊,UMD,或CommonJS,這些沒有孰優(yōu)孰劣。最后,在ECMAScript 2015中,ES 模塊出現(xiàn)了。

我們現(xiàn)在有了一個“正式的”模塊系統(tǒng)。

ES 模塊無處不在?

理論上,ES 模塊應(yīng)該在所有JavaScript環(huán)境中。實際上,ES 模塊的主要應(yīng)用還是在瀏覽器上。

2020年5月,Node.js v12.17.0 增加了在不使用標(biāo)記前提下對ECMAScript模塊的支持。這意味著我們現(xiàn)在可以在Node.js中使用import和export,而無需任何其他命令行標(biāo)志。

ECMAScript模塊要想在任何JavaScript環(huán)境通用,可能還需要很長的路要走,但方向是正確的。

ES 模塊是什么樣的

ES 模塊是一個簡單的文件,我們可以在其中聲明一個或多個導(dǎo)出。以下面utils.js為例:

  1. // utils.js 
  2. export function funcA() { 
  3.   return "Hello named export!"
  4.  
  5. export default function funcB() { 
  6.   return "Hello default export!"

這里有兩個導(dǎo)出。

第一個是命名導(dǎo)出,后面是export default,表示為默認(rèn)導(dǎo)出。

假設(shè)我們的項目文件夾中有一個名為utils.js的文件,我們可以將這個模塊提供的對象導(dǎo)入到另一個文件中。

如何從 ES模塊 導(dǎo)入

假設(shè)我們在項目文中還有一個Consumer.js的文件。要導(dǎo)入utils.js公開的函數(shù),我們可以這樣做:

  1. // consumer.js 
  2. import { funcA } from "./util.js"

這種對應(yīng)我們的命名導(dǎo)入方式.

如果我們要導(dǎo)入 utils.js 中的默認(rèn)導(dǎo)出也就是 funcB 方法,我們可以這樣做:

  1. // consumer.js 
  2. import { funcA } from "./util.js"

當(dāng)然,我們可以導(dǎo)入同時導(dǎo)入命名和默認(rèn)的:

  1. // consumer.js 
  2. import funcB, { funcA } from "./util.js"
  3.  
  4. funcB(); 
  5. funcA(); 

我們也可以用星號導(dǎo)入整個模塊:

  1. import * as myModule from './util.js'
  2.  
  3. myModule.funcA(); 
  4. myModule.default(); 

注意,這里要使用默認(rèn)到處的方法是使用 default() 而不是 funcB()。

從遠(yuǎn)程模塊導(dǎo)入:

  1. import { createStore } from "https://unpkg.com/redux@4.0.5/es/redux.mjs"
  2.  
  3. const store = createStore(/* do stuff */) 

瀏覽器中的 ES 模塊

現(xiàn)代瀏覽器支持ES模塊,但有一些警告。要使用模塊,需要在 script 標(biāo)簽上添加屬性 type, 對應(yīng)值 為 module。

  1. <html lang="en"
  2. <head> 
  3.     <meta charset="UTF-8"
  4.     <title>ECMAScript modules in the browser</title> 
  5. </head> 
  6. <body> 
  7. <p id="el">The result is: </p> 
  8. </body> 
  9. <script type="module"
  10.     import { appendResult } from "./myModule.js"
  11.  
  12.     const el = document.getElementById("el"); 
  13.     appendResult(el); 
  14. </script> 
  15. </html> 

 myModule.js 內(nèi)容如下:

  1. export function appendResult(element) { 
  2.   const result = Math.random(); 
  3.   element.innerText += result; 

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

ES 模塊是靜態(tài)的,這意味著我們不能在運行時更改導(dǎo)入。隨著2020年推出的動態(tài)導(dǎo)入(dynamic imports),我們可以動態(tài)加載代碼來響應(yīng)用戶交互(webpack早在ECMAScript 2020推出這個特性之前就提供了動態(tài)導(dǎo)入)。

考慮下面的代碼:

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4.     <meta charset="UTF-8"
  5.     <title>Dynamic imports</title> 
  6. </head> 
  7. <body> 
  8. <button id="btn">Load!</button> 
  9. </body> 
  10. <script src="loader.js"></script> 
  11. </html> 

再考慮一個帶有兩個導(dǎo)出的JavaScript模塊

  1. // util.js 
  2. export function funcA() { 
  3.   console.log("Hello named export!"); 
  4.  
  5. export default function funcB() { 
  6.   console.log("Hello default export!"); 

為了動態(tài)導(dǎo)入 util.js 模塊,我們可以點擊按鈕在去導(dǎo)入:

  1. / loader.js 
  2. const btn = document.getElementById("btn"); 
  3.  
  4. btn.addEventListener("click", () => { 
  5.   // loads named export 
  6.   import("./util.js").then(({ funcA }) => { 
  7.     funcA(); 
  8.   }); 
  9. }); 

這里使用解構(gòu)的方式,取出**命名導(dǎo)出 ** funcA 方法:

  1. ({ funcA }) => {} 

ES模塊實際上是JavaScript對象:我們可以解構(gòu)它們的屬性以及調(diào)用它們的任何公開方法。

要使用動態(tài)導(dǎo)入的默認(rèn)方法,可以這樣做

  1. // loader.js 
  2. const btn = document.getElementById("btn"); 
  3.  
  4. btn.addEventListener("click", () => { 
  5.   import("./util.js").then((module) => { 
  6.     module.default(); 
  7.   }); 
  8. }); 

當(dāng)作為一個整體導(dǎo)入一個模塊時,我們可以使用它的所有導(dǎo)出

  1. // loader.js 
  2. const btn = document.getElementById("btn"); 
  3.  
  4. btn.addEventListener("click", () => { 
  5.   // loads entire module 
  6.   // uses everything 
  7.   import("./util.js").then((module) => { 
  8.     module.funcA(); 
  9.     module.default(); 
  10.   }); 
  11. }); 

還有另一種用于動態(tài)導(dǎo)入的常見樣式,如下所示:

  1. const loadUtil = () => import("./util.js"); 
  2.  
  3. const btn = document.getElementById("btn"); 
  4.  
  5. btn.addEventListener("click", () => { 
  6.   // 
  7. }); 

loadUtil返回的是一個 promise,所以我們可以這樣操作

  1. const loadUtil = () => import("./util.js"); 
  2.  
  3. const btn = document.getElementById("btn"); 
  4.  
  5. btn.addEventListener("click", () => { 
  6.   loadUtil().then(module => { 
  7.     module.funcA(); 
  8.     module.default(); 
  9.   }) 
  10. }) 

動態(tài)導(dǎo)入看起來不錯,但是它們有什么用呢?

使用動態(tài)導(dǎo)入,我們可以拆分代碼,并只在適當(dāng)?shù)臅r候加載重要的代碼。在 JavaScript 引入動態(tài)導(dǎo)入之前,這種模式是webpack(模塊綁定器)獨有的。

像React和Vue通過動態(tài)導(dǎo)入代碼拆分來加載響應(yīng)事件的代碼塊,比如用戶交互或路由更改。

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

假設(shè)我們項目有一個 person.json 文件,內(nèi)容如下:

  1.   "name""Jules"
  2.   "age": 43 

現(xiàn)在,我們需要動態(tài)導(dǎo)入該文件以響應(yīng)某些用戶交互。

因為 JSON 文件不是一個方法,所以我們可以使用默認(rèn)導(dǎo)出方式:

  1. const loadPerson = () => import('./person.json'); 
  2.  
  3. const btn = document.getElementById("btn"); 
  4.  
  5. btn.addEventListener("click", () => { 
  6.   loadPerson().then(module => { 
  7.     const { name, age } = module.default
  8.     console.log(name, age); 
  9.   }); 
  10. }); 

這里我們使用解構(gòu)的方式取出 name 和 age :

  1. const { name, age } = module.default

動態(tài)導(dǎo)入與 async/await

因為 import() 語句返回是一個 Promise,所以我們可以使用 async/await:

  1. const loadUtil = () => import("./util.js"); 
  2.  
  3. const btn = document.getElementById("btn"); 
  4.  
  5. btn.addEventListener("click", async () => { 
  6.   const utilsModule = await loadUtil(); 
  7.   utilsModule.funcA(); 
  8.   utilsModule.default(); 
  9. }) 

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

使用import()導(dǎo)入模塊時,可以按照自己的意愿命名它,但要調(diào)用的方法名保持一致:

  1. import("./util.js").then((module) => { 
  2.     module.funcA(); 
  3.     module.default(); 
  4.   }); 

或者:

  1. import("./util.js").then((utilModule) => { 
  2.   utilModule.funcA(); 
  3.   utilModule.default(); 
  4. }); 

作者:Valentino Gagliardib 譯者:前端小智 來源:valentinog

原文:https://www.valentinog.com/blog/es-modules/

本文轉(zhuǎn)載自微信公眾號「大遷世界」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系大遷世界公眾號。

 

責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2018-02-08 08:08:12

2018-05-16 09:41:13

神經(jīng)網(wǎng)絡(luò)NN函數(shù)

2022-04-28 12:17:26

瀏覽器連字符hyphens

2016-01-20 09:44:22

物聯(lián)網(wǎng)標(biāo)準(zhǔn)

2018-01-03 11:35:34

推送AndroidiOS

2016-11-17 18:37:44

機房建設(shè)

2018-04-27 09:58:51

2014-09-01 14:31:11

2012-07-27 09:25:40

2017-10-02 10:39:48

2018-01-09 15:44:57

2015-07-15 10:26:29

2022-02-09 16:25:34

區(qū)塊鏈技術(shù)加密貨幣

2021-05-08 11:16:44

手機快充技術(shù)

2019-02-01 10:23:05

2018-07-03 14:40:31

2020-09-17 16:08:29

網(wǎng)絡(luò)安全數(shù)據(jù)技術(shù)

2020-12-30 11:22:11

Node.js前端模塊

2011-12-13 10:16:34

2022-04-29 09:00:00

Platform架構(gòu)內(nèi)核線程
點贊
收藏

51CTO技術(shù)棧公眾號

av色图一区| 青青操免费在线视频| 天堂综合在线播放| 一区二区三区美女| 久久久久一区二区| 91免费视频播放| 一区在线免费观看| 一区二区三区视频免费| 中文字幕av一区二区三区人妻少妇 | 91福利国产成人精品照片| 亚洲五月六月| 免费av网站在线播放| 日韩在线卡一卡二| 欧美国产中文字幕| 男女做爰猛烈刺激| ady日本映画久久精品一区二区| 色综合天天综合给合国产| 资源网第一页久久久| 日韩大片b站免费观看直播| 开心九九激情九九欧美日韩精美视频电影| 欧美俄罗斯乱妇| 最新中文字幕av| 国产精品xxxav免费视频| 在线观看91视频| 狠狠干 狠狠操| v片在线观看| 欧美国产日韩a欧美在线观看| 国产精品国色综合久久| 中文字幕乱码一区二区| 亚洲永久网站| 久久久久中文字幕2018| 天天看天天摸天天操| 国产伦一区二区三区| 亚洲成年人在线| 深夜福利网站在线观看| 欧美videos粗暴| 日本精品视频一区二区| 欧美,日韩,国产在线| 污污在线观看| 亚洲日穴在线视频| 国产又爽又黄ai换脸| 搞黄视频免费在线观看| 久久日韩精品一区二区五区| 国产一区二区三区黄| 亚洲av无码乱码国产麻豆| 精品一区二区久久久| 国产欧美va欧美va香蕉在| 国产一区二区99| 亚洲一区黄色| 97精品视频在线播放| 国产无遮挡免费视频| 好吊视频一区二区三区四区| 裸体女人亚洲精品一区| 疯狂撞击丝袜人妻| 国产精品精品国产一区二区| 色偷偷av亚洲男人的天堂| 国产亚洲精品精品精品| 日本女优一区| 色久欧美在线视频观看| 午夜激情福利电影| 91精品综合久久久久久久久久久| 日韩在线观看视频免费| 国产一区在线观看免费| 国产精品精品国产一区二区| 欧美成人第一页| 久久久久久福利| 日韩午夜在线| 国产成人综合一区二区三区| 最近日韩免费视频| 九色porny丨国产精品| 91免费的视频在线播放| 国产激情视频在线播放| 成人av在线影院| 欧美高清性xxxxhdvideosex| sese一区| 亚洲精品美腿丝袜| 日韩网站在线免费观看| 在线毛片观看| 欧美日韩久久一区二区| 久久综合桃花网| 任你弄精品视频免费观看| 亚洲欧美一区二区精品久久久| 欧美18—19性高清hd4k| 亚洲理论电影网| 久久久久久国产免费| 免费观看成人毛片| 久久精品av麻豆的观看方式| ts人妖另类在线| 国产资源在线看| 亚洲婷婷在线视频| 国产极品尤物在线| 韩国成人在线| 精品免费视频一区二区| 中文字幕免费看| 欧美国产一级| 91国内在线视频| 中文字幕91爱爱| 成人黄色一级视频| 相泽南亚洲一区二区在线播放| 色www永久免费视频首页在线| 色综合天天性综合| 亚洲视频在线不卡| 亚洲另类av| 欧美巨猛xxxx猛交黑人97人| 欧美a视频在线观看| 国产精品自拍毛片| 欧美日韩三区四区| 久久免费电影| 欧美精品一卡两卡| 一级黄色片大全| 综合精品久久| 国产精品免费久久久久影院| 成人午夜视频一区二区播放| 国产精品美女久久久久久2018| av日韩一区二区三区| 在线高清欧美| 国产一区二区三区视频 | 国产乱视频在线观看| 一区二区高清在线| 午夜两性免费视频| 蜜臀av免费一区二区三区| 超碰91人人草人人干| 伊人成年综合网| 97精品国产露脸对白| 91免费版看片| 欧美风情在线视频| 亚洲性av在线| 国产精品视频123| 成人av资源在线观看| 男女啪啪的视频| 91精品美女| 一区二区在线视频| 免费黄色网址在线| av不卡免费在线观看| 日韩中文字幕在线不卡| 四虎视频在线精品免费网址| 中文字幕亚洲欧美日韩高清| 99久久久久久久久| www.欧美色图| 国产成人永久免费视频| 亚洲国产视频二区| 不卡中文字幕av| 国产精品亚洲lv粉色| 国产精品久久久久久久久快鸭| 妞干网在线免费视频| 亚洲精品**不卡在线播he| 国内精品视频在线| 免费看国产片在线观看| 一区二区成人在线| 久久久久亚洲av成人网人人软件| 亚洲精品成人无限看| 91视频国产高清| av在线免费观看网址| 日韩一区和二区| 天天天天天天天天操| 国产乱子伦视频一区二区三区| 国产又粗又硬又长| 深夜福利一区| 久久久久亚洲精品成人网小说| 国内老熟妇对白xxxxhd| 夜夜操天天操亚洲| 少妇户外露出[11p]| 亚洲在线一区| 亚洲 国产 日韩 综合一区| 精品自拍视频| 欧美成人午夜视频| 色婷婷视频在线| 日韩欧美在线一区| 欧美激情久久久久久久| 九九**精品视频免费播放| 裸体裸乳免费看| 成人性生交大片免费看中文视频| 91精品国产高清久久久久久91| 毛片在线能看| 在线成人av影院| 久热这里只有精品在线| 91在线视频免费91| 在线看的黄色网址| 一区二区三区网站 | 欧美色就是色| 亚洲a级在线观看| 91av久久| 中文字幕亚洲在线| 国产 日韩 欧美 综合| 欧美午夜片在线免费观看| 99re6热在线精品视频| 国产成人在线视频免费播放| 18禁免费观看网站| 国产精品成人一区二区不卡| 精品蜜桃一区二区三区| 欧美成人一二区| 97视频免费在线观看| 影音先锋久久久| 制服丝袜一区二区三区| 青娱乐国产在线| 99精品视频在线观看| 日韩av手机版| 欧美午夜在线| 无遮挡亚洲一区| 亚洲一区二区免费在线观看| 日本在线精品视频| 天堂va在线| 国产一区二区三区网站| 亚洲国产精品视频在线| 日本韩国欧美一区| 久久久久久久久久99| 国产亚洲精品免费| 久久久久国产免费| 日本午夜精品视频在线观看| 亚洲国产成人精品无码区99| 欧美gay男男猛男无套| 狠狠色噜噜狠狠色综合久| 日本电影久久久| 国产成人黄色av| 青草青在线视频| 久久精品国产亚洲7777| 国产在线网站| 日韩经典一区二区三区| www.国产免费| 欧美久久一二三四区| 无码人妻一区二区三区线| 亚洲一区二区三区四区在线免费观看 | 色资源二区在线视频| 美女999久久久精品视频| 黄色av网站在线| 日韩高清欧美高清| 亚洲av无码一区二区三区dv| 7777精品伊人久久久大香线蕉完整版| 狠狠人妻久久久久久| 亚瑟在线精品视频| 久久精品99国产精| 亚洲久草在线视频| 中国一级片在线观看| 中文天堂在线一区| www久久久久久久| 久久免费偷拍视频| 国产成人无码一区二区在线观看| 粉嫩一区二区三区在线看| 黄色三级视频在线播放| 久久99九九99精品| 精品久久久99| 久久超级碰视频| 久久这里只精品| 青青草91视频| 亚洲欧美激情网| 日本在线不卡视频| 黄色免费网址大全| 视频一区二区中文字幕| aaa毛片在线观看| 麻豆九一精品爱看视频在线观看免费| 2022亚洲天堂| 蜜桃久久av| 亚洲成色www.777999| 奇米在线7777在线精品| 国产又大又黄又粗又爽| 捆绑调教美女网站视频一区| www.cao超碰| 极品少妇一区二区| 午夜激情视频网| 国产电影精品久久禁18| 四虎永久免费观看| 成人网在线播放| 亚洲图片综合网| 91麻豆免费在线观看| 日韩一区二区a片免费观看| 国产欧美一区二区在线| 乱老熟女一区二区三区| 亚洲另类中文字| 五月天婷婷丁香| 狠狠色噜噜狠狠狠狠97| 99超碰在线观看| 欧美日韩一区视频| 国产色综合视频| 亚洲国产精久久久久久 | 日韩综合av| 91传媒在线免费观看| 成人爽a毛片免费啪啪红桃视频| 久精品国产欧美| 精品视频免费在线观看| 韩国黄色一级大片| 亚洲精品乱码久久久久久蜜桃麻豆| 女性女同性aⅴ免费观女性恋| 日韩电影在线一区二区| 亚洲综合在线一区二区| 99精品国产91久久久久久| 国产精品天天干| 亚洲综合一区二区| 日本a级c片免费看三区| 欧美一区二区三区在线观看| 色欲av伊人久久大香线蕉影院| 夜夜躁日日躁狠狠久久88av| 成人黄色网址| 欧美自拍视频在线| 电影一区二区三区久久免费观看| 福利精品视频| 北条麻妃国产九九九精品小说| 国产精品av免费观看| 久久成人免费| 潘金莲一级淫片aaaaa| 久久久久久黄色| avtt天堂在线| 欧美亚洲综合久久| 可以免费看毛片的网站| 最近2019年中文视频免费在线观看| 高清电影在线免费观看| 国产精品啪视频| 日韩美女精品| 激情图片qvod| 蜜桃av一区二区三区电影| av黄色一级片| 亚洲激情欧美激情| 在线观看国产区| 日韩电影在线观看永久视频免费网站| 欧美性天天影视| 国产91免费看片| 精品视频高潮| 成人在线观看毛片| 免费在线观看日韩欧美| free性中国hd国语露脸| 一区二区三区四区乱视频| 中文字幕男人天堂| 亚洲美女www午夜| 国精产品一区一区三区mba下载| 国产欧美日韩亚洲精品| 国产欧美日韩精品高清二区综合区| 女人色极品影院| 精品中文字幕一区二区| 国产伦理片在线观看| 一本一道久久a久久精品| 日本免费网站在线观看| 美女啪啪无遮挡免费久久网站| 成人亚洲综合| 亚洲高清在线播放| 丝袜a∨在线一区二区三区不卡| 亚洲激情 欧美| 亚洲第一狼人社区| 亚洲AV午夜精品| 欧美精品一区二区三区国产精品| 一区二区三区| 一道精品一区二区三区 | 国产精品高清免费在线观看| 天天操综合520| 岳毛多又紧做起爽| 91美女福利视频| 精品人妻一区二区三区潮喷在线| 精品视频—区二区三区免费| 2018av在线| 国产一区精品在线| 中国女人久久久| 懂色av粉嫩av蜜乳av| 狠狠综合久久av一区二区小说| 天堂在线观看免费视频| 96精品视频在线| 自拍偷拍一区| 国产精品久久久毛片| 国产精品第13页| 国产欧美熟妇另类久久久| 草民午夜欧美限制a级福利片| 亚洲国产一区二区三区网站| 国产亚洲黄色片| 91免费国产在线| 久久久久久久久黄色| 中文字幕精品久久| 亚洲国产综合在线观看| 日韩欧美猛交xxxxx无码| 成人在线视频一区| av黄色在线播放| 尤物yw午夜国产精品视频| 国产精品99久久久久久董美香 | 91网页在线观看| 成人在线小视频| 亚洲高清二区| 91成人在线免费视频| 欧美欧美欧美欧美| 欧美亚洲天堂| 欧美在线激情| 国内精品视频666| 日本一区二区不卡在线| 日韩精品高清视频| 久久久加勒比| 欧美乱大交xxxxx潮喷l头像| 久久亚洲欧美国产精品乐播| 中文字幕一区二区三区四区免费看 | 激情成人中文字幕| youjizz在线播放| av一区二区三区四区电影| 亚洲一区日韩在线| 91av手机在线| 亚洲第一av网站| 狠狠久久伊人中文字幕| 91成人综合网| 欧美激情一区二区三区在线| www.天堂在线| av在线这里只有精品| 男人添女人下面高潮视频| 久久综合一区二区| 国产精品国产一区二区三区四区| 97国产在线视频| 爽成人777777婷婷| 国产毛片毛片毛片毛片毛片毛片|