🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
模式:经过实践证明,有通用性的,优秀的解决方案。 # 编程模式 * 行为隔离 * 命名空间 * 初始化分支 * 延迟定义 * 配置对象 * 私有变量和方法 * 特权方法 * 私有函数的共有化 * 自执行的方法 * 链式调用 * JSON ***** ## 行为隔离 * 内容HTML > 尽量避免在HTML标签中使用样式类的属性 > 不要使用与外观有关的HTML标签 > 尽量根据语义需要来选择标签 * 外观CSS > 对浏览器默认的绘制行为进行重置 * 行为JavaScript > 尽可能少用\<script\>标签 > 尽量不要使用内嵌事件的处理方法 > 尽量不要使用CSS表达式 > 在内容末尾、body标签之前,插入js文件 ## 命名空间 避免命名冲突 ## 初始化分支 在模块初始化的过程中就将部分代码进行分支处理,效率更高。 应该单独检测每个可能会用到的浏览器特性。 ## 延迟定义 相关函数只有在被调用时,才会执行,使初始化过程更为轻量。 ## 配置对象 参数过多时,使用配置型参数,优点: * 不用考虑参数的顺序 * 可以跳过某些参数的设置 * 函数的扩展性更强 * 代码的可读性更好 ## 私有属性和方法 利用构造器函数来实现 ## 特权函数 可以通过他们访问对象的私有方法或属性 ## 私有函数公有化 不让外界修改,但是希望外部代码访问 ``` var _setStyle = function(){} var _getStyle = function(){} return { setStyle: _setStyle, getStyle: _getStyle } ``` ## 自执行函数 保证全局命名空间不被污染 适用于某些脚本加载时执行一次性初始化任务 ## 链式调用 ## JSON # 设计模式 * 创建型模式:设计对象的创建与初始化 * 结构性模式:描述了如何组合对象以提供新的功能 * 行为型模式:描述了对象之间如何通信 * 单例模式 ``` // 最基本的形式,对象文本标识法 var single = {} ``` * 工厂模式 ``` // 全局变量 function Logger(){ if(typeof global_log === 'undefined'){ global_log = this; } return global_log; } var a = new Logger(); var b = new Logger(); alert(a === b); // 构造器属性 function Logger(){ if(typeof Logger.single_instance === 'undefined'){ Logger.single_instance = this; } return Logger.single_instance; } ``` * 装饰器模式 * 观察者模式