lzr

1.3.15 • Public • Published

李泽荣 的 Javascript 库:

GitHub URL : https://github.com/ziniulian/LZR_JS


设计原则:

以数据为根,以事件驱动:
  1. 项目要分清 数据层、操作层、展示层(MVC)
    • 数据层:存放项目所需要的所有查询数据及操作数据 等
    • 操作层:依赖数据层的数据,并实现各数据变换时的所有功能操作
    • 展示层:分为控制器的展示层,和功能的展示层
      • 功能展示层:由操作层控制,以展示相应功能
      • 控制器展示层:是用户可以修改数据的界面,既要能够修改数据,也要被操作层控制,以响应数据层数据的变化。
  2. 尽量以数据驱动方法,而不是用方法去变更数据
  3. 值控制器的 before 事件不影响 set 方法的返回值
  4. 为避免事件重复绑定,最好在添加事件时加上特定的名称
类构造:
  1. 任何类都能 new 空值
  2. 创建参数统一用 LZR.setObj 进行赋值
  3. 静态方法 和 静态公共属性 不能被继承
  4. 避免枚举类使用静态方法
  5. 构造子类时,会执行父类的 init_ 方法,但并不会处理构造参数。只有子类的 init_ 方法会处理构造参数。 所以子类尽量不重载构造方法,若重载,且要使用父类对参数的处理,则需特别调用父类的参数处理方法。也因此,对参数的处理方法尽量放在 hdObj_ 方法中完成。 另:子类不重载构造方法,可能导致父类构造方法中的非参数内容被执行两次,为避免此情况发生,则子类的构造方法必须重载。总结:
    1. 子类必须有 init_ 方法
    2. 若子类的 hdObj_ 方法 无特殊功能,子类可忽略 hdObj_ 方法。
    3. 若子类的 hdObj_ 方法 有特殊功能,则必须在子类的 hdObj_ 方法中先调用父类的 hdObj_ 方法。
类图:
  1. 类图中未完善的、有隐患的、待修改的类标记为红色
  2. 类图中只是未测试的类标记为黄色
  3. 以后不会参考的、不好的设计标记为灰色
  4. 外链重数说明:
    • 0 = null
    • 0..* = {}
      • = []
    • 1 = 单件
    • 1.. = 类引用
    • 空 = 普通对象
  5. 属性、方法的顺序,不能影响类的功能
方法:
  1. 同样功能的代码不要重复出现在多个方法内
  2. 方法内能用参数尽量不用属性,能用属性尽量不用自定义类
  3. 方法名定义好就不能再修改
  4. 避免在方法内直接用自定义类名 new 对象,从而保证类名、结构的可变性
  5. 工具包内可能共用的方法,尽量保证与自定义类无关,与属性无关
  6. 在对事件克隆,回调函数指针无法明确的情况下,应尽量避免触发类似值控制器一类的克隆方法
  7. 每个需特殊处理的构造参数,都应有一个独立的处理方法
  8. 事件的触发方法全部命名为 on + 事件名,且参数结构与事件回调函数所传参数结果统一
属性:
  1. 类属性的设计,需考虑到能否克隆的问题
  2. 一个属性只关系到自身对象时,不需要值控制器
  3. 一个属性关系到多个对象时,可能需要值控制器
  4. 值控制器变量的 this 指针尽量设到数据上,或能准确获得数据的对象上
  5. 枚举和值控制器变量的初始化,尽量在 hdObj_ 方法中进行
  6. 属性一定不能使用 undefined 赋值。否则将意味着该属性无法被构造参数赋值。
DOM元素:
  1. 要考虑到视图元素的大小、和可见性的变化
  2. js 不直接使用元素Id引用元素,而使用 document.getElementById() 或其它相关函数来引用元素
  3. 测试函数也应针对不同功能封装出不同的类
  4. 百分比布局,字体使用rem,高度最好也使用rem。在html中,设置 1rem = 2%的模块宽度。
  5. 保证每个body里只有一个 div。每个模块外层都要有一个总的div
  6. 网页全部加 DTD 声明
  7. 控制器的不同功能应对应不同的div
