22
23
?24
// AMD
if (typeof define === 'function' && define.amd) {
define(['jquery' 'underscore'
factory);
// CJS
else if (typeof exports === 'object') {
module.exports = factory(require('jquery') require('underscore'));
// 浏览器全局变量(root 即 window)
else {
root.returnExports = factory(root.jQuery root._);
(this function ($ _) { // 方法
functiona(){; // 私有方法 , 因为它没被返回 (见下面)
functionb(){; // 公共方法 , 因为被返回了
functionc(){; // 公共方法 , 因为被返回了
// 暴露公共方法
return {
b: b
c: c
));
UMD
规范的时候 , 第一感受:这是一坨什么\uD83D\uDCA9 。 但是自己看了以后发现 , 这\uD83D\uDCA9好像我还挺熟的 。没错 , 因为前几个月之前修复一个2018年的链游时 , 为了服务端(NodeJS)和网站(RequireJS)能公用一些模块 , 我就干了类似的事情 。
个人简单理解:
1、
UMD
让模块能在javascript所有运行环境中发挥作用 。2、
UMD
最外层是一个自执行函数 , 这个自执行函数最终可以导出一个模块 。3、它最少包含了适配
AMD
、 CJS
的模块输出 。4、它主要被用于一些第三方库 , 随着
AMD
应用的逐渐减少 , UMD
也会越来越不重要 。体会其实每个时代都有自己的思想和规范 , 因为程序入门的时候就走的前端方向 , 与服务端技术更替的速度相比 , 前端更是瞬息万变 , 稍有不注意就会落伍 。
曾经跟技术朋友讨论过关于技术迭代的问题 , 因为不停学习和淘汰也是一件相当耗费精力和时间的事情 。 但是最后我们还是必须要学起来 , 有时候更替的不只是技术 , 更重要的是一种思想 。
[2022年12月30日原始发布于本作者博客
\uD83D\uDC47点击“阅读原文”可恢复文章内所有链接哦!
> 阅读原文:https://www.gsgundam.com/2022/2022-12-30-z00-understanding-of-cjs-amd-umd-esm/
- 想要理解快速变化的科技行业|海外品牌来华,鸿蒙生态的“原力觉醒”
- 再谈元宇宙:从概念探源到理解跟踪
- 机器学习|逆向思维:普通人赚钱只能靠简单一招,不必重来才是快
- 耳机|简单聊聊森海塞尔HD25耳机:一款绝对值得发烧友入手的常青树
- C++|音质细腻乐感更出众,4款有线耳机戴上了就舍不得摘下来
- C++|零基础学习C++, AI一胖. 赋值语句
- 魅族|一台手机引发思考,真正旗舰产品的排面是什么?简单分析!
- Excel查看和选择数据,虽简单也有巧妙!
- Excel VBA中简单的if逻辑判断
- Excel VBA中的Range和for的简单结合