小程序工程化探索:大规模场景下的问题和解决方案----------------引用

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

可以看到,我们的规范包括目录结构规范、git 分支规范、代码编写规范、开发规范、体验规范等等。

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

基于这些规范,项目初期,我们借助小程序开发者工具现有能力,再加上 gulp 的补充,形成了最初的开发模式。可以看到,gulp 的补充主要是 sass 的处理和打包文件的提取及压缩。以上规范和开发模式都是大家所常见的,那是不是有这些就够了?

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

先看一组数据,2017年1月9号,随着微信宣布小程序上线,我们的京东购物小程序也发布了第一个版本。页面数量15个,总包小于1M,参与开发人员不到10人。而到今年,我们的小程序已经有超过200个页面。总包超过10M,参与人数超过100,平均一周2个版本。当初的小程序已长成了一个大程序。看看规模暴增后带来的问题。

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

可以看到,规模的暴增给开发、测试、打包、发布各个阶段都造成了问题。

开发阶段,开发者工具越来越卡,有时候想使用手机预览,等了2分钟,结果工具告诉我文件太多了,哎。另外一个问题就是出现了大量相同、相似代码,很难处理。

测试阶段,页面越来越多,很难覆盖全,有时候等到上线了才发现有个别页面功能有问题,只能重新发版。

打包阶段,第1个问题是代码包超限,这时不得不通过删代码或者调整业务的方式来处理,这是个很麻烦的事情。另一个问题是,我们有多个小程序,但代码很难复用。

发布阶段,流程繁琐,开发人员又比较多,导致效率低下。

先看看开发阶段调试越来越卡的问题

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

不管什么 IDE,什么语言,当项目过大,文件过多时,必然会卡,小程序开发者工具也同样存在这个问题,我们的小程序到现在已经有6000多个文件,这对 IDE 来说实在是太难了。

怎么办呢?其实我们平时业务开发往往只涉及到一两个页面,我能不能只加载这个页面相关的文件呢?答案是可以的,这个方案我们叫单页抽取,通过工具化的手段进行文件依赖分析,仅提取当前开发页面所需的文件。

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

文件依赖分析如何做:可以看下这个图,app.json 里注册了小程序所有的页面路径,通过这个信息就可以拿到所有页面的文件依赖及组件的文件依赖。

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

可以看到,通过单页抽取,加载的文件数量从6000多下降到200多,预览耗时从100s下降到15s,启动、编译等操作的耗时,都有很明显的下降。

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

好,开发调试卡的问题通过单页抽取解决了,接下来是大量相同、相似代码造成的冗余问题。

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

先看下例子,这是两个不同页面的文件,但是存在完全相同的两个函数,这显然是有问题的。

小程序工程化探索:大规模场景下的问题和解决方案----------------引用

相同、相似代码形成的原因首先是复制粘贴,有相似功能的拷贝,也有跨小程序的拷贝。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjzfz.html