您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > 小程序

大型小程序如何研发提效

时间:2020-11-25 09:48:27  来源:  作者:
大型小程序如何研发提效

 

作者:王梦君

微信公众号:滴滴顺风车技术

出处:https://mp.weixin.qq.com/s/M1VArJ_ORY-eXSKzD6ysQw

 

导读:

自2016年小程序诞生以来,小程序以其“用完即走”的设计理念,以及简单易上手的开发模式,吸引了大批的小程序使用者以及开发者,随着小程序市场越来越大,相应的小程序开发者也越来越多,与此同时出现的各类小程序开发第三方框架也层出不穷。

一、小程序开发模式

小程序开发模式整体来说有两种,一种是原生小程序开发,一种是第三方框架开发。

大型小程序如何研发提效

 

整体来看小程序原生开发只能适配在对应的单独App中运行,不能提供比较全面的可以跨多端的开发能力,在有多端小程序应用需求的情况下,比较浪费人力

另外一种方案则是利用跨端框架,这种方案开发的应用一般可以达到“一套代码,多端运行”的基本目标,可以大量的节省人力,提高效率。

跨端框架开发小程序固然有很多优点,但是这种开发模式也会有一些问题,比如核心问题就是编译耗时长、开发体验差、前后端耦合等

本篇文章主要分享使用 Chameleon 框架在开发业务小程序应用过程中遇到的痛点问题,以及如何解决的心路历程。

同时也欢迎大家多多关注我们 ,Github地址:https://github.com/didi/chameleon

二、业务开发面临的痛点问题

1.业务开发面临的痛点问题

我们在小程序开发中遇到的痛点问题主要包括两方面

  • 场景构造难:强依赖后端接口和手动操作流程
  • 编译耗时长:第三方框架编译和开发者工具编译耗时极长
大型小程序如何研发提效

 

【场景构造难】

我们的业务开发中很多场景,包括发单场景、收到邀请场景、等待车主邀请场景、被多个车主邀请场景、各种管控策略场景等,都强依赖后端接口以及强依赖人工操作某些流程,从乘客发单到被车主接单,需要乘客账号、车主账号(某些场景下需要多个手机多个账号)进行协助构造某些场景,甚至很多情况下, 构造场景耗时间占用开发50%的时间,严重影响开发流程和开发效率 。

大型小程序如何研发提效

 

极端情况下,可能几十行代码的增减,就需要耗费一天的时间,大量的人力浪费在构造场景、多个手机发单接单等等本不应该有的流程上,令人痛苦不堪。

【编译耗时长】

从开发者第一次启动项目开发,到编码之后保存热更新编译,Chameleon框架编译的源码在小程序开发者工具会再次消耗编译耗时。

小程序原生开发过程中,编译耗时主要集中在 小程序开发者工具 这一个过程。

而第三方框架开发,编译耗时则主要集中在 框架编译 + 小程序开发者工具 这两个过程。

同时 第三方框架编译的源码的大小 也会直接的影响 小程序开发者工具编译耗时

大型小程序如何研发提效

 

对于编译耗时长的问题,特别是前端开发而言,需要实时查看代码变更到UI的效果,多次保存就会多次构建,即使仅仅写了一行代码,甚至一个空格的变更,保存之后都会引起重新编译

这个编译是让很容易让人抓狂和崩溃的,最宝贵的开发时间都浪费在了等待上,项目再紧急也要等着这些令人难以忍受的编译过程一直转圈圈, 严重影响开发效率,严重浪费人力成本,严重影响项目进度。

2.如何解决业务上的痛点问题?

针对场景构造难的问题,核心原因是

  • 前后端强耦合,各种场景强依赖开发人员人工操作复现
  • 前端缺少基本的数据体系建设,对于各种场景的后端数据结构缺少基本的收集规整

针对编译耗时长的问题,核心原因是

  • 从代码开发到小程序开发者工具展示要经历框架编译和小程序开发者工具编译两个过程
  • 对于业务代码量大的情况下,编译的文件个数和文件体积会更多更大,同时会进一步影响这两个构建编译的耗时

那么如何解决上述核心痛点问题呢?

我们团队采用了 "微型前端应用" 这样的思路进行单点突破,化解面临的棘手问题,逐个击破,成功的解决了开发效率极低,人力成本极为浪费,开发体验极差的情况。

3.解决方案

  • 服务层:构建本地数据体系,规整各种状态数据结构,建设开发规范,梳理开发文档
  • 应用层+业务层:将应用层的代码和业务层的抽象进行对应,支持路由和分包的自动化配置,支持按需构建要开发的单页面,这样从源头上解决了要构建编译大量代码而引起的编译耗时长的问题

