成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Javascript 中的 CJS、AMD、UMD 和 ESM 是什么?

開發 前端
一開始,Javascript 沒有辦法導入/導出模塊。這是個問題。想象一下,在一個文件中編寫您的應用程序 - 這將是一場噩夢!

一開始,Javascript 沒有辦法導入/導出模塊。這是個問題。想象一下,在一個文件中編寫您的應用程序 - 這將是一場噩夢!

然后,比我聰明得多的人試圖為 Javascript 添加模塊化。其中一些是CJS、AMD、UMD 和 ESM。您可能聽說過其中一些(還有其他方法,但這些是大玩家)。

我將介紹高級信息:語法、目的和基本行為。我的目標是幫助讀者在看到它們時認出。

CJS

CJS 是 CommonJS 的縮寫。這是它的樣子:

  1. //importing  
  2. const doSomething = require('./doSomething.js');  
  3.  
  4. //exporting 
  5. module.exports = function doSomething(n) { 
  6.   // do something 
  • 你們中的一些人可能會立即從 node.js 中識別出 CJS 語法。那是因為 node使用 CJS 模塊格式。
  • CJS 同步導入模塊。
  • 可以從庫node_modules或本地目錄導入。無論是通過const myLocalModule = require('./some/local/file.js')還是 var React = require('react'); 都可以。
  • 當 CJS 導入時,它會給你一個導入對象的副本。
  • CJS 在瀏覽器中不起作用。它必須被轉譯和打包。

AMD

AMD 代表異步模塊定義。這是一個示例代碼:

  1. define(['dep1', 'dep2'], function (dep1, dep2) { 
  2.     //Define the module value by returning a value. 
  3.     return function () {}; 
  4. }); 

要么

  1. // "simplified CommonJS wrapping" https://requirejs.org/docs/whyamd.html 
  2. define(function (require) { 
  3.     var dep1 = require('dep1'), 
  4.         dep2 = require('dep2'); 
  5.     return function () {}; 
  6. }); 
  • AMD 異步導入模塊(因此得名)。
  • AMD 是為前端設計的(當它被提出時)(而 CJS 后端)。
  • AMD 語法不如 CJS 直觀。我認為 AMD 是 CJS 的完全相反的兄弟。

UMD

UMD 代表通用模塊定義。這是它的樣子(來源):

  1. (function (root, factory) { 
  2.     if (typeof define === "function" && define.amd) { 
  3.         define(["jquery", "underscore"], factory); 
  4.     } else if (typeof exports === "object") { 
  5.         module.exports = factory(require("jquery"), require("underscore")); 
  6.     } else { 
  7.         root.Requester = factory(root.$, root._); 
  8.     } 
  9. }(this, function ($, _) { 
  10.     // this is where I defined my module implementation 
  11.  
  12.     var Requester = { // ... }; 
  13.  
  14.     return Requester; 
  15. })); 
  • 適用于前端和后端(因此得名Universal)。
  • 與 CJS 或 AMD 不同,UMD 更像是一種配置多個模塊系統的模式。
  • UMD 通常在使用 Rollup/Webpack 等打包器時用作回退模塊

ESM

ESM 代表 ES 模塊。實現標準模塊系統是 Javascript 的建議。相信很多人都看過這個:

  1. import React from 'react'; 

其他情況

  1. import {foo, bar} from './myLib'; 
  2.  
  3. ... 
  4.  
  5. export default function() { 
  6.   // your Function 
  7. }; 
  8. export const function1() {...}; 
  9. export const function2() {...}; 
  • 適用于許多現代瀏覽器
  • 它兼具兩全其美:類似 CJS 的簡單語法和 AMD 的異步
  • Tree-shakeable,由于 ES6 的靜態模塊結構
  • ESM 允許像 Rollup 這樣的打包器刪除不必要的代碼,允許站點發送更少的代碼以獲得更快的加載。

可以在 HTML 中調用,只需執行以下操作:

  1. <script type="module"> 
  2.   import {func1} from 'my-lib'; 
  3.  
  4.   func1(); 
  5. </script> 

這可能無法在所有瀏覽器中 100% 工作。

概括

  • ESM 是最好的模塊格管理式,這要歸功于其簡單的語法、異步性質和 tree-shakeability。
  • UMD 隨處可用,通常用作 ESM 不起作用時的后備方案
  • CJS 是同步的,有利于后端。
  • AMD 是異步的,適合前端。

感謝閱讀。

本文由聞數起舞翻譯自Igor Irianto的文章《What Are CJS, AMD, UMD, and ESM in Javascript?》,轉載請注明出處,原文鏈接:

https://irian.to/blogs/what-are-cjs-amd-umd-and-esm-in-javascript/

【責任編輯:趙寧寧 TEL:(010)68476606】

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2021-07-05 16:10:35

JavaScript代碼前端

2025-02-26 13:07:57

2021-04-26 07:51:00

JavaScript方法函數

2009-06-09 22:11:44

JavaScriptObject

2022-11-09 08:05:15

JavaScriptsuper()

2024-02-20 08:56:50

JavaScript模塊打包器

2024-08-07 08:48:09

2024-06-17 00:00:00

JavaScripCommonJSNode.js

2020-11-10 14:52:47

JavaScript框架開發

2025-02-06 08:44:11

MySQLEXISTSIN

2025-02-07 15:58:43

2015-01-05 10:31:18

javaScript

2019-11-27 09:03:49

JavaScriptJavaCSS

2021-10-27 08:54:11

Pythonencodeencoding

2020-08-02 23:20:36

JavaScriptmap()forEach()

2022-09-15 09:54:34

nullPython字符

2023-03-02 08:48:43

Linuxsubshell

2010-06-29 13:58:17

SNMPMIB

2023-10-24 09:07:14

CookieSessionHTTP

2022-08-08 23:49:01

TypeScriptumd模塊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本综合在线观看 | 亚洲一区二区精品视频 | 日韩中文一区 | 国产成人精品在线播放 | 成年人在线视频 | 色吧久久| 天天插天天狠天天透 | 黄色在线播放视频 | 免费黄色a视频 | 综合久久综合久久 | 先锋资源亚洲 | 国产91观看 | 欧美综合一区二区三区 | 欧美一区二区 | 免费精品视频 | 久久亚洲精品久久国产一区二区 | 免费av一区二区三区 | 超碰免费在线观看 | 欧美日韩亚洲系列 | 欧美国产日韩一区 | 中文字幕在线播放第一页 | 男人天堂网址 | 福利国产 | 国产精品久久久久久久久久久免费看 | 欧美精品三区 | 女人一区 | 亚洲精品一区二区在线 | 一区二区三区 在线 | 国产精品一区二区三区四区 | 国产精品视频一二三区 | 亚洲成人av一区二区 | 乱码av午夜噜噜噜噜动漫 | 日韩欧美一区在线 | 男女网站在线观看 | 日韩欧美亚洲 | 日本在线中文 | 一区二区精品视频 | 久久精品久久精品久久精品 | 国产精品久久久久久久免费观看 | 亚洲视频一区二区三区 | 一级黄色片网址 |