以前作开发的时候对项目彻底没有一个总体的思考,需求来了就知道作,只关心本身作的那部分的功能,作完拉到。但最近所作的项目中,遇到了很多问题,本身都忍不住吐槽起来了。如:项目常常性延期、代码冗余、添加一个很小的新功能都须要改动不少地方,还对以前的代码逻辑产生不小的影响。这使得我不得不对现有的项目进行思考。npm
怎么样才能把项目作的好一点或者更好?
首先,在老板看来,他确定但愿今天提的需求能够立马就上线。
而后,老板但愿咱们作出来的产品有很好的用户体验,有良好的性能。
最后,但愿系统可以稳定运行,出问题时可以尽快修复。小程序
固然,这只是我脑补出来的(我我的的想法,至于老板是否是这么想我就不清楚了)。工具
从技术上来讲就是:性能
1、组件封装:公共样式、逻辑提取。
有时候,咱们须要作一个统一的自定义弹窗样式,或者自定义的下拉框等。咱们封装成公共组件以后,其余地方须要用到时,只需引入组件和传入数据便可使用,不须要再重复的去写样式或者逻辑。有些甚至不须要设计再从新出图,利用组件就能够完成咱们的页面开发了。
封装前:
多个页面中,一样的页面样式和js逻辑没法复用,须要在每一个页面中进行代码的复制粘贴,极可能会漏掉部分代码。发生样式或者js逻辑改动时须要每一个页面都改一遍,很容易漏掉。
封装后:
可进行代码复用,多个页面中,一样的页面样式和js逻辑直接引用封装好的组件便可。发生样式或者js逻辑改动时,只须要改一个地方便可。优化
2、 项目的基础搭建
新开一个项目的时候咱们都须要先去作一些基础搭建,好比说:项目目录结构、登陆模块封装、http请求处理和其余辅助小工具等等。这些东西咱们能够作成一个npm包,发到公司内部的私有仓库里,使用的时候直接一个npm install 就能够快速的完成项目的基础搭建了。debug
深刻理解产品需求,将功能逻辑划分,对应成相应的代码逻辑:设计
若是开发时不看需求文档,到了最后除了撕逼以外还得返工。接口
与其余功能模块对接时尽可能多考虑,作成可拓展的通用模块。与某个模块对接时,如何与当前模块完成对接是咱们首要考虑的事情。考虑完这方面的事情以后,咱们还要考虑一下再有另一个模块或者多个模块接入时咱们要如何才能在代码改动量最小的状况下进行快速接入。开发
关于注释:
注释是有必要的,这个对我的和他人都是有好处的。本身一个月以前写的代码,没有注释再回去看时可能也不太懂,况且是别人呢。
若是能够的话,每一个js文件的开头简单描述下当面页面的功能逻辑,让维护的时候能快速的了解到当前页面上的东西。文档
关于文档:
你们都去遵循必定的规范才能更好的去共同创造/维护一个东西,这些规范造成以后必定要遵循下去。当一个新的小伙伴加入到咱们的时候,咱们不可能把每个规范都口头的跟他讲通常,咱们本身也记不住那么多规范。因此,将这些规范整理成文档颇有必要,记不清楚或者不了解的时候能够从新去翻一翻。还有咱们封装好的组件,其余人使用的时候也不可能花时间去看看你的源码,或者老是来问你要怎么用。这样会很浪费你们的时间,阻碍整个项目的进度。因此,组件的用法、入参/出参、注意事项等等咱们都须要再文档里面描述清楚。
根据当前作的项目,使用的技术栈,找出引发性能问题的点,逐个进行优化。就拿我当前作的这个原生小程序来讲,性能问题主要在如下几点:
解决方案
问题1: 避免频繁的setData, 将能够合并的setData合并,不在页面渲染的变量不在data里声明,在page下的其余字段里声明便可
问题2: 当面页面的改动须要刷新其余页面时,不须要当即对其余页面进行数据刷新的动做,给须要刷新的页面加个标识,等到该页面显示时经过onShow声明周期来判断并刷新 数据。
问题3: 使用小程序的分包加载,加载首页时只需先下载分包便可,提升首页加载速度。
遇到线上的bug应该快速的响应和积极的定位问题出现的缘由,从根本上去解决问题,而不是说这不是个人问题,我不用管。
尽早发现问题,在形成更大的影响以前解决问题:
自行搭建一个错误收集系统,收集js脚本错误和接口请求错误的相关信息,为定位问题提供帮助,还能够根据错误的峰值来检查当前系统是否异常。怕麻烦,图省事的还能够花钱使用fundebug。
日前能想到和记得的就只有那么多吧, 先记着,以避免遗忘。