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

對比ECMAScript 模塊 (ESM) 和 CommonJS

開發 前端
JavaScript 最初只是一種簡單的語言,用于使靜態網站更具活力和交互性。然而,用 JavaScript 編寫的項目在很久以前就開始變得越來越復雜。

JavaScript 最初只是一種簡單的語言,用于使靜態網站更具活力和交互性。然而,用 JavaScript 編寫的項目在很久以前就開始變得越來越復雜。

正因為如此,我們很快就發現需要一種方法來將代碼分解成更小、更易于管理的片段。

多年來,人們對如何實現將 JavaScript 代碼拆分成模塊有很多不同的想法。在本文中,我們將比較最流行的幾種方法:ECMAScript 模塊 (ESM) 和 CommonJS。

CommonJS

Node.js 的創建者知道,代碼需要組織成可重用的模塊。然而,當 Node.js 于 2009 年首次推出時,JavaScript 還沒有正式的模塊系統。因此,Node.js 引入了 CommonJS 模塊。

創建和導出模塊

在 Node.js 中,每個文件都是一個獨立的模塊。要開始使用 CommonJS,讓我們用一個簡單的函數創建一個新文件。

sum.js

function sum(numberOne, numberTwo) {
  return numberOne + numberTwo;
}
 
module.exports = { sum };

在每個文件中,module 變量都代表當前模塊。我們可以使用 module.exports 來讓其他模塊導入和使用 sum 函數。

導入模塊

要導入模塊,我們需要使用 require 函數并提供正確的路徑。

const { sum } = require('./sum');
console.log(sum(1, 2)); // 3

CommonJS 還支持 import 函數,它允許我們異步導入模塊。

import('./sum.js')
  .then(({ sum }) => {
    console.log(sum(1, 2)); // 3
  })

ECMAScript Modules

JavaScript 語言進行了一次重大升級,即 ES6 或 ECMAScript 2015。除其他功能外,它還包括模塊管理的官方語法,即 ECMAScript Modules (ESM)。

創建和導出模塊

我們必須使用導出關鍵字來公開模塊中的各種值。

sum.js

function sum(numberOne, numberTwo) {
  return numberOne + numberTwo;
}
 
export { sum };

使用上述語法,我們可以導出任意多個值。此外,模塊還可以包含一個默認導出。

subtract.js:

function subtract(numberOne, numberTwo) {
  return numberOne - numberTwo;
}
 
export default subtract;

導入和導出模塊

要導入 ECMAScript 模塊,我們必須使用 import 關鍵字。

import { sum } from './sum.js';
import subtract from './subtract.js';
 
console.log(sum(3, 2)); // 5
console.log(subtract(3, 2)); // 1

請注意,我們使用略有不同的語法來導入默認導出。重要的是,默認導入使用的名稱不必與默認導出一致。

import sum from './subtract.js';

這也是有些人不喜歡使用默認出口的原因之一。

ESM 還支持導入功能,允許我們異步導入模塊。

import('./sum.js')
  .then(({ sum }) => {
    console.log(sum(1, 2)); // 3
  })

ECMAScript 模塊的兼容

雖然 ECMAScript 模塊是在 2015 年左右推出的,但社區還是花了一段時間才跟上步伐。不過,現在我們甚至可以在瀏覽器中原生使用 ESM。

webpack 等捆綁程序多年前就開始支持 ECMAScript 模塊。它們可以將我們在多個 JavaScript 文件中使用 ESM 的代碼轉換成單個文件輸出。它還可以將捆綁包拆分成多個文件,以提高性能。

Node.js 在 8.5.0 版左右開始嘗試支持 ESM。不過當時要使用它,我們必須包含 --experimental-modules 模塊。在 13.2.0 版中,他們取消了在使用 Node 模塊時使用該標志的要求。

不過,在 Node.js 中使用 ESM 仍然會在終端中出現警告,提示該功能是試驗性的。自 2020 年 4 月發布 14.0.0 版后,該警告不再出現。

要在 Node.js 中使用 ESM,我們可以在 package.js 中添加 "type"(類型)和 "module"(模塊):"模塊"。

有趣的是,如果您習慣于使用 Webpack 等工具,那么 Node.js 中的 ESM 實現可能會略有不同。我們必須提供導入模塊的完整路徑,包括文件擴展名。

