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/
  • 相关阅读:
    Delphi
    delphi trayIcon控件,如何实现窗口最小化的时候到系统托盘
    delphi2010自带 TTrayIcon 托盘图标控件使用方法
    通过例子来简单了解下TProgressBar的使用。 pas文件程序如下
    ORA-12154,ORA-12560解决过程
    博客备份小工具3
    各大招聘网站信息实时查询浏览
    IE7中使用Jquery动态操作name问题
    js问题杂记
    动态sql
  • 原文地址:https://www.cnblogs.com/tongbiao/p/10087429.html
Copyright © 2011-2022 走看看