付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
职责拆分:gulp相关构建代码的重构⽅案今天在读微信⼩程序项⽬的代码,主要看了构建的部分,在读这部分代码和画架构图的过程中,发现了⼀些不是很合理的地⽅。我们的⼩程序构建⽅案scss来做css样式的管理,使⽤babel解析js的es6、7和flow语法,使⽤单⽂件组件(sfc)的形式整合wxml、wxss、js等。构建的最终产物是⼩程序的原⽣代码,然后经由⼩程序开发者⼯具再次打包和构建。我们构建使⽤的是gulp。因为只是⼏种资源的处理,不涉及到模块解析,所以gulp⽐webpack更合适。构建相关代码的结构插件、配置和⼯具等通⽤代码这3部分。项⽬中对应的⽂件有5个,根⽬录下的gulpfile.js和build⽬录下的compile、util、config等⽂件。他们之间的关系如下图:命令⾏使⽤build、dev、qa、sgb等npmscripts会对应的执⾏build、default的task,两者各⾃有⾃⼰的处理流程。处理过程中会⽤到我们扩展的解析单⽂件组件的gulp插件。图中绿⾊部分是可复⽤的utils、config代码,红⾊部分是task相关的代码,⽽橙⾊部分是我们所扩展的gulp插件。他们之间的关系如图所⽰,但从代码的⽬录结构中并不能清楚地看出这种关系,需要具体去看代码才能逐步理清。构建代码重构的想法现在的⽬录结构没有清晰反映出task、plugin等的关系,⽽且命名也达不到见名知意的要求,于是我有了重构的想法。我按照之前分析出的代码职责调整了⼀下⽬录结构:tasksflowcompile-sfc.jsclean-distDir.jscompile-sass.jscompile-js.jshandle-config.jscopy-otherFiles.jsproduction-task.jsdev-task.jspluginssfcindex.jsmy-script-compiler.jsconfigindex.jsutilsindex.jsindex.js⾸先拆分出了tasks、plugins这两个⽬录,config、utils考虑到后来的扩展也改成⽬录的形式了。tasks下⾯是production、dev两种环境下的任务,他们的实现流程需要组合flow下的细⼩步骤实现。plugins下明确封装了解析sfc的gulp插件,包括解析sfc中js代码的部分。除这些以外,还应该把gulpfile移到build⽬录下,因为gulpfile也是build的⼀部分,放到build下更合理,就像vuecli脚⼿架⽣成的代码把webpack.config.js放到build下⼀样。src下的代码也不应该引⽤build的代码,应该通过环境变量、全局变量等⽅式。这样的重构只是静态代码结构的变更,对代码的运⾏并没有啥影响,但代码的易理解和易维护性会增强⼀些。总结总结为了更便捷的开发、更好地代码可维护性,我们使⽤了scss、babel等预处理⼯具,使⽤单⽂件组件(sfc)的⽅式整合页⾯相关的wxml、wxss、js代码,相应的也就需要把这些资源的处理增加到构建流程中。经分析,使⽤gulp是⽐较合适的。读代码结合画代码结构图理清了代码从逻辑上的职责划分,也发现了⼀些命名⽅⾯不太合理的地⽅,于是也就有了重构的想法。主要⽅向是把不同的职责的代码(⽐如task、flow、plugin)放到不同的⽂件和⽬录中去,⽽不要都堆到⼀起。于是,按照代码的不同职责分出plugins、tasks和utils、config⽬录,把gulpfile也放⼊build⽬录下,把task的执
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件四年级上册Whatareyoudoing
- 小学数学二年级8的乘法口诀练习课1课件维语
- 泰山版信息技术第二册《我有电子邮箱了》课件
- 小学家长会课件(完美版)小学家长会pot
- 冀教版信息技术五年级上册《美丽贺卡》课件
- 冀教版语文六下《牧童》课件2
- 电商结尾课件
- 危险化学品破土作业基础知识安全培训
- 危险化学品腐蚀性品基础知识安全培训
- 危险化学品中毒急救基础知识安全培训
- 2027届广东六校联盟高三10月考试语文及答案
- GB/T 34630.1-2026搅拌摩擦焊铝及铝合金第1部分:术语及定义
- 《半导体制备装置用超高纯净不锈钢管》
- 2026语文新教材 第19课 航天员写给孩子的信 教学课件
- 2026年《三级物业管理师》考试模拟试题含答案
- 2026年咨询工程师《决策分析与评价》真题及答案
- 2022-2023学年高中化学鲁科版(2019)选修一第二章试卷3
- T∕CPCPA 0017-2026 托育机构婴幼儿回应性照护服务规范
- 2026春季学期国开机电专科《可编程控制器应用实训》一平台在线形考形成任务1至6答案
- 《水泥稳定含石灰土冷再生混合料技术规范》(征求意见稿)
- 2026广东省高州市医疗卫生事业单位赴广东医科大学(东莞校区)现场招聘专业技术人员112人(公共基础知识)综合能力测试题附答案
评论
0/150
提交评论