小程序的开发和进化之路

从我接触小程序开始,到现在做了差不多有五六个小程序项目,其中小的只有几个页面,大项目有几十个页面。这篇文章是我对之前项目的一个总结,内容涉及到小程序的脚手架、开发框架和后期的优化。

如果你准备开发小程序或者已经在开发小程序,相信这些经验对你会有一定的帮助。

脚手架

小程序开发者工具是可以直接编写小程序的,但是开发工具就像武士手中的剑,经过多年磨炼,可以达到人剑合一了。如果突然换把武器,那势必影响杀敌效率,所以选择自己熟悉的开发工具还是很有必要的。

本人所在的公司是中小型公司,项目开发周期都很短,前期的准备工作最多也就几天时间。如果自己去撸一套脚手架用于项目开发的话,难度会比较大,所以在网上找优质的资源是最好的选择。

脚手架的选择是视项目而定的,如果只有几个页面的项目,搞一套很重的工具未免有点画蛇添足了。我们的做法是小项目的话,直接写,大点的项目选用网络上的优质资源加上自己改写。

gulp:

监听文件改动,实时编译,支持ES6+语法

WePY:

类Vue的开发风格

组件化开发

支持加载外部NPM包

使用babel编译,支持ES6/7的语法

针对原生API进行优化

weapp-start:

支持 npm 包引入

支持 Promise, async/await 等最新语法

支持多种编译器,如 pug/less/stylus

支持 ESlint

支持本地 mock 数据

支持一键生成项目,组件模版

支持发布前资源压缩

支持自定义插件

多种工具,加速开发

其中weapp-plugin-require在分析依赖和导入第三方 npm 时存在问题,windows操作系统会出现路径错误,我已修复,并给作者提了PR,但作者并没有修复这个问题,如果有同学要用到这个脚手架,请在文末下载我修改好的文件进行替换。

另推荐我根据weapp-start搭建的环境,目录结构为:

├── README.md // 说明文档├── dist // 编译后的代码,用小程序开发工具打开此文件夹├── mock.js // 模拟数据的文件├── package-lock.json├── package.json├── project.config.json // 项目配置文件├── src // 项目代码都在这个文件夹下│ ├── app.js // 等同于小程序根目录下的app.js│ ├── app.json // 等同于小程序根目录下的app.json│ ├── app.wxss // 等同于小程序根目录下的app.wxss│ ├── assets // 项目中使用到的静态资源│ │ └── images│ │ ├── example│ │ └── tab│ ├── components // 公用的组件│ ├── page // 存放小程序的各个页面文件│ │ ├── example // example 页面│ │ │ ├── components // example页面中的组件│ │ │ ├── index.js│ │ │ ├── index.json│ │ │ ├── index.wxml│ │ │ ├── index.wxss│ │ │ ├── services // example页面中接口│ │ │ ├── template // example页面中的模板│ │ │ └── wxs // example页面中的wxs文件│ │ ├── globalStore.js // 全局共享的数据│ │ └── test│ │ ├── index.js│ │ ├── index.json│ │ ├── index.wxml│ │ └── index.wxss│ ├── template // 公用的模板│ └── utils // 公用的方法或工具│ ├── config.js // 全局的一些配置信息│ ├── create.js // 状态管理插件│ ├── mitt.js // 状态管理插件│ ├── obaa.js // 状态管理插件│ ├── util.js // 公用方法│ ├── wxRequest.js // 封装的小程序请求数据方法│ └── wxapi.js // 对小程序api进行Promise封装

当然,网上也有很多优秀的脚手架,大家可以根据自己的需要选择哟。

小程序开发框架

17年的项目我没有使用开源的框架,直接使用原生小程序写的。开发过程并没有很多的坑,只记得当时用到了一个富文本的插件,wxParse,现在已5000多个Star了。不过现在小程序有了富文本组件rich-text。

下面是现在比较火热的三大小程序框架WePY、mpvue和Taro的特性:

mpvue(美团)

彻底的组件化开发能力:提高代码复用性

完整的 Vue.js 开发体验

方便的 Vuex 数据管理方案:便于构建复杂应用

快捷的 webpack 构建机制:自定义构建策略、开发阶段 hotReload

支持使用 npm 外部依赖

使用 Vue.js 命令行工具 vue-cli 快速初始化项目

H5 代码转换编译成小程序目标代码的能力

Taro (京东)

React 语法风格

支持使用 npm/yarn 安装管理第三方依赖

支持使用 ES7/ES8 甚至更加新的 ES 规范,一切都可自行配置

支持使用 CSS 预编译器,例如 Sass 等

支持使用 Redux 进行状态管理

支持使用 Mobx 进行状态管理

程序 API 优化,异步 API Promise 化等等

