落秋中文网

繁体版 简体版
落秋中文网 > 逆光:穹顶之下 > 第52章 架构新系统

第52章 架构新系统

删改查都封装在这里。比如查询订单列表,业务层只需要调用 dao 的 getorderlist 方法,不用关心具体的 sql 语句怎么写。” 他调出一段 ef 代码,“这里用了 ef 的仓储模式,以后换数据库都不用大改代码。”

宋哥掐灭香烟,往前坐了坐:“业务层的业务逻辑怎么划分?”

“看这个计价算法模块。” 李君浩放大代码窗口,注释用红色高亮标出,“用户提交板材尺寸、层数这些参数后,bussiness 层先验证数据合法性,再调用 dao 获取工艺参数,最后用计算公式生成报价。每个功能都拆分成独立方法,比如 calculateprice、validateparameters,方便测试和维护。”

这章没有结束,请点击下一页继续阅读!

沈杰突然开口,手指在数位板上快速滑动:“那 mvc 控制器就是连接前后端的枢纽?”

“完全正确!” 李君浩切换到 controllers 文件夹,“前端发送的 http 请求都会经过控制器。?秒/彰?踕-暁^说,惘! \首+发^比如处理用户登录,logincontroller 接收请求,调用业务层的验证方法,再把结果封装成 json 返回给前台。这里用了依赖注入,解耦了控制器和具体业务类。”

褚砚兵突然举手,声音有些发闷:“通用类库 层的工具类,像日志记录、加密算法,为什么不直接放在其他层?”

“这就是分层架构的精髓。” 李君浩调出通用类库层的目录树,“公共类库是独立的‘瑞士军刀’,哪个层需要就引用。比如日志记录,dao 层增删数据要记日志,bussiness 层处理异常也要记,统一放在 m 层避免重复开发。” 他点开加密类的代码,“这里的 aes 加密算法,前台传输敏感数据时用,后台保存密码时也用。”

会议室突然陷入沉默,只有空调外机的轰鸣声。李君浩翻到最后一页 ppt,上面用加粗字体写着 “高内聚,低耦合”:“大家别被这么多层吓到,其实就像搭积木,每个模块只做一件事。有问题随时问,这三天我会带着大家把代码撸熟。”

“小李可以啊!” 宋哥笑着鼓掌,烟头在烟灰缸里碾出火星,“讲得挺好。明天开始,按这个架构分模块开发,遇到卡点随时叫我。”

刚吃完晚晚饭, 发现林夕若还趴在电脑前,"你的饭,带过来了 ,快吃吧,解决了没",李君浩把帮林夕若带的饭递过去!

“又卡住了?” 李君浩把新冲的美式放在她桌上,瞥见屏幕上密密麻麻的原生 javascript 代码,“还在用 var 声明变量?”

林夕若苦着脸转椅,马尾辫扫过设计稿:“救命!我按 bootstrap 模板写的登录页,点击按钮没反应。用 console.log 查了半天,就是找不到问题!” 她把显示器转过来,滚动条划过数百行未封装的函数。

李君浩拖过椅子坐下,随手打开 vs code:“你看,这里的点击事件直接写在 html 里,耦合度太高了。试试 es6 的模块化封装。” 他快速新建一个login.js文件,“把所有交互逻辑抽出来,像这样 ——”

手指在键盘飞舞,屏幕跳出箭头函数:“用const loginbutton = document.getelementbyid('login-btn');获取 dom 元素,再绑定事件。注意,es6 里let和const声明的变量才有块级作用域,你之前用var,肯定会出变量提升的问题。”

林夕若托着下巴凑近屏幕:“可是这样写,html 怎么引用啊?”

“这就用到 es6 的模块化了。” 李君浩在index.html里添加<="module">标签,“在 script 标签里引入login.j='module'。模块之间可以用export和import传值,比如 ——” 他新建一个utils.js,导出加密函数,“你想在登录页用 md5 加密密码,直接import { md5 } from './utils.js';就行。”

“哇!好简洁!” 林夕若眼睛发亮,突然又垮下脸,“可是 es6 语法好多新东西,箭头函数、promise、async/await... 我看得头都大了。”

『加入书签,方便阅读』