同时团队进行了历史问题梳理,文档建设,数据体系梳理等,将以往阻塞开发的问题一一扫除,最终开发效率得以提升 50% ~ 80%

大型小程序如何研发提效

 

三、解决场景构造难

大型小程序如何研发提效

 

对于小程序开发中很多页面强依赖人工操作和严重缺失前端数据体系这样的问题,我们通过

  • 建立本地数据体系,前后端分离
  • 区分开发环境和生产环境请求域名
    • 开发环境下支持配置请求的域名,请求转发,支持切换请求环境
    • 生产环境下则请求线上环境
大型小程序如何研发提效

 

我们可以看下改造前后的前后端交互和开发模式上的一些不同点

前后端分离,彻底解决原来前后端强耦合情况

大型小程序如何研发提效

 

自建前端数据体系中心, 开发页面直达 ,免除诸多人工操作进行场景复现等繁琐流程

大型小程序如何研发提效

 


大型小程序如何研发提效

 

参考:

https://github.com/chameleon-team/cml-best-practice/tree/master/mock

大型小程序如何研发提效

 

四、解决编译耗时长

大型小程序如何研发提效

 

【编译层适配优化】

编译耗时长的根源是【框架编译】+【开发者工具编译耗时】

大型小程序如何研发提效

 

编译层的优化,并不能大幅度提升开发效率

【业务层适配优化】

那么业务层是否能够有优化手段呢?

大型小程序如何研发提效

 

根据上面的分析可以看到,当我们所有的业务代码全部参与构建的时候,会严重影响框架编译的速度和开发者工具二次编译的速度,能否从业务层,对各个模块进行拆分,独立构建呢?

业务层原来的构建模式:

所有的业务代码都参与构建,各个模块之间强耦合,前后端强耦合,每次构建极为耗时,严重影响开发效率、开发体验,甚至影响开发进度。

大型小程序如何研发提效

 

业务层优化后的构建模式:

依赖于自建前端数据中心,前后端分离,使得前端页面可以以“微型前端应用”的思想进行单独构建,大大减少了要编译构建的内容,大幅度提高了开发效率。

大型小程序如何研发提效

 

参考

https://github.com/chameleon-team/cml-best-practice/blob/master/dev-optimize.js

基本的思路就是通过脚本自动化配置要参与构建的路由,每次开发的时候只将要开发的页面配置到路由表中,这样可以大大降低要参与构建的内容。

最终,我们的编译耗时问题得以有效地解决

大型小程序如何研发提效

 

以上介绍了基本的实现思路和优化方案,同时我也整理了一个简单实现案例,方便给大家参考

https://github.com/chameleon-team/cml-best-practice

五.总结

日常开发中,我们面临的问题无非是 开发提效、业务开发、性能优化 等

其中 开发效率 会直接影响后续的 业务开发以及性能优化 等后续工作。

日常开发中的效率提升要重点注意和优化, 任何阻塞开发的流程和痛点问题都要及时解决 ,绝对不要忍受项目开发中的各种低效率问题, 万不可听之任之, 等到项目复杂庞大到无法变更、无法优化、甚至无法开发的地步,那个时候再想去优化开发效率将会更加棘手。

作者:王梦君

微信公众号:滴滴顺风车技术

出处:https://mp.weixin.qq.com/s/M1VArJ_ORY-eXSKzD6ysQw



