zoukankan      html  css  js  c++  java
  • cordova 源码分析记录

    1.模块定义

    (function () {
        var modules = {};
        // Stack of moduleIds currently being built.
        var requireStack = [];
        // Map of module ID -> index into requireStack of modules currently being built.
        var inProgressModules = {};
        var SEPARATOR = '.';
    
        function build (module) {
            var factory = module.factory;
            var localRequire = function (id) {
                var resultantId = id;
                // Its a relative path, so lop off the last portion and add the id (minus "./")
                if (id.charAt(0) === '.') {
                    resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2);
                }
                return require(resultantId);
            };
            module.exports = {};
            delete module.factory;
            factory(localRequire, module.exports, module);
            return module.exports;
        }
    
        require = function (id) {
            if (!modules[id]) {
                throw 'module ' + id + ' not found';
            } else if (id in inProgressModules) {
                var cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id;
                throw 'Cycle in require graph: ' + cycle;
            }
            if (modules[id].factory) {
                try {
                    inProgressModules[id] = requireStack.length;
                    requireStack.push(id);
                    return build(modules[id]);
                } finally {
                    delete inProgressModules[id];
                    requireStack.pop();
                }
            }
            return modules[id].exports;
        };
    
        define = function (id, factory) {
            if (modules[id]) {
                throw 'module ' + id + ' already defined';
            }
    
            modules[id] = {
                id: id,
                factory: factory
            };
        };
    
        define.remove = function (id) {
            delete modules[id];
        };
    
        define.moduleMap = modules;
    })();
    

      

    https://www.tongbiao.xyz/
  • 相关阅读:
    AxMIMS系统开发环境搭建
    基于霍夫变换的点云分割方法
    微惯性导航系统
    “导航技术”学习笔记
    Kalman滤波学习
    Cell complex单元复形
    矩阵与欧拉角的转换
    CGAL4.10 / CGAL4.13编译
    [OpenCV]代码整理
    KinectFusion测试
  • 原文地址:https://www.cnblogs.com/tongbiao/p/10087429.html
Copyright © 2011-2022 走看看