单例设计模式以及模块化

/*
 * 单例设计模式 
 */
/* let AModule = (function () {
    let n = 10;
    const query = () => {};
    const sum = () => {};

    // 暴露API
    return {
        query
    };
})();

let BModule = (function () {
    let n = 20;
    const sum = () => {};
    AModule.query();

    return {

    };
})(); */

/* 
// 利用对象「单独堆内存」来进行分组管理,避免全局变量污染
// 这种方案其实就是“单例设计模式”:每一个对象都是Object的单独实例,基于每一个实例对象来管理自己的属性和方法,实现分组的效果
//    person1/person2:namespace 命名空间
//    把描述同一个事物的属性和方法放在相同的命名空间中,以此来避免全局变量污染
let person1 = {
    name: '王宇浩',
    age: 42,
    friend: true,
    eat() {}
};
let person2 = {
    name: '闫闪闪',
    age: 18,
    friend: false,
    eat() {}
}; 
*/

/* 
// 利用闭包的思想「单独的执行上下文」来进行分组管理,避免全局变量污染
(function () {
    let name = '王宇浩';
    let age = 42;
    let friend = true;
    const query = () => {};
    // 暴露API:挂载到GO中「不宜挂载过多,因为挂载过多也会冲突」
    window.query = query;
})();

(function () {
    let name = '闫闪闪';
    let age = 18;
    let friend = false;
    query();
})(); 
*/

//=======================
// 单例设计模式需要自己写代码来管理;并且如果每一个模块是一个单独的JS,最后导入JS的时候,我们需要非常认真的去管理一下先后导入的顺序「按照模块之间的依赖去处理」;...
// AMD:按需导入,有效管理模块之间的依赖「require.js」
//    + require & define
//    + 需要依赖三方插件;依赖前置;

//=======================
// CommonJS规范「只能在Node环境下运行;随用随导入,无需依赖前置」
//   + 导入:require
//   + 导出:module.exports

//=======================
// 淘宝玉伯研发了一个插件:seajs,旨在把CommonJS规范搬到浏览器端运行,起了个规范名字“CMD”

//=======================
// ECMA官方出来个模块规范:ES6Module
//   + 导出:export &  export default
//   + 导入:import
//   + 依赖前置;浏览器可以直接支持;NodeJS环境是不支持的;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值