Tags:小程序   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
支付宝拥有一系列城市便民服务功能,可以帮助我们在线查看各种信息,结婚状态也可以查询了,那么具体怎么操作?今天小编就为大家带来这篇教程,还不会的同学快来学习一下吧!支付宝怎么...【详细内容】
2021-12-24  Tags: 小程序  点击:(5)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  Tags: 小程序  点击:(32)  评论:(0)  加入收藏
微信小程序“无障碍急救平台”日前上线,解决听障人士120急救呼叫难题。听障人士在日常生活、工作中常有信息缺失、沟通不良的困难。如果自身或身边人突发急症,则需要依靠他人...【详细内容】
2021-12-15  Tags: 小程序  点击:(9)  评论:(0)  加入收藏
一、项目背景随着小程序在用户规模和商业化上取得的极大成功,各大平台都推出了自己的小程序。然而这些平台的小程序开发在语法上又不尽相同,不同平台小程序代码的维护需要投入...【详细内容】
2021-11-05  Tags: 小程序  点击:(65)  评论:(0)  加入收藏
现如今卖东西的渠道是越来越多,如今在微信小程序也能开店卖东西了,有的小伙伴想在小程序上卖东西但不知道该怎么做,下面就来讲讲微信小程序如何做店铺,利用微信小程序!但凡得到公...【详细内容】
2021-11-03  Tags: 小程序  点击:(32)  评论:(0)  加入收藏
作者:灰灰来源:JS每日一题 一、背景传统的web开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录服务端校验用户信息通过之后,下发一个代表登录态...【详细内容】
2021-10-29  Tags: 小程序  点击:(43)  评论:(0)  加入收藏
一、微信服务号主要偏于服务交互(类似银行,114,提供服务查询),认证前后都是每个月可群发4条消息(不适用于个人)二、微信订阅号主要偏于为用户传达资讯(类似报纸杂志),认证前后都是每天...【详细内容】
2021-10-22  Tags: 小程序  点击:(82)  评论:(0)  加入收藏
总结列举微信小程序开放能力清单 硬件能力 蓝牙 NFC读写 连接WIFI设备 开放能力 ...【详细内容】
2021-09-27  Tags: 小程序  点击:(60)  评论:(0)  加入收藏
功能说明脱离公众号下的小程序,单独使用功能特点小程序:是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用...【详细内容】
2021-09-27  Tags: 小程序  点击:(46)  评论:(0)  加入收藏
随着人们生活水平的不断提高,如今智能电视的普及率已经非常高。然而大家在使用智能电视的时候经常会遇到“无法安装第三方应用”的情况。为了解决这个问题,今天我以市场占有率...【详细内容】
2021-09-15  Tags: 小程序  点击:(81)  评论:(0)  加入收藏
▌简易百科推荐
一、项目背景随着小程序在用户规模和商业化上取得的极大成功,各大平台都推出了自己的小程序。然而这些平台的小程序开发在语法上又不尽相同,不同平台小程序代码的维护需要投入...【详细内容】
2021-11-05  携程技术    Tags:小程序   点击:(65)  评论:(0)  加入收藏
作者:灰灰来源:JS每日一题 一、背景传统的web开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录服务端校验用户信息通过之后,下发一个代表登录态...【详细内容】
2021-10-29  Nodejs开发    Tags:微信小程序   点击:(43)  评论:(0)  加入收藏
总结列举微信小程序开放能力清单 硬件能力 蓝牙 NFC读写 连接WIFI设备 开放能力 ...【详细内容】
2021-09-27  软件开发分享    Tags:微信小程序   点击:(60)  评论:(0)  加入收藏
核心商城(CoreShop)介绍核心小程序商城系统(CoreShop) 是基于 Asp.Net 5.0、Uni-App开发、支持可视化布局的小程序商城系统;前后端分离,支持分布式部署,跨平台运行;拥有分销、代理、...【详细内容】
2021-07-20  码农也有梦想    Tags:小程序商城   点击:(115)  评论:(0)  加入收藏
介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发...【详细内容】
2021-07-13  爱分享Coder    Tags:小程序   点击:(203)  评论:(0)  加入收藏
首先明确几个概念1. W3C:指万维网联盟(World Wide Web Consortium),是一个国际的标准的制定机构。2. H5(HTML5,HyperText Markup Language 5的缩写),HTML5 是由W3C制定的新HTML标...【详细内容】
2021-07-06  畅游零和一的海洋    Tags:微信小程序   点击:(152)  评论:(0)  加入收藏
在开发微信公众号时,需要不时请求URL和数据封装。为了不做重复的工作。提取公共部分进行封装。产生了相应的公众类。今天先来写下请求类,代码如下:public class HttpRequestP...【详细内容】
2021-06-16  java浮萍  今日头条  Tags:公共类   点击:(134)  评论:(0)  加入收藏
小程序上线后,改版了很多次,包括一些 Api 接口也有改动。如果你学习一个很久之前的小程序项目是没有意义的,本文推荐的小程序都是最近有更新的。相信在你学习、部署的过程中,不...【详细内容】
2021-06-08    程序猿久一  Tags:微信小程序   点击:(206)  评论:(0)  加入收藏
自从2019年微信公开课Pro在微信之夜演示《跳一跳》以来,微信小游戏已经不知不觉走过的三年,这三年中我们可以明显看到微信对小游戏的扶持,对于微信开发者来说,微信小游戏开发以...【详细内容】
2021-05-25  开课吧科科  今日头条  Tags:微信小游戏   点击:(212)  评论:(0)  加入收藏
学习编程从hello world开始。学习微信小程序开发首先要安装一个微信开发者工具,官网上免费下载童叟无欺,下载完傻瓜式安装即可。 双击微信开发者工具,然后选择小程序,然后点击...【详细内容】
2021-05-12  程序员fearlazy  fearlazy  Tags:微信小程序   点击:(268)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条