码迷,mamicode.com
首页 > 其他好文 > 详细

模块加载原理(第二种)

时间:2019-11-18 13:19:40      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:typeof   调用   fun   fine   amp   app   var   factory   style   

var kModule = (function(){
    var modules = {}
    ,config = {}
    ,define = function(deps,factory){
        typeof deps == ‘function‘ && (
            factory = deps,
            deps = []
        )
        if(!Array.isArray(deps)){
            deps = [deps];
        }
        var exports = function(name,impl){
            if(!modules[name]){
                kModule[name] = modules[name] = impl;
            }
        }
        typeof factory == ‘function‘ && factory.apply(factory,[exports])
    }
    
    ,require = function(deps,handle){
        typeof deps == ‘function‘ && (
            handle = deps,
            deps = []
        )
        if(!Array.isArray(deps)){
            deps = [deps];
        }
        for(let i = 0; i < deps.length; i++){
            deps[i] = modules[deps[i]]
        }
        handle.apply(handle,deps);
    }
    
    return {
        define:define,
        require:require,
    };
    
})();


kModule.define(function(exports){
    var initTable = function(){
        return "初始化表格模块";
    }
    var tableImpl = {
        initTable:initTable
    }
    exports(‘table‘,tableImpl)
});

//第一种调用方式
kModule.require(‘table‘,function(){
    var table = kModule.table
    alert(table.initTable());
});
//第二种调用方式
kModule.require(‘table‘,function(table){
    alert(table.initTable());
});

 

模块加载原理(第二种)

标签:typeof   调用   fun   fine   amp   app   var   factory   style   

原文地址:https://www.cnblogs.com/littleboyck/p/11881259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!