WePY (腾讯)

上文已列出,此处不再赘述。

三大框架分别是国内三家大佬的前端团队产物,印象中mpvue和Taro都是18年下半年出来的,WePY出来得最早,几乎和小程序同步。

mpvue拥抱了vue,Taro拥抱了React,WePY握住了vue的手,我没有用过mpvue和Taro。我们只是开发个小程序,不用做到H5和RN共用一套代码,所以在18年开发项目时选择了WePY。

后来了解到,WePY本来是腾讯内部员工的个人项目,后来腾讯看这个项目不错,就由官方来维护了。由此带来了一些问题:WePY前期的一些核心代码存在的缺陷,后期很难修复了,像脏检查机制,据说在2.0这块会有很大的改变。

贴一张WePY其中的一个Issue,我们当时的心情和他是一样一样的:

自己曾经写过一篇《WePy+weappx开发小程序遇到的坑以及解决方案》,文中列举了开发过程中遇到的一些问题和解决方式,感兴趣的同学可以看看。

如果你问我开发小程序选择哪个框架合适?

根据需求来定。

如果只是单纯地做个小程序,就不要用框架了,小程序的语法目前已经很完善了,何必要多学习两套语法呢。如果出了问题,又改不了他们框架,一句话概括下:小程序原生有的问题框架肯定有,原生没的问题,他们可能给你造出来。

当然,如果要写一套代码适用H5和RN,那么可以考虑下mpvue和Taro。作者更新很频繁,有团队维护,至于说能不能提高效率,还得看需求。我们现在已经不用任何框架了,小程序已经玩得很熟,没必要再折腾了。

小程序开发建议

在开发过程中,我们总结了一些比较好的开发经验如下:

目录结构

上文中脚手架第三项中贴出的目录结构,是目前我们觉得比较好的一种形式。

按页面组织代码,将一个页面所需要的内容放在同一个文件夹中,方便日后的维护和复制。所以有公用组件时,统一放到外部的文件夹中。随着项目增大,这种目录结构会很方便。

组件的层级

组件的层级不能太深,2层最好,不能超过3层。因为之前项目有的封装组件过度,层级太深,在后期维护时,根据数据传递一层层地去找代码,费劲。

状态管理

目前小程序能用的状态管理框架是比较多的,像Redux、Mobx、weappx。这些都很好,我推荐使用过的weappx和打算用的omi-mp-create。

项目比较小可以不用,大项目还是用上吧,如果全都放到global中,就不好维护。

频繁setData的功能放到组件中

在电商项目中,少不了类似倒计时这种功能的。

像这种需要频繁setData操作的功能,应该单独放到一个组件中,因为当你setData的时候,小程序会有一个遍历监听了data数据方法的过程,wxs中的函数都会执行,在我上文提到自己的脚手架中有这个例子weapp-quick-start,感兴趣的可以测试一下。

使用WXS

小程序对js表达式的支持并不是很好,我也曾见过这样的代码:

<block wx:if="{{drawgift.giftDetail.virtualGoods.length>1||((drawgift.giftDetail.realGoods.length>0||drawgift.giftDetail.couponGoods.length>0)&&drawgift.giftDetail.virtualGoods.length>0)}}">

把这些判断的逻辑放到wxs中,统一维护岂不是美哉。还有一点,官方说在 iOS 设备上小程序内的 wxs 会比 javascript 代码快 2 ~ 20 倍,所以能用还是要用起来的。

控制包的大小,分包加载等

不用的包,别偷懒,统统删掉,至于分包加载等,推荐看下这篇文章,CSDN 博客《微信小程序:一些运行细节及针对性的优化策略》。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

劳务公司运营资料:人力农民工县分公司运营资料|劳务公司运营资料,劳务,公司,运营,资料,人力,农民工,分公司
劳务公司运营资料:人力农民工县分公司运营资料
高职单招合作协议书|高职单招合作协议,高职单招合作协议书,高职合作协议,单招合作协议,高职单招合作合同,高职,单招,合作,协议书
高职单招合作协议书
门窗建材销售技巧和话术 48招|门窗建材销售技巧,门窗建材销售话术,建材销售技巧,建材销售话术,门窗,建材,销售,技巧,话术 48招
门窗建材销售技巧和话术 48招
美容院销售技巧|美容院销售技巧,美容院,销售,技巧
美容院销售技巧
贷款话术以及顾客常见问题|贷款话术,贷款问答话术,贷款问题话术,贷款,话术,以及,顾客,常见问题
贷款话术以及顾客常见问题
聊天话术技巧:不会和客户聊天,教你10个高效沟通技巧!|聊天话术技巧,聊天话术,高效沟通技巧,高效沟通话术,聊天,话术,技巧,不会,客户,教你10个,高效,沟通
聊天话术技巧:不会和客户聊天,教你10个高效沟通技巧!
要成功,学话术!美容师话术参考大全|美容师话术,美容师话术大全,美业话术,美业话术资料,美业话术大全,美业话术手册,成功,学话,美容师,话术,参考,大全
要成功,学话术!美容师话术参考大全
72页寿险陌拜行销+23页车险陌拜话术|寿险陌拜行销,车险陌拜话术,寿险话术,车险话术,寿险销售技巧,车险销售技巧,寿险陌拜技巧,车险陌拜技巧,72页,寿险,陌拜,行销,+23页,车险,陌拜话术
72页寿险陌拜行销+23页车险陌拜话术

