文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-03 00:17

关注

然后,比我聪明得多的人试图为 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 

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. }); 

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. })); 

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() {...}; 

可以在 HTML 中调用,只需执行以下操作:

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

这可能无法在所有浏览器中 100% 工作。

概括

感谢阅读。

本文由闻数起舞翻译自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】

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