TypeScript 中的 ECMAScript 模塊

早在 2015 年的 TypeScript 1.5 中,TypeScript 就開始支持 ECMAScript Modules 語法。需要了解的是,它默認將我們的代碼移植到使用 CommonJS 的引擎蓋下。

import { sum } from './sum';
 
sum(1, 2);

使用默認配置將上述文件轉換為 JavaScript 時,我們可以看到 CommonJS。

"use strict";
exports.__esModule = true;
var sum_1 = require("./sum");
(0, sum_1.sum)(1, 2);

TypeScript 添加了 __esModule 標記,以表明文件是從 ESM 編譯到 CommonJS 的。

要在 TypeScript 和 Node.js 中使用 ESM,我們需要稍微修改一下 tsconfig.json 文件。

tsconfig.json

{
  "compilerOptions": {
    "strict": true,
    "module": "NodeNext",
    "outDir": "dist"
  }
}

由于使用了 NodeNext,TypeScript 將使用 ESM 導入和導出,而不是 CommonJS。請務必記住,Node.js 要求我們提供導入模塊的完整路徑。

當我們使用希望在 Node.js 環境中運行的 TypeScript 時,也必須這樣做。

與直覺相反的是,即使我們在編寫 TypeScript 代碼,也必須提供包含 .js 擴展名的路徑。

import { sum } from './sum.js';
 
console.log(sum(1, 2));

完成所有這些后,我們就可以擁有一個在 Node.js 中運行并在引擎蓋下使用 ECMAScript 模塊的 TypeScript 應用程序。

管理依賴關系

在處理依賴關系時,在 CommonJS 和 ECMAScript 模塊之間做出選擇的問題會變得更加復雜。

使用 ECMAScript 模塊的項目可以使用導入語法使用 CommonJS 模塊。但是,使用 CommonJS 的項目除了通過異步導入函數外,不能以任何方式導入僅使用 ESM 的模塊。

正因為如此,許多使用 ECMAScript 編寫 JavaScript 庫的開發人員決定同時發布 CommonJS 和 ESM 代碼。

這樣,他們的庫就可以兼容任何一種模塊系統。

然而,并非所有開發人員都愿意處理發布同時適用于 CommonJS 和 ESM 的軟件包的麻煩。

只發布與 ESM 兼容的庫版本的做法越來越流行。

因此,我們需要了解 CommonJS 和 ESM 的工作原理及其局限性。

總結

在本文中,我們介紹了 CommonJS 和 ECMAScript 模塊的工作原理。我們了解了它們的語法以及如何在 Node.js 和 TypeScript 中使用它們。

由于并非所有開發人員都愿意費盡周折地發布同時適用于 CommonJS 和 ESM 的包,因此了解這兩種模塊系統之間的區別變得越來越重要。

有了這些知識,我們才能更好地為項目選擇合適的模塊系統,并適應與之相關的任何挑戰。

責任編輯:華軒 來源: web前端開發
相關推薦

2022-05-03 20:48:17

Webpackcommonjsesmodule

2021-06-30 08:00:31

ECMAScriptimport 模塊JavaScript

2021-12-27 07:59:50

ECMAScript JSON模塊Node.js

2023-07-10 10:21:21

JavaScript模塊化規范

2024-06-17 00:00:00

JavaScripCommonJSNode.js

2023-11-08 08:40:35

JavaScriptS 模塊

2024-07-01 00:00:04

ViteUMD瀏覽器

2020-09-08 08:27:25

JavaScript模塊ECMAScript

2021-08-11 07:54:47

Commonjs

2022-06-18 23:10:56

前端模塊循環依賴

2021-08-16 08:45:38

JavaScript開發代碼

2011-06-21 14:42:37

ECMAScriptJavaScript

2024-02-20 08:56:50

JavaScript模塊打包器

2023-08-30 13:23:12

異步編程JavaScript

2020-11-09 10:46:35

CommonJS

2023-03-23 09:04:32

ECMAScript元組結構

2009-06-22 14:22:41

JSF和Tapestr

2023-01-05 08:00:24

RegExpFoo類字段

2015-11-13 11:33:39

