美文网首页
browserify bundle文件头函数 深度剖析

browserify bundle文件头函数 深度剖析

作者: 成松song | 来源:发表于2018-03-23 21:27 被阅读0次

    (function() {
    function e(t, n, r) {
    function s(o, u) { //实际上s()是一个加载模块的函数
    if (!n[o]) {
    if (!t[o]) {
    var a = typeof require === "function" && require;
    if (!u && a) return a(o, !0);
    if (i) return i(o, !0);
    var f = new Error("Cannot find module '" + o + "'");
    throw f.code = "MODULE_NOT_FOUND",
    f
    }
    var l = n[o] = {
    exports: {}
    };
    console.log("---call---");
    t[o][0].call(l.exports, // t[o][0]是编号为o的模块的主体函数; l.exports是一个空对象{},在这里作为主体函数的调用者
    function(module) { // 这个函数传递给主体函数的require参数,当调用require()的时候,就会调用这个函数
    var n = t[o][1][module]; // 获得模块的编号
    return s(n ? n: module) // 调用s函数,加载模块。这里的 (n ? n: modle)是为了可以用数字作为require的参数,比如require(2)
    },
    l, l.exports, e, t, n, r) // l 作为主体函数的的module参数;l.exports 作为主体函数的exports参数;t是所有的模块的数组,比如t[13]就表示引用第13个模块
    }
    return n[o].exports // 返回导出的接口
    }
    var i = typeof require === "function" && require;
    for (var o = 0; o < r.length; o++) s(r[o]);
    return s
    }
    return e
    })()({
    1 : [function(require, module, exports) {

            arguments;
    
            console.log("--1--")
            var unique = require("uniq");    //这个地方也可以写数字2
            console.log("--2--")
            var data = [1, 2, 2, 3, 4, 5, 5, 5, 6];
            //
            console.log(unique(data));
    
        },
            {
                "uniq": 2
            }],
        2 : [function(require, module, exports) {
    
            arguments;
            console.log("--3--")
            "use strict"
    
            function unique_pred(list, compare) {
                console.log("--4--")
                var ptr = 1,
                    len = list.length,
                    a = list[0],
                    b = list[0]
                for (var i = 1; i < len; ++i) {
                    b = a
                    a = list[i]
                    if (compare(a, b)) {
                        if (i === ptr) {
                            ptr++
                            continue
                        }
                        list[ptr++] = a
                    }
                }
                list.length = ptr
                return list
            }
    
            function unique_eq(list) {
                console.log("--5--")
                var ptr = 1,
                    len = list.length,
                    a = list[0],
                    b = list[0]
                for (var i = 1; i < len; ++i, b = a) {
                    b = a
                    a = list[i]
                    if (a !== b) {
                        if (i === ptr) {
                            ptr++
                            continue
                        }
                        list[ptr++] = a
                    }
                }
                list.length = ptr
                return list
            }
    
            function unique(list, compare, sorted) {
                console.log("--6--")
                if (list.length === 0) {
                    return list
                }
                if (compare) {
                    if (!sorted) {
                        list.sort(compare)
                    }
                    return unique_pred(list, compare)
                }
                if (!sorted) {
                    list.sort()
                }
                return unique_eq(list)
            }
    
            console.log("--7--")
    
            module.exports = unique
    
        },
            {}]
    },
    {},
    [1]);

    相关文章

      网友评论

          本文标题:browserify bundle文件头函数 深度剖析

          本文链接:https://www.haomeiwen.com/subject/efkfcftx.html