• vue-cli lib模式打包umd分析


    这里分析的是打包后生成的.umd.js文件

    • 最外部立即执行函数
    (webpackUniversalModuleDefinition(root, factory){})()
    //立即执行参数一
    root->(typeof self !== 'undefined' ? self : this)
    //立即执行参数二 factory参数中也是一个立即执行的匿名函数,参数为大量的模块key为模块名,value为具体模块内部
    factory->function(__WEBPACK_EXTERNAL_MODULE__8bbf__){(function(modules){})({key:value,key:value,key:value......})}
    • webpackUniversalModuleDefinition方法体

    if(typeof exports === 'object' && typeof module === 'object')
    //node
    module.exports = factory(require("vue"));
    else if(typeof define === 'function' && define.amd)
    //AMD规范
    define([], factory);
    else if(typeof exports === 'object')
    //commonJS规范
    exports["netovue"] = factory(require("vue"));
    else
    //浏览器全局
    root["netovue"] = factory(root["Vue"]);

    • factory的执行
      return /******/ (function(modules) { 
      /******/    // webpackBootstrap
      /******/     // 缓存加载的模块
      /******/     var installedModules = {};
      /******/
      /******/     // 获取指定id的模块
      /******/     function __webpack_require__(moduleId) {
      /******/
      /******/         // 检查模块是否已经加载过
      /******/         if(installedModules[moduleId]) {
      /******/             return installedModules[moduleId].exports;
      /******/         }
      /******/         // 新建一个模块 (放入缓存)
      /******/         var module = installedModules[moduleId] = {
      /******/             i: moduleId,
      /******/             l: false,
      /******/             exports: {}
      /******/         };
      /******/
      /******/         // 调用模块自己的立即执行方法(通过call调用使其方法内的this指向module.exports)
      /******/        // 这里的参数传入了__webpack_require__其中包含了一些公用方法
      /******/         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
      /******/
      /******/         // 标记模块已经加载
      /******/         module.l = true;
      /******/
      /******/         // 返回目标模块
      /******/         return module.exports;
      /******/     }
      /******/        //定义了一些公用的加载方法(获取已经加载的缓存、暴露的模块...)
      /******/     //返回加载的入口模块
      /******/     return __webpack_require__(__webpack_require__.s = "fb15");
      /******/ })
  • 相关阅读:
    ABAP-年月期间搜索帮助
    Others-Goldengate 数据同步
    ABAP-语音输出
    ABAP-ALV报表导出格式恢复初始画面
    ABAP-动态创建DATABASE/FUNCTION(风险)
    JDK 12 安装
    级数判敛--转自高教
    一文搞懂 JavaScript 中 DOM 相关的距离
    你应该知道的前端编程利器 VS Code
    js变量提升与函数提升的详细过程
  • 原文地址:https://www.cnblogs.com/cyh1282656849/p/13596694.html
Copyright © 2020-2023  润新知