服务:
  1. 尽量避免使用带 ? 的服务请求
  2. 路径统一末尾带 / 开头不带 /
  3. 分页查询统一使用每页显示 -1 条记录来查询总数
  4. dot 模板中只能用 /**/ 注释,避免使用 // 注释
语法规范:
  1. 删除方法统一使用 del

  2. 添加方法统一使用 add

  3. 克隆方法统一使用 clone

  4. 枚举默认的空属性统一使用 emnull

  5. body里唯一的一个总 div 其 id 和 class 统一命名为 boso (body only sub out)

  6. dot模板的js文件里唯一的一个类对象 统一命名为 dco (def/dot class object)

  7. 服务的缩写: srv

  8. 事件的缩写: evt

  9. 网络请求的缩写: req

  10. 网络应答的缩写: rsp

  11. HTML DOM Element 对象的缩写: doe

  12. 被选中的缩写: scd

  13. handle 的缩写: hd

  14. 按钮的缩写: btn

  15. 状态的缩写: stat

  16. 数据的缩写: dat

  17. 颜色的缩写: clr

  18. 管理器的缩写: mgr

  19. 自身回调的缩写: exe

  20. 单件工具包,均以 ut 为前缀

  21. 引用的类,均以 cls 为前缀

  22. 枚举对象,均以 em 为前缀

  23. 值控制器变量,均以 vc 为前缀

  24. 创建对象的方法名,均以 crt 为前缀

  25. 绑定自身回调的函数,均以 exe 为前缀

  26. 通用DAO结构获取SQL方法名,均已 sql 为前缀

  27. 枚举类,均以 Em 为前缀

  28. 接口,均以 Inf 为前缀

  29. 需要特殊处理的构造参数,均以 hd_ 为前缀

  30. 用加载外部库方法加载样式时的使用的名称,均以 css_ 为前缀

  31. 控制器加入的数据 或 特定子元素id,均以 hct_ 为前缀

  32. 库内样式名称,均以 Lc_ 为前缀

  33. 可用域名服务直接设置超链接的A元素name均以 dmad_ 为前缀

  34. cls_ :初始化时,用于明确创建类型的特殊字段

  35. chd_ :用于递归创建子数据的特殊字段

  36. chd_id : 数据库特殊字段,代表父类ID

  37. LZR_ : 用于编译后的类名前缀

  38. lzrGeneralization_ :为多层次继承,而定义的非常特殊的字段

  39. lzrClass_ : 为方法绑定的类信息字段

  40. init_ :LZR库,统一的构造器方法名

  41. hdObj_ :LZR库,对构造参数进行特殊处理的方法名

  42. super_ :LZR库,统一的父类集合名(数组)

  43. className_ :LZR库,统一的类名标识

  44. version_ :LZR库,统一的版本标识

  45. LZR_initial :后处理外链初始值

  46. LZR_code :后处理方法内容

  47. LZR_annex :后处理附加的外部库 (从 2017-11-10 以后禁用,不再从代码里关联外部库!)

  48. tmp2web :模板里用到的静态文件夹

  49. qpobj :路由请求对象的数据缓存区

  50. qpobj.tmpo :模板默认参数信息

  51. qpobj.tmpo.qry :模板的分页查询参数

  52. qpobj.tmpo.tls :模板需要的工具库

  53. qpobj.comDbSrvNoRes :数据库操作完是否自动应答

  54. qpobj.comDbSrvReturn :数据库操作的返回结果

  55. qpobj.comDbSrvTyp :数据库操作类型

  56. qpobj.comDbSrvObjs :数据库操作的修改内容

  57. qpobj.comDbSrvCond :数据库操作的匹配条件


Readme

Keywords

none

Package Sidebar

Install

npm i lzr

Weekly Downloads

9

Version

1.3.15

License

GPL

Unpacked Size

735 kB

Total Files

159

Last publish

Collaborators

  • ziniulian