/*
* 单例设计模式
*/
/* 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环境是不支持的;
单例设计模式以及模块化
最新推荐文章于 2023-01-11 10:54:16 发布