历史上的今天:05月02日

如何确定网站建设需求?

如何确定网站建设需求?随着技术的不断发展和用户对网站功能性的需求不断提高,如今网站项目的设计已经不能再仅仅简单地利用静态html文件来实现,与前几年网站设计由一两名网页设计师自由的创作相比,网站项目的设计和开发越来越像一个软件工程也越来越复杂,网站项目的设计和开发进入了需要强调流程和分工的时代,建立规范的、有效的、健壮的开发机制,才能适应用户不断变化的需要,达到预期的计划目标。下面一起来看看网站建

店面运营指导手册

店面运营指导手册74页目录使用说明定制家居经营理念店面管理制度01/标准店店面架构与职责03/店面基本管理制度13/店面人员行为模版17/财务管理制度18/折扣、佣金、代金券、运输费等管理规定激励制度和晋升制度19/家居顾问激励制度19/设计师激励制度20/店面组长激励机制20/店长激励机制21/设计主管激励制度21/传、帮、带激励机制23/晋升激励制度周报表25/家居顾问个人报表(附件)27/家

【话术】做好家电销售-你一定要学会这些销售技巧和话术

【话术】做好家电销售-你一定要学会这些销售技巧和话术做好家电销售,你一定要学会这些销售技巧和话术家电销售技巧和话术一:亚洲是全世界家电销售增长最快的地区,而中国,即是规模宏大的生产制造基地,又是蕴藏着巨大潜力的消费市场,在这种双重角色下,中国家电销售正在上演着中国传奇。家电销售额增长迅速,有三个因素构成了市场增长的驱动力,推动着各大家电的更新换代。首先,随着生活水平的提高,消费者希望选择容积更大的

大数据分析的常用方法之销售数据分析

大数据分析的常用方法之销售数据分析一、大数据分析方法五种 ——对比分析对比分析法不管是从生活中还是工作中,都会经常用到,对比分析法也称比较分析法,是将两个或两个以上相互联系的指标数据进行比较,分析其变化情况,了解事物的本质特征和发展规律。在数据分析中,常用到的分3类:时间对比、空间对比以及标准对比。二、大数据分析方法五种——漏斗分析转化漏斗分析是业务分析的基本模型,最常见的是把最终的转化设置为某种

为了更好的团队合作,请断断续续地沟通

到底是独立思考者,还是高度相互联系的团队,才会做出更好的决策呢?或许我们可以折中一下:建立间歇性沟通的团队。“在孤独中,大脑会获得力量,还会懂得如何依靠自己。”&nbsp;——劳伦斯·斯特恩长时间的沟通可能会影响你的工作效率。在手机和互联网组成的现代社会里,沟通比以往任何时候都要容易。我们一直在利用这种便利,与世界另一端的人沟通,与办公室外的同事保持联系,随时与甲方汇报工作成果。但我们始终未能发现

美容院活动促销策划资料大全 美容会所促销管理运营资料300本

美容院活动促销策划资料大全 美容会所促销管理运营资料300本0823_女人心中秋国庆促销方案-1.doc1-如何打造完美有效的促销活动?《徐启武老师》.ppt10.1促销活动(营业员培训).ppt100 种促销方式.doc10、11、12月份促销活动(周辉).doc26个常见的促销策略.ppt26种促销方法.pptA.docBIOTHERM碧欧泉商场促销方案.pptdxo_-再清椿终端促销.ppt

热门专题

卓越综合高中|卓越综合高中
卓越综合高中
APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专
易捷尔单招|易捷尔单招,易捷尔单招培训,易捷尔单招报名,易捷尔单招考试,易捷尔单招培训学校,易捷尔单招分数
易捷尔单招
云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
云南网站建设|云南网站制作,网站建设,云南网站开发,云南网站设计,云南网页设计,云南网站建设公司,云南网站建设
云南网站建设
大理科技管理学校|大理科技管理中等职业技术学校,大理市科技管理中等职业技术学校
大理科技管理学校

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部