阮一峰ecmascript

2021-07-05 16:10:35

JavaScript代碼前端
點贊
收藏

51CTO技術棧公眾號

97色在线观看| 精品卡一卡二卡三卡四在线| 天天综合色天天综合色hd| 无码人妻丰满熟妇区bbbbxxxx| 欧美人与物videos另类xxxxx| 日韩欧美在线观看视频| 亚洲成人第一| 亚洲第一成肉网| 素人av在线| 国产盗摄视频一区二区三区| 66m—66摸成人免费视频| 天天干天天综合| 一区二区三区伦理| 91在线小视频| 成人天堂噜噜噜| www.国产高清| 五月天激情综合网| 日韩激情第一页| 五月天视频在线观看| 亚洲三级黄色片| 日韩av一级电影| 精品综合久久久久久97| 久久亚洲无码视频| 国产ts一区| 在线视频一区二区三| 看一级黄色录像| 国际av在线| 成人美女视频在线观看18| 国产精品久久久精品| 久久精品国产av一区二区三区| 精品毛片免费观看| 亚洲成avwww人| 亚洲天堂伊人网| 黄色精品视频| 日本一区二区三区国色天香| 成人动漫在线视频| 91麻豆视频在线观看| 亚洲影院一区| 日韩国产精品一区| 三日本三级少妇三级99| 国产精品亚洲一区二区三区在线观看| 亚洲欧美一区二区久久| 视频在线99| 青春有你2免费观看完整版在线播放高清| 国产在线精品免费av| 欧亚精品中文字幕| 日本中文字幕在线免费观看| 91精品91| 日韩视频永久免费观看| 欧美美女一级片| 国产精品高清乱码在线观看| 午夜精品福利一区二区蜜股av| 国风产精品一区二区| 素人av在线| 国产精品国模大尺度视频| 欧美中日韩免费视频| 视频在线观看你懂的| 久久高清一区| 欧美在线观看网址综合| 日韩欧美亚洲视频| 99精品久久| 91精品国产99| 天码人妻一区二区三区在线看| 亚洲精品1234| 亚洲人成啪啪网站| 一级性生活毛片| 日韩美女国产精品| 精品偷拍各种wc美女嘘嘘| 日本黄色动态图| 日韩人体视频| 精品五月天久久| 无码 人妻 在线 视频| 国产影视精品一区二区三区| 一本色道久久88综合亚洲精品ⅰ| 精品国产aaa| 色爱综合网欧美| 久久av中文字幕| 成人免费看片98| 一本久道久久综合婷婷鲸鱼| 日本精品视频在线| 男操女视频网站| 国产最新精品免费| 国产高清一区视频| 人操人视频在线观看| 欧美激情综合在线| 麻豆md0077饥渴少妇| 牛牛精品在线| 一本大道综合伊人精品热热| jizz欧美激情18| 欧美aaaaaa| 欧美成人vr18sexvr| 中文字幕日韩三级片| 欧美中文字幕一区二区| 日韩亚洲精品电影| 日韩久久久久久久久| 久久亚洲影院| 高清亚洲成在人网站天堂| 在线观看 中文字幕| 毛片基地黄久久久久久天堂| 亚洲伊人第一页| 亚洲 另类 春色 国产| 欧美激情一区二区在线| 国产a级黄色大片| 男人天堂久久久| 亚洲最大成人综合| 国产精品亚洲二区在线观看 | 亚洲黄色高清| 国产精品观看在线亚洲人成网| 国产精品一区二区av白丝下载| www.在线欧美| 特级毛片在线免费观看| 日产福利视频在线观看| 亚洲欧美日韩国产另类专区| 欧美日韩精品在线一区二区| 欧美成人黄色| 日韩美女av在线| 国产高潮国产高潮久久久91| 久久一区二区三区超碰国产精品| 91一区二区三区| www.亚洲.com| 欧美性xxxxxx| 久久久久无码国产精品一区李宗瑞| 欧美一区二区三区激情视频| 2025国产精品视频| 亚洲精品18在线观看| 中文文精品字幕一区二区| 日本高清不卡一区二区三| 欧美xxxbbb| 欧美精品xxxxbbbb| 一区二区三区久久久久| 亚洲国产专区校园欧美| 亚洲一区二区三区视频| 婷婷视频在线| 欧美在线999| 成年人免费观看视频网站| 亚洲免费观看| 国产精品视频一区二区三区经| 国产成年妇视频| 国产精品免费av| 美女一区二区三区视频| 国产探花在线精品一区二区| 国产91精品不卡视频| 免费看av毛片| 亚洲国产综合视频在线观看| 91视频福利网| 亚洲男女av一区二区| 欧美激情啊啊啊| xxxxxx国产| 国产成人无遮挡在线视频| 99热一区二区三区| 91九色成人| 久久精品中文字幕免费mv| 男人天堂av在线播放| 久久综合精品国产一区二区三区| 鲁一鲁一鲁一鲁一色| 老牛影视av一区二区在线观看 | 欧美一级性视频| 亚洲一区二区三区四区在线| 风韵丰满熟妇啪啪区老熟熟女| 欧美暴力喷水在线| 岛国视频一区免费观看| av剧情在线观看| 亚洲国产天堂网精品网站| 日韩三级av在线| 久久久五月婷婷| 美女黄色片视频| 国产精品久久久久一区二区三区厕所| 成人做爽爽免费视频| 日本天码aⅴ片在线电影网站| 精品少妇一区二区三区在线播放| 国产网站在线看| 91小视频在线| 成人黄色片视频| 成人久久电影| 91免费在线观看网站| 第四色日韩影片| 精品亚洲一区二区三区| 亚洲精品国产无码| 亚洲人成网站精品片在线观看| 日本中文字幕在线不卡| 亚洲欧洲日本mm| 日本在线观看一区二区三区| 色噜噜成人av在线| 欧美风情在线观看| 九色在线视频| 884aa四虎影成人精品一区| 91精品小视频| 日韩电影一区二区三区四区| 熟妇熟女乱妇乱女网站| 国产精品22p| 国产精品久久久久77777| 国产在线观看91| 日韩激情片免费| 99热精品在线播放| 欧美日在线观看| 最新一区二区三区| 91视频国产资源| 天天爽夜夜爽视频| 一区二区高清| 四虎4hu永久免费入口| 欧美三级自拍| 亚洲aaa激情| 超碰超碰人人人人精品| 欧美精品一区在线播放| 牛牛影视精品影视| 日韩一级片在线播放| 日日骚av一区二区| 亚洲精品视频一区二区| 亚洲AV无码成人精品区明星换面 | 亚洲成人777| 国产喷水在线观看| 久久综合av免费| a级大片免费看| 日韩av一级片| 91av资源网| 亚洲欧美一区在线| 亚洲视频小说| 成人在线视频免费| 久久久噜噜噜久久| 黄色精品免费看| 在线视频精品一| 亚洲欧美自偷自拍| 欧美成人猛片aaaaaaa| 亚洲一级视频在线观看| 日韩欧美成人免费视频| 国产亚洲欧美精品久久久www| 国产精品伦一区| www在线观看免费视频| 成人sese在线| 亚洲午夜精品在线观看| 九九在线精品视频| 一区二区三区 日韩| 模特精品在线| www.中文字幕在线| 99国产成+人+综合+亚洲欧美| 91xxx视频| 久久精品国内一区二区三区水蜜桃 | 艳母动漫在线观看| 色综合天天爱| 亚洲国产午夜伦理片大全在线观看网站 | 国产人妻人伦精品1国产丝袜| 国产精品69毛片高清亚洲| 最新国产黄色网址| 久久精品国产亚洲aⅴ| 中文字幕视频在线免费观看| 欧美综合二区| 99久久久无码国产精品6| 国产日韩欧美一区在线| 欧美午夜性视频| 亚洲福利免费| 日韩精品―中文字幕| 亚洲精品社区| 久久久免费视频网站| 午夜一级在线看亚洲| 97视频在线免费播放| 三级一区在线视频先锋| 男人的天堂日韩| 青青草成人在线观看| 日韩一级免费片| 国产自产2019最新不卡| 亚洲女人在线观看| 国产91精品精华液一区二区三区| 杨幂一区二区国产精品| 顶级嫩模精品视频在线看| 人妻换人妻a片爽麻豆| 97久久超碰国产精品电影| 少妇精品一区二区三区| 中文字幕乱码亚洲精品一区| 久久精品在线观看视频| 成人免费在线视频| 久久久久久久久久久久久久免费看| 亚洲不卡av一区二区三区| 日韩中文字幕在线观看视频| 日本高清成人免费播放| 中文字幕视频免费观看| 欧美一区二区成人| 人妻少妇精品无码专区久久| 亚洲欧美国产视频| 亚洲av无码一区二区三区性色| 欧美本精品男人aⅴ天堂| 五月激情婷婷综合| 色先锋资源久久综合5566| www在线免费观看视频| 午夜欧美不卡精品aaaaa| 欧美成人ⅴideosxxxxx| 97久久精品在线| 亚洲综合av一区二区三区| 91亚洲精品在线观看| 美女扒开腿让男人桶爽久久动漫| 欧洲亚洲一区| 欧美午夜电影在线观看 | 国产精品免费视频久久久| 在线高清欧美| 久久精品一二三区| 国产精品99一区二区三区| 精品少妇人妻av免费久久洗澡| 日韩精品一二三四| 中文字幕在线视频一区二区| 久久精品一区二区三区不卡 | 午夜精品免费在线观看| 中文天堂在线视频| 亚洲成人免费网站| 色视频在线免费观看| 久久久亚洲福利精品午夜| 国产精品美女午夜爽爽| 国内一区在线| 亚洲精品久久久| 日韩一级免费在线观看| 成人免费精品视频| 永久免费未视频| 色综合久久久网| 亚洲第一大网站| 色偷偷噜噜噜亚洲男人| 中文字幕在线看片| 国产高清在线精品一区二区三区| 四季av一区二区凹凸精品| 女性女同性aⅴ免费观女性恋| 国产一区二区在线观看免费| 亚洲色成人网站www永久四虎| 一区二区欧美在线观看| 中文字幕免费高清在线观看| 日韩黄色高清视频| 国产三线在线| 亚洲在线第一页| 欧美独立站高清久久| 不卡影院一区二区| 99国产精品久| 日韩欧美亚洲国产| 日韩欧美卡一卡二| 国产cdts系列另类在线观看| 国产精品久久色| sdde在线播放一区二区| 久草综合在线观看| 久久久久久99精品| 毛片在线免费视频| 亚洲福利视频专区| av在线网页| 国产精品久久久一区二区三区| 亚洲色图二区| 国产精品久久久久久久99| 中文字幕日韩一区| 中文字幕人成人乱码亚洲电影| 亚洲性视频网站| 日韩性xxx| 日本在线观看不卡| 日本不卡一区二区三区| 无码少妇精品一区二区免费动态| 一本久久精品一区二区| 国产一级二级三级在线观看| 国产a级全部精品| 精品99在线| 91小视频网站| 自拍偷拍亚洲激情| 国产熟女一区二区三区四区| 欧美成人剧情片在线观看| 久久99成人| 日韩美女爱爱视频| 久久精品一区二区国产| 9.1成人看片| 在线观看视频欧美| 欧美激情午夜| 亚洲尤物视频网| 在线精品福利| 国产ts丝袜人妖系列视频| 91黄色激情网站| 99riav在线| 亚洲一区二区中文字幕| 欧美日韩精选| 在线观看国产网站| 91国产免费看| 久草中文在线| 国产精品一区在线播放| 小嫩嫩精品导航| 极品久久久久久久| 欧美一区二区三区在线| 91www在线| 日韩中文字幕一区二区| 国产在线视频不卡二| 国产做受高潮漫动| 国产一区二区三区在线看 | 少妇真人直播免费视频| 欧美影视一区在线| 伊人春色在线观看| 免费看国产精品一二区视频| 久久国产三级精品| 精品在线视频免费| 国产小视频国产精品| 欧美1区2区3| 国产女女做受ⅹxx高潮| 中文字幕视频一区| 欧美zozo| 91久久极品少妇xxxxⅹ软件| 麻豆久久精品| 国产探花在线播放| 国产视频亚洲精品| 日本综合精品一区| 午夜免费一区二区| 亚洲国产日韩a在线播放| 成人18在线| 韩国成人av|