模块机制

110 阅读1分钟

模块机制,类似于angular

var MyModules = (function Manager() {
    var modules = {};

    function define(name, deps, impl) {
        for (let i = 0; i < deps.length; i++) {

            deps[i] = modules[deps[i]];
        }

        modules[name] = impl.apply(impl, deps);
    }

    function get(name) {
        return modules[name]
    }

    return { define, get }
})();

MyModules.define("bar", [], function () {
    function hello(who) {
        return "let me introduce: " + who;
    }

    return { hello }
})

MyModules.define("foo", ["bar"], function (bar) {
    var hungry = "hippo";

    function awesome() {
        console.log(bar.hello(hungry).toUpperCase());
    }
    return { awesome }
})

var bar = MyModules.get("bar");
var foo = MyModules.get("foo");

console.log(bar.hello("bar"));
foo.awesome()