上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

[油猴脚本开发指南]UMD简单介绍

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-9-12 16:47:33 | 显示全部楼层 | 阅读模式

    介绍

    UMD模块化全称Universal Module Definition
    通用模块化定义
    如果你了解了AMD和CMD后
    再学习UMD还是比较简单
    简单来说
    他就是一个js文件
    在运行的时候根据环境变量来判断当前到底处于何种环境
    然后以对应环境的方式来进行加载

    代码样式

    一个基本形式是

    (function (root, factory) {
        if (typeof define === 'function' && define.amd) {
            // AMD. Register as an anonymous module.
            define(['exports', 'b'], factory);
        } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
            // CommonJS
            factory(exports, require('b'));
        } else {
            // Browser globals
            factory((root.myModuleName = {}), root.b);
        }
    }(typeof self !== 'undefined' ? self : this, function (exports, b) {
        // Use b in some fashion.
    
        // attach properties to the exports object to define
        // the exported module properties.
        exports.action = function () {};
    }));

    function (root, factory) 这个函数是一个自执行函数,传入了两个参数
    一个是当前的指向,如self或this,第二个参数是回调函数,通常是我们自己的代码
    并在内部会根据各种变量和形式来判断是否存在对应的模块化工具函数
    然后执行相应的代码
    通常有AMD、CMD、Commonjs、浏览器全局四种
    如下方就判断了AND、CommonJS、全局三种

        if (typeof define === 'function' && define.amd) {
            // AMD. Register as an anonymous module.
            define(['exports', 'b'], factory);
        } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
            // CommonJS
            factory(exports, require('b'));
        } else {
            // Browser globals
            factory((root.myModuleName = {}), root.b);
        }

    这届还是比较简单

    结语

    撒花~

    引用

    https://jameshfisher.com/2020/10/04/what-are-umd-modules/

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    开心
    2022-9-20 10:07
  • 签到天数: 35 天

    [LV.5]常住居民I

    0

    主题

    39

    回帖

    40

    积分

    初级工程师

    积分
    40
    发表于 2022-9-13 08:23:48 | 显示全部楼层
    感谢分享,正在学习
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表