精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

一区二区国产精品视频| 亚洲精品国产一区二区三区四区在线 | 亚洲国产精品久久人人爱| 激情伦成人综合小说| 在线观看国产精品入口男同| 综合在线一区| 亚洲精品久久视频| 奇米影视四色在线| 不卡专区在线| 国产精品理伦片| 国产99在线免费| 在线观看色网站| 亚洲精品系列| 俺去了亚洲欧美日韩| 中文字幕在线观看网址| 男人天堂久久| 欧美性猛xxx| 国产 国语对白 露脸| 免费在线看v| 国产成人精品网址| 国产精品免费福利| 亚洲视频免费播放| 91成人观看| 国产一区二区三区久久精品| 午夜不卡久久精品无码免费| 国产人与zoxxxx另类91| 91成人在线精品| 黄色片网址在线观看| 精品麻豆一区二区三区| 日本一区二区视频在线观看| 黑人巨大精品欧美一区二区小视频| 91精品国产综合久| 日本成人中文字幕在线视频| 91av在线影院| 国产真实的和子乱拍在线观看| 天天做天天爱综合| 丝袜美腿精品国产二区| 中国毛片在线观看| 伦理一区二区| 精品国产三级a在线观看| 中文字幕在线视频一区二区| 久久91视频| 精品视频一区 二区 三区| aⅴ在线免费观看| 天堂√中文最新版在线| 午夜电影网亚洲视频| 国产精品无码免费专区午夜| 色呦呦久久久| 亚洲高清免费观看高清完整版在线观看 | 国产成人三级| 亚洲精选在线观看| 国产精品揄拍100视频| 老牛精品亚洲成av人片| 亚洲成人激情视频| av鲁丝一区鲁丝二区鲁丝三区| 亚洲视频精选| 亚洲精品久久久久久久久久久久久| 丰满少妇xbxb毛片日本| 黄色欧美网站| 日韩成人在线观看| 国产全是老熟女太爽了| 欧美男男gaytwinkfreevideos| 亚洲欧洲国产一区| 日本综合在线观看| 97国产成人高清在线观看| 久久精品国产一区二区电影| 欧美成人精品一区二区免费看片| 在线免费观看日本欧美爱情大片| 欧美床上激情在线观看| 久久亚洲国产成人精品性色| 亚洲美女色禁图| 日本中文字幕成人| 一个人看的www日本高清视频| 激情综合网天天干| 国产精品免费一区二区| 日本一卡二卡四卡精品 | 国产十六处破外女视频| 影音先锋亚洲电影| 国产成人综合亚洲| 国产肥老妇视频| 不卡一区二区中文字幕| 欧美日韩三区四区| 日本高清中文字幕在线| 亚洲精品视频在线观看免费| 国产精品videossex国产高清 | 国产精品视频资源| 国产精品永久久久久久久久久| 国产成人综合在线播放| 久久伊人一区| 嫩草在线视频| 午夜精品影院在线观看| 亚洲综合色在线观看| 亚洲国产视频二区| 亚洲人成网在线播放| 可以直接看的黄色网址| 麻豆久久精品| 亚洲自拍另类欧美丝袜| 免费在线性爱视频| 一区二区欧美精品| 成人性生生活性生交12| 亚洲精品黑牛一区二区三区| 亚洲一区二区久久久| 久久久精品国产sm调教网站| 天堂av在线一区| 波多野结衣久草一区| 国产三级在线免费| 亚洲第一综合色| 91av视频免费观看| 亚洲ab电影| 久久91精品国产91久久跳| 天堂网一区二区| 成人美女在线观看| 天天综合五月天| 日日夜夜天天综合| 亚洲第一天堂无码专区| 最新一区二区三区| 日本v片在线高清不卡在线观看| 国产麻豆一区二区三区在线观看| 免费av在线网站| 在线精品观看国产| 在线 丝袜 欧美 日韩 制服| 欧美一区免费| 国产日韩欧美黄色| 国产一级免费在线观看| 天天色 色综合| 无码人妻丰满熟妇啪啪网站| 久久久久久久久久久9不雅视频| 欧美中文在线免费| 亚洲av毛片成人精品| 夜夜嗨av一区二区三区中文字幕 | 亚洲精品久久久久久久蜜桃| av成人老司机| 成人免费在线网| 亚洲国产高清在线观看| 久久五月天综合| 国产一区二区麻豆| 国产精品国产三级国产有无不卡| 国产一二三四在线视频| 国际精品欧美精品| 国产成+人+综合+亚洲欧洲| 天堂在线观看视频| 午夜一区二区三区在线观看| zjzjzjzjzj亚洲女人| 国内激情久久| 国产精品jizz视频| 欧美人体视频xxxxx| 日韩精品一区二区在线| 欧美丰满艳妇bbwbbw| 国产综合色在线视频区| 手机成人av在线| 国产视频一区二| 久久电影一区二区| 超碰在线播放97| 亚洲国产成人高清精品| 国产乱了高清露脸对白| 噜噜噜在线观看免费视频日韩| 久99久在线| 国产另类xxxxhd高清| 一区二区三区高清国产| 一级aaaa毛片| 亚洲一区在线观看免费观看电影高清| 人妻互换一二三区激情视频| 国产欧美另类| 偷拍视频一区二区| 日韩福利在线观看| 欧美黑人性猛交| 日本福利午夜视频在线| 欧美亚一区二区| 老湿机69福利| 99精品久久99久久久久| 成年人在线观看视频免费| 99国产**精品****| 国产精品xxxx| 不卡av影片| 久久精品中文字幕一区| 韩国av永久免费| 色8久久人人97超碰香蕉987| 久久噜噜色综合一区二区| 国产成人高清在线| 女人另类性混交zo| 亚洲综合色网| 鲁丝一区二区三区免费| 玖玖精品在线| 国内精品久久久久伊人av| 久久精品a一级国产免视看成人| 欧美久久久久中文字幕| 日韩免费在线视频观看| 国产精品美女www爽爽爽| 久久久久久久久久久久国产精品| 日本午夜精品视频在线观看| av影院在线播放| 国产在线观看91一区二区三区| 亚洲va欧美va国产综合剧情| 日本不卡网站| 不卡av电影在线观看| 色播色播色播色播色播在线| 在线成人高清不卡| 伦av综合一区| 亚洲靠逼com| 日韩中文字幕有码| 成人一区二区三区| 色一情一区二区三区| 国产精品永久| 日韩中文字幕在线不卡| 成人羞羞视频播放网站| 好吊妞www.84com只有这里才有精品| 九九热这里有精品| 欧美中文在线免费| 91白丝在线| 欧美老女人xx| 日本视频不卡| 国产亚洲人成a一在线v站| 蜜桃视频在线观看www| 欧美二区在线观看| 免费精品一区二区| 疯狂蹂躏欧美一区二区精品| 青青草国产在线观看| 国产精品久久久久桃色tv| 亚洲av片不卡无码久久| 成人黄色av网站在线| 国产精品嫩草影视| 国产综合成人久久大片91| 九九热免费精品视频| 美女日韩在线中文字幕| a在线视频观看| 一区视频在线| 菠萝蜜视频在线观看入口| 一区二区电影| 综合视频免费看| 日韩欧美伦理| 亚洲精品一区二区三区樱花| 欧美日韩有码| 日韩欧美精品一区二区| 久草在线成人| 日本免费高清不卡| 欧美欧美黄在线二区| 久久久久高清| 亚洲都市激情| 欧美日韩一区二| 九九免费精品视频在线观看| 久久精品magnetxturnbtih| 欧美变态挠脚心| 久久青青草原一区二区| 欧洲亚洲成人| 欧美另类一区| 国产精品亚洲片在线播放| 日本视频一区在线观看| 狠狠做六月爱婷婷综合aⅴ| 三区精品视频| 91久久夜色精品国产按摩| 亚洲精品中字| 欧美va亚洲va日韩∨a综合色| 午夜啪啪福利视频| 欧美三区美女| 男人日女人逼逼| 久久这里只有| 国产一区二区在线免费播放| 美国欧美日韩国产在线播放| 手机在线国产视频| 国产成人在线观看| 亚洲一区二区三区四区五区六区| 久久久99久久| 欧美18—19性高清hd4k| 亚洲丝袜美腿综合| 久久精品www| 色综合中文字幕| 中文字幕在线播放不卡| 日韩一区二区精品| 四虎在线免费观看| 在线观看久久av| 成年视频在线观看| 国语自产精品视频在线看一大j8| 345成人影院| 国产欧美va欧美va香蕉在线| 中文久久电影小说| 欧美日本国产精品| 91精品国产自产在线观看永久∴| 99久久免费观看| 热久久免费视频| 中文字幕在线播放一区二区| 久久综合九色欧美综合狠狠| 青青操在线视频观看| 亚洲线精品一区二区三区 | 久久精品网址| 亚洲精品免费一区亚洲精品免费精品一区 | 国模大尺度视频| 久久综合狠狠综合久久综合88| 日本成人精品视频| 欧美日韩美女视频| 国产一区二区三区三州| 亚洲精品国精品久久99热 | 国产真实有声精品录音| 日本一级黄视频| 久久婷婷影院| 9191在线视频| 国产精品无人区| 日本三级中文字幕| 欧美日韩国产天堂| 亚洲欧美一区二区三| 久久成人人人人精品欧| 欧美男女交配| 国产精选一区二区| 欧美肥老太太性生活| 成人免费在线小视频| 国产精品主播直播| 国产精品视频在| 欧美午夜xxx| 欧美自拍偷拍第一页| 久久精品国产欧美亚洲人人爽| 免费观看欧美大片| 国产精品高清一区二区三区| 国产精品久久久久久麻豆一区软件| 男人天堂999| 99久久久国产精品免费蜜臀| www.av成人| 欧美午夜影院一区| 欧美巨乳在线| 668精品在线视频| 超碰成人97| 超级碰在线观看| 精品无码三级在线观看视频| avhd101老司机| 色久综合一二码| 欧美日韩在线中文字幕| 欧美黑人狂野猛交老妇| 久久伊人影院| 黄色高清视频网站| 久久国产免费看| 中文字幕欧美激情极品| 一本久道中文字幕精品亚洲嫩| 亚洲精品.www| 久久99青青精品免费观看| 精品一区二区三区中文字幕视频| 一区二区三区免费看| 日韩黄色一级片| 中文字幕成人动漫| 日韩欧美精品免费在线| 青青色在线视频| 欧美在线欧美在线| 色棕色天天综合网| 亚洲人成色77777| 国产欧美日韩激情| 夜夜爽妓女8888视频免费观看| 亚洲欧美精品中文字幕在线| 激情都市亚洲| 水蜜桃亚洲精品| 美女一区二区三区| 国产午夜精品理论片| 91精品国产综合久久国产大片| 岛国成人毛片| 成人欧美一区二区三区视频| 亚洲经典自拍| 中文字幕在线免费看线人| 色香蕉成人二区免费| 国产三级在线| 国产欧美一区二区三区四区| 亚洲精品成人| www.17c.com喷水少妇| 欧美日韩国内自拍| 国产精品视频二区三区| 国产精品揄拍一区二区| 在线观看国产精品入口| 黑森林av导航| 色哟哟亚洲精品| av电影在线观看网址| 91久久国产自产拍夜夜嗨| 伊人久久婷婷| 亚洲精品国产一区黑色丝袜| 欧美日韩久久一区| 黄色在线看片| 青青草成人网| 国产原创一区二区三区| 国产乱码久久久久久| 亚洲视频在线看| 国产精品视频一区视频二区| 久久久久免费看黄a片app| 国产婷婷色一区二区三区在线| 国产精品无码白浆高潮| 国产做受高潮69| 欧美日本成人| 一级片免费在线观看视频| 欧美日韩国产一区中文午夜| 欧美成人高清在线| 国产精品初高中精品久久| 日韩在线一二三区| 麻豆91精品91久久久| 一道本无吗dⅴd在线播放一区 | 欧美三级日本三级| 亚洲女同性videos| 日韩成人18| 高清一区在线观看| 亚洲国产精品久久人人爱| 日本美女高清在线观看免费| 国产一区二区免费在线观看| 麻豆传媒一区二区三区| 欧美另类一区二区| 欧美大片在线免费观看| 欧美精品一区二区三区中文字幕| 怡红院一区二区| 欧美高清视频一二三区 |