js模块封装

1. 使用 对象 来模拟模块封装,可以避免命名冲突,但是对象里面的变量值可以被随意的修改

var modules2 = {
    _count: 0,
    m1: function () {
        console.log('m1 ' + this._count)
    },
    m2: function () {
        console.log('m2')
    }
}

//2. 使用 方法 来模拟模块封装, return 想要暴露的方法或者变量, 可以避免用户对模块里面变量的随意修改,如果用户想要使用一些值,可以通过参数进行传递

var modules3 = (function () {
    var _count = 0;
    var m1 = function () {
        console.log('modules3 m1')
    }
    var m2 = function () {

    }
    return {
        count: _count,
        m1: m1,
        m2: m2
    }
})()

// 方法 的继承

var mod = function () {
    this.m1 = () => { };
    this.m2 = () => { }
}
var mod2 = (function (mod) {
    var m = new Object();
    m._count = 0;
    mod.call(m);
    return m;
})(mod)
console.log(mod2); //_count:10, m1: f, m2: f

模块 的继承

var modules4 = (function (mode) {
    var _count = 0;
    var m1 = function () {
        console.log('modules4 m1')
    }
    mode.m3 = function () {
        console.log("mode3 m3")
    }
    return Object.assign({
        m4: m1
    }, mode)
})(modules3)

3. 模块规范 AMD 和 COMMONJS 的使用语法

// 模块规范 AMD 和 COMMONJS (定义编写模块的方式)

// 为了在服务器端,桌面端,应用程序端 使用 js 进行编程, 需要使用模块

// node是可以在服务器端进行编程的语言,node中的模块系统 就是 参照 commonJs 规范 实现的

// 慢慢衍生除了客户端(浏览器端)的模块规范, 也就是 AMD规范

// AMD规范 相对于 commonJs规范, 它是“异步加载”模式的, 不会阻塞进程, 所有依赖这个模块的语句,都会在该模块加载完成之后再运行

// 服务器端因为模块都是存放在本地硬盘可以同不加载完成,浏览器端加载速度取决于网速, 如果采用 commonJs的 同步模式, 浏览器可能会假死

// require.js 和 curl.js 实现了 AMD规范 require.js的使用方法

// require.js主要就做了两件事情, 异步加载模块 + 模块的定义(define)引用(require)

// require.js中,一个文件只能定义一个模块 第一个参数应该是依赖项名称数组

ES6的module

CMD

转载于:https://my.oschina.net/u/4085373/blog/3024698

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值