0.5.3 • Published 8 years ago
@yjc/model-pattern v0.5.3
@yjc/model-pattern
用以规范模型层逻辑。\ 模型层即MVC中的“M”。对于一些纯后端的脚本,可能会没有“C”或“V”,但模型层逻辑很重,有必要划分清晰的业务层级。
分层参考了百度内部框架ODP。
当前只实现简单的功能,待实践充分后补充更多的功能。
用例1:使用数据库
用例2:扩展基类
src/demo/script/extend-base.ts
用例3:使用全局错误码
src/demo/script/use-error-codes.ts
模型层业务逻辑分层
以src/demo/use-mysql目录结构为例。
pubmodel层通用类库,可同层调用。dao无业务逻辑原子操作,不可同层调用。- 可调用
pub。 - 由
data-service调用。 - 需继承基类
ModelDao。
- 可调用
data-service主体业务逻辑封装。- 可调用
pub、dao。 - 由
page-service调用。 - 需继承基类
ModelDataService。
- 可调用
page-service由外部调用的业务逻辑封装。- 可调用
pub、data-service。 - 由外部逻辑调用。
- 需继承基类
ModelPageService。
- 可调用
调用路径: dao > data-service > page-service >> External-Logic 不可跨层调用。
目录结构生成脚本
cd @yjc/model-pattern
npm run mkdirs your-model-dirModelPageService.context
ModelPageService.context是跨层的上下文对象,在page-service实例化,透传至dao。\
典型的场景是在page-service创建数据库连接,这个连接全流程复用,最后在page-service销毁。
ModelDao.mysql
ModelDao.mysql是封装后的MySQL连接池对象(用法参考mysql)。
引用的模块@yjc/mysql,从mysql2/promise改造而来。
ErrorCodes, ExternalError
defineErrorCodes定义全局错误码。assert断言函数,抛出的错误对象包含ExternalError.eCode、ExternalError.eTip,用于隐藏出错细节、对用户提供友好提示。