lzr v1.3.15
李泽荣 的 Javascript 库:
GitHub URL : https://github.com/ziniulian/LZR_JS
设计原则:
以数据为根,以事件驱动:
- 项目要分清 数据层、操作层、展示层(MVC)
- 数据层:存放项目所需要的所有查询数据及操作数据 等
- 操作层:依赖数据层的数据,并实现各数据变换时的所有功能操作
- 展示层:分为控制器的展示层,和功能的展示层 - 功能展示层:由操作层控制,以展示相应功能 - 控制器展示层:是用户可以修改数据的界面,既要能够修改数据,也要被操作层控制,以响应数据层数据的变化。
- 尽量以数据驱动方法,而不是用方法去变更数据
- 值控制器的 before 事件不影响 set 方法的返回值
- 为避免事件重复绑定,最好在添加事件时加上特定的名称
类构造:
- 任何类都能 new 空值
- 创建参数统一用 LZR.setObj 进行赋值
- 静态方法 和 静态公共属性 不能被继承
- 避免枚举类使用静态方法
- 构造子类时,会执行父类的 init 方法,但并不会处理构造参数。只有子类的 init 方法会处理构造参数。 所以子类尽量不重载构造方法,若重载,且要使用父类对参数的处理,则需特别调用父类的参数处理方法。也因此,对参数的处理方法尽量放在 hdObj_ 方法中完成。 另:子类不重载构造方法,可能导致父类构造方法中的非参数内容被执行两次,为避免此情况发生,则子类的构造方法必须重载。总结:
- 子类必须有 init_ 方法
- 若子类的 hdObj 方法 无特殊功能,子类可忽略 hdObj 方法。
- 若子类的 hdObj 方法 有特殊功能,则必须在子类的 hdObj 方法中先调用父类的 hdObj_ 方法。
类图:
- 类图中未完善的、有隐患的、待修改的类标记为红色
- 类图中只是未测试的类标记为黄色
- 以后不会参考的、不好的设计标记为灰色
- 外链重数说明:
- 0 = null
- 0..* = {}
- = []
- 1 = 单件
- 1.. = 类引用
- 空 = 普通对象
- 属性、方法的顺序,不能影响类的功能
方法:
- 同样功能的代码不要重复出现在多个方法内
- 方法内能用参数尽量不用属性,能用属性尽量不用自定义类
- 方法名定义好就不能再修改
- 避免在方法内直接用自定义类名 new 对象,从而保证类名、结构的可变性
- 工具包内可能共用的方法,尽量保证与自定义类无关,与属性无关
- 在对事件克隆,回调函数指针无法明确的情况下,应尽量避免触发类似值控制器一类的克隆方法
- 每个需特殊处理的构造参数,都应有一个独立的处理方法
- 事件的触发方法全部命名为 on + 事件名,且参数结构与事件回调函数所传参数结果统一
属性:
- 类属性的设计,需考虑到能否克隆的问题
- 一个属性只关系到自身对象时,不需要值控制器
- 一个属性关系到多个对象时,可能需要值控制器
- 值控制器变量的 this 指针尽量设到数据上,或能准确获得数据的对象上
- 枚举和值控制器变量的初始化,尽量在 hdObj_ 方法中进行
- 属性一定不能使用 undefined 赋值。否则将意味着该属性无法被构造参数赋值。
DOM元素:
- 要考虑到视图元素的大小、和可见性的变化
- js 不直接使用元素Id引用元素,而使用 document.getElementById() 或其它相关函数来引用元素
- 测试函数也应针对不同功能封装出不同的类
- 百分比布局,字体使用rem,高度最好也使用rem。在html中,设置 1rem = 2%的模块宽度。
- 保证每个body里只有一个 div。每个模块外层都要有一个总的div
- 网页全部加 DTD 声明
- 控制器的不同功能应对应不同的div
服务:
- 尽量避免使用带 ? 的服务请求
- 路径统一末尾带 / 开头不带 /
- 分页查询统一使用每页显示 -1 条记录来查询总数
- dot 模板中只能用 /**/ 注释,避免使用 // 注释
语法规范:
- 删除方法统一使用 del
- 添加方法统一使用 add
- 克隆方法统一使用 clone
- 枚举默认的空属性统一使用 emnull
- body里唯一的一个总 div 其 id 和 class 统一命名为 boso (body only sub out)
dot模板的js文件里唯一的一个类对象 统一命名为 dco (def/dot class object)
服务的缩写: srv
- 事件的缩写: evt
- 网络请求的缩写: req
- 网络应答的缩写: rsp
- HTML DOM Element 对象的缩写: doe
- 被选中的缩写: scd
- handle 的缩写: hd
- 按钮的缩写: btn
- 状态的缩写: stat
- 数据的缩写: dat
- 颜色的缩写: clr
- 管理器的缩写: mgr
自身回调的缩写: exe
单件工具包,均以 ut 为前缀
- 引用的类,均以 cls 为前缀
- 枚举对象,均以 em 为前缀
- 值控制器变量,均以 vc 为前缀
- 创建对象的方法名,均以 crt 为前缀
- 绑定自身回调的函数,均以 exe 为前缀
- 通用DAO结构获取SQL方法名,均已 sql 为前缀
- 枚举类,均以 Em 为前缀
- 接口,均以 Inf 为前缀
- 需要特殊处理的构造参数,均以 hd_ 为前缀
- 用加载外部库方法加载样式时的使用的名称,均以 css_ 为前缀
- 控制器加入的数据 或 特定子元素id,均以 hct_ 为前缀
- 库内样式名称,均以 Lc_ 为前缀
可用域名服务直接设置超链接的A元素name均以 dmad_ 为前缀
cls_ :初始化时,用于明确创建类型的特殊字段
- chd_ :用于递归创建子数据的特殊字段
- chd_id : 数据库特殊字段,代表父类ID
LZR_ : 用于编译后的类名前缀
lzrGeneralization_ :为多层次继承,而定义的非常特殊的字段
- lzrClass_ : 为方法绑定的类信息字段
- init_ :LZR库,统一的构造器方法名
- hdObj_ :LZR库,对构造参数进行特殊处理的方法名
- super_ :LZR库,统一的父类集合名(数组)
- className_ :LZR库,统一的类名标识
version_ :LZR库,统一的版本标识
LZR_initial :后处理外链初始值
- LZR_code :后处理方法内容
LZR_annex :后处理附加的外部库 (从 2017-11-10 以后禁用,不再从代码里关联外部库!)
tmp2web :模板里用到的静态文件夹
- qpobj :路由请求对象的数据缓存区
- qpobj.tmpo :模板默认参数信息
- qpobj.tmpo.qry :模板的分页查询参数
- qpobj.tmpo.tls :模板需要的工具库
- qpobj.comDbSrvNoRes :数据库操作完是否自动应答
- qpobj.comDbSrvReturn :数据库操作的返回结果
- qpobj.comDbSrvTyp :数据库操作类型
- qpobj.comDbSrvObjs :数据库操作的修改内容
- qpobj.comDbSrvCond :数据库操作的匹配条件
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago