微信小程序制作
  • 微信工公众号推广运营需要做好哪些方面的工作呢

    微信工公众号推广运营需要做好哪...2021-01-20

    要点一:粉丝要精确
    在微博营销领域有这样一句话:“一切以粉丝数量为指标的营销行为都是耍臭流氓”。因为大家都知道,粉丝是可以花钱购买的,那些买来的“僵尸粉”对企业而言完全没有作用,只是一个数字而已。这句话同样适用于微信营销。增加粉丝数量是每一个公众账号运营的重要任务,粉丝数量的增加是每个企业所必须的,那什么样子的粉丝精准度最高呢?但我们不能盲目地加粉丝,粉丝一定要精准有效。如何才能让粉丝尽可能有效呢?微信营销领域也有一句话:“一千个微信粉丝大于十万个微博粉丝”。这就是微信精准粉丝质量的关系。因为微信最大的特点就来自于信任性和私密性,所以做微信营销,一定不要泛泛的去追求粉丝而是要以精确性为核心。
    举一个例子,我一个四川做餐饮的客户,他的目标粉丝就是周边五公里的居民,首先他的公众账号里面除了有饭店介绍、菜色介绍、每个菜的营养构成、天气预报等功能和微信订餐之外,还每天更新他们附近的一些新闻、家长里短,而在推广就是充分利用自己店的优势,在桌子、大门上都有自己的微信二维码,拥有微信好友九折优惠的服务,同时还涉及除了几个微信套餐,客人去他店里面消费,只要将他们店的微信公众账号推荐给自己所有的好友,就可以任选其中一份微信套餐免费食用。
    这样一来,他的粉丝虽说不是很多,但是个个都非常精确,基本上能确定其中80%的人经常去他店里面消费,而且新客人天天都在稳定增加。他就是典型的不用软件、不用传统广告,充分利用微信公众平台营销的一个代表,本来给自己定位小店的他现在已经着手开第三家分店。看了这个例子大家就很明白了,我们做微信不追求数量,就是要质量!粉丝的精确度上去了,再配合上我们的“脑子”,生意不好才怪!
    要点二:内容要丰富
    说到内容的时候,很多读者都会微微皱一下眉头,“我的公众平台放什么内容呢?”
    首先我们先不要想放什么内容,先去想微信能怎么样的去展示内容。微信上可以有图文信息、视频、文本去展示内容,但是作为企业而言一定要考虑我们的展示一定要好于这种现成的方式,比如我大部分的客户在微信内容展示要求方面现在都要求以H5化的方式完成,因为这样一来,微信公众服务号的展示页面将多层次、多角度、页面绚丽自由,在配合上诸多实用性和个性定制的功能,企业彻底告别wap和app了。
    那么微信能如此展示,内容方面就简单了,企业只需要把自己想展示所有东西陈列出来,再根据从后台反应出的粉丝接受信息的情况不断调整就可以了,总之是要越丰富越好,微信在移动互联网端没有不能实现的,只要你敢想!
    要点三:功能要全面
    每一个企业的微信公众账号都是这个企业的全能app,能维护客户,能培养客户,能品牌展示,能促进销售,能市场调研,能干你能在移动互联网端想到的所有事情,所以企业要在微信上实现营销的最大价值化,除了要内容上丰富多彩,功能上更要全面!
    对于一个大品牌企业而言在功能上的选择非常广,唯一要做的就是个性化定制,比如招商银行的查询余额,星巴克的自然醒,都是针对自己企业和目标人群的特点除非就可以。
    而对于大多数企业而言就要根据自身需求而制定了,一般来说,一个企业的微信公众平台可以先从有天气预报、翻译、查股票等功能出发,不断的根据粉丝的需求增加平台账号的功能,使其不断全面、完善。
    要点四:互动要频繁
    说一千到一万,我们做丰富的内容、全面的功能,终极目的是啥呢?就是让我们的粉丝乐于去分享我们的微信公众平台账号,愿意去分享我们的微信公众平台账号!
    如果我们的企业就是个“广告发射器”,粉丝都会避犹不及更何况去分享,所以我们要从内容和功能上让他感觉我们的非常有用,非常值得他们去分享给他们自己的朋友。
    去分享呢?首先就是要频繁和和粉丝互动,互动率越高越好,越“有用”越好!
    我们在互动上可以设置话题,比如春节讨论红包,三八节讨论女生放假,但是这些手段太过普通,我们在互动环节上可以和功能结合起来,比如艺龙网做的“一站到底”的互动游戏,就是非常不错的创意和开发,在本书后文有详细的阐述和分析。
    还有一点,和粉丝互动一定要越简单越好,越容易参与越好,总之在不能什么互动最有用的情况下,越频繁越好!
    要点五:活动要心意
    这里说的策划活动的最直接目的是为了提升粉丝与平台的互动性,也就是为了提高粉丝对于企业微信公众平台的依赖性!
    我们将粉丝吸引到我们的平台上来了,也不能代表这些粉丝全部都是我们的潜在客户,他们究竟有哪些更为具体的需求,他们对我们的产品和服务究竟有哪些意见和看法,如果不与粉丝们进行沟通和互动,我们根本就不知道。如果我们提供的服务或信息长时间与用户的需求背道而驰,这些粉丝们要么慢慢变为僵尸粉丝,要么干脆流失掉。
    所以,我们一定要定期策划一些有心意的活动,促成与粉丝的互动,让我们的粉丝“长期有效”。要策划活动,我们就要展开分析:我们的目标人是怎么样的?他们最需要什么?他们最容易被什么东西吸引?
    这样策划一两场活动也有助于我们的目标人群吸引到我们的公众平台。
    而说到心意是因为微信友情性和私密性的特点,如果是硬邦邦的一个活动,我们就浪费了微信这么好的特点了,在本书后面有相关案例的介绍,大家可以去看!
    要点六:推广要动脑
    企业如何推广微信公众账号?这是很多读者共同面对的问题。一句话:要动脑!首先,让老客户成为我们的粉丝。老客户是企业最为重要的资产之一,老客户不仅对我们的企业和产品有一定的认知度和认可度,而且还有一定的忠诚度。竞争的激烈让企业不得不倚重于老客户,而且从营销学上来讲,一个深挖一个老客户,比开发新增加一个新客户所需要的成本要小很多。
    相对于其他媒体而言,微信的最大优势就是能让我们与我们的客户零距离接触和一对一沟通,非常有利于我们为客户提供各种服务,尤其是老客户的维护。所以我们在运营公众账号时,首先应该想办法通过各种方式和渠道将我们的老客户转移到我们的公众平台上面来。微信营销带给企业最大的好处就是对于老客户的维护!所以企业在做微信营销的时候首先想一想自己的老客户们是不是都成为自己的粉丝了呢?
    然后就是让这些成为粉丝的老客户来推广我们的微信公众平台,根据微信官方的统计,平均每个人的微信好友都不低于50个,且因为微信的私密性使彼此信任度非常高,让这些本来就是我们客户的人把我们推荐给他们的好友,这里面的转换率可想而知吧?
    还有,要有选择性地瞄准新用户。每个行业都有自己的目标客户群体,并不是所有人都需要我们的产品或服务,或者说并不是我们的产品或服务适合所有人。所以,我们在推广自己的公众账号之前一定要弄清楚我们的目标用户到底是谁,他们到底在哪里,推广时要做到有的放矢,不要像传统的路牌广告一样,撒胡椒面。之前企业执行很多传统广告思路的时候已经考虑过目标客户,只不过之前我们考虑的是如何让目标人记住我们的广告,但是这些人看过也许记住也许就忘记了,现在我们考虑的是让目标人扫一扫我们的二维码或者收听我们的微信号,这样“他”就被我们“圈”住了,永远不会忘记,而且可以对他进行深入的营销,让他依赖我们!
    所以微信公众服务号的推广时一件非常动脑的事情,充分挖掘现有资源同时让粉丝推广给“粉丝”,让企业微信公众平台的作用稳定有效增长!
    要点七:运营要计划
    运营微信公众账号一定要有周密的计划性,绝对不能盲目!因为微信公众服务号即代表了企业的品牌形象,又有时效性效果,而且可以不断提高品牌的影响力和时效性效果!而计划性大体包括:建设、搭建、阶段性目标策划与执行。微信公众平台的建设和搭建是不一样的,建设是指对于平台名称、账名、介绍、二维码的设计、认证等基础环节的完善,这是粉丝和客户看到我们的第一印象,而且这些东西都不太好修改,所以这些看似简单的环节非常重要。
    搭建就是关于内容和功能的搭建,阶段性目标策划与执行就是我们要给自己做节点,一般来说企业可以根据自身情况设置阶段性节点,比如第一步老客户是不是都关注,第二步我们的推广和活动要以什么为主,以此类推,做到运营有的放矢!
    要点八:客服要引导
    从传统营销模式中走来,我们习惯了跟多传统的客服习惯,比如一定要问需求啊,一定要问联系方式啊,一定要显的专业规范啊等等,而在微信时代,客服的要求改变了。
    以医疗行业为例,当有患者从微信公众平台咨询我们的时候,他的路径我们是很清楚的,从他的路径上我们完全可以看出他的需求是什么,所以我们的沟通就不用客套,直接根据需求展开就可以了;微信本身就是友情性和私密性的个人沟通工具,和手机等联系方式有一样的作用,所以不需要再追着对方要联系方式了;而微信营销最大的优势就是私密性,患者咨询你的时候,你的回答一定是“我和你”的关系,这样才能把私密性的特点发挥到最大,我们是朋友,是哥们,我可以给你一些帮助,这才是微信营销客服的要求!
  • 制作微信小程序商城时需要注意哪些问题和事项呢

    制作微信小程序商城时需要注意哪...2021-01-20

    随着微信小程序发展的火爆,许多企业都看中了其中的商机,想要通过长沙小程序开发,打造自己的小程序商城,来开展线上经营模式。就目前来说,微信小程序商城有好有坏,企业若是想要取得成功,就必须要注意以下几个要素。
      做好界面设计
      相信用户在选择小程序时,都会优先那些设计比较精美,更能吸引自己的小程序,因为任何人都会喜欢美好的,讨厌丑陋的事物。所以,企业在制作小程序商城时,首先就要设计好界面,让小程序能够更精美,更有吸引力,这样才能吸引更多用户前来关注,使小程序的效果更理想。
      保证主题鲜明
      小程序商城的主题鲜明,才能让用户在打开小程序时,能快速的知晓它是做什么的,对自己有何价值。这样用户才能快速决断该小程序对自己所起到的帮助,从而留下来继续使用。如果小程序商城主题模糊,用户看半天也不知道它到底是什么,有哪些产品,用户又怎会对它有兴趣。
      重点内容突出
      每个小程序都应该拥有自己的重点和特色,这样既能让自己保持个性和与众不同,提高在用户心中的辨识度。同时又能让用户进入小程序后,能够快速找到需要的重要内容,使用户需求更快被实现。否则的话,小程序若是没有重点内容,或主次不分,用户在使用时很容易就会迷失。
      导航言简意赅
      在小程序商城中,用户查找商品或是信息,基本上都会用到导航功能,用户只有通过导航,才能够到达自己想要去的页面,找到自己所需要的商品,或是信息。所以,企业在制作小程序时,就必须要保证导航的言简意赅,这样才能让用户更易理解,更快使用小程序,从而实现所需。
      以上便是企业制作微信小程序商城时,需要注意的几个方面,企业只有将这些做到位,才能使小程序更容易被用户青睐,并纷纷前来使用和体验,购买小程序中的商品和服务,使企业能够获得更多的盈利。否则小程序就无法被用户喜欢,不被用户喜欢的小程序,自然就不会有转化。
  • 制作开发微信小程序对企业有哪些实质性的帮助呢

    制作开发微信小程序对企业有哪些...2021-01-20

    移动互联网给人们带来了更多的便利,大家只要拿出手机,就能够解决日常的大部分需求,如此也使得企业商家发展的市场发生了很大改变。用户纷纷转移至移动端,也就意味着企业的市场也转移到移动互联网。对此,西安小程序开发创研科技认为,唯有小程序才能帮助企业商家在移动互联网的发展。
      便捷的体验
      虽然移动互联网带来了诸多的便利,用户就会利用自己的碎片时间,来寻求所需信息。在这样的情况下,如果使用非常麻烦,用户自然就不会考虑,因为自己的时间非常有限。但对于小程序来说,无需下载安装,点击就能直接使用,恰恰就能带给用户更便捷的体验感,自然小程序也就会受到用户的欢迎。
      低廉的价格
      企业准备涉足移动互联网,一般都会去关注这方面的价格,优先考虑经济实惠,效果又还不错的渠道。小程序相对于其它渠道来说,开发相对简单,在开发成本上就会比较低廉,更能贴合企业的需求。如此企业就能够省下开发成本,又能得到一个满意的小程序,使企业能以更少的投入来进入移动互联网。
      高效的营销
      借助于微信的影响力,小程序出生便自带光环,当企业开发好小程序后,就能够借助于微信的庞大影响力来进行营销。微信也从多个角度来扶持小程序,并且会越来越大,这样企业推广小程序时,所起到的效果就会更理想,更高效。另外微信社交几乎是基于熟人之间,这样小程序的转化率将会更高。
      广泛的场景
      微信小程序开放了众多的类目,几乎涵盖了我们所涉及的所有行业,这就给广大企业带来了更多的机会。并且小程序的应用也非常广泛,常见的电商、O2O、社交、游戏、工具、知识付费等,这样即便是实体商家,也能够通过小程序,取得意想不到的效果。由此可见,小程序的应用场景是非常广泛的。
      就目前而来,小程序正处于成长期,但随着越来越多的企业商家涉足,距离成熟的日子也会越来越近。所以对于有想法的企业来说,唯有快速布局小程序,这样才能够抢占住先机,给自身带来理想的发展。如果是等到大家都做好小程序后再去着手,那时候市场已经饱和,企业商家的发展就会变得更困难。
  • 小程序开发制作好之后如何进行营销呢

    小程序开发制作好之后如何进行营...2021-01-20

    微信小程序现在很多企业都有,因为小程序可以解决企业的很多问题,举一个简单的例子,现在很多人都使用共享单车,而共享单车的扫码解锁就是通过小程序来使用的,只需要扫一下二维码就可以直接使用,非常的方便快捷,而如果是通过app来使用的话,就非常的麻烦,这也体现了小程序快速使用、用完即走的优势。
    现在很多零售企业开发了自己的微信小程序商城,那么微信小程序商城应该如何进行营销呢?专业微信商城小程序开发小编告诉大家,智能手机时代就是让用户摆脱对电脑的依赖从而使用手机,现在电脑上的很多功能手机都可以实现。而小程序的出现,则是让大家卸载一些不常用的app,在微信小程序里面使用,这样就可以给手机节省很多的内存。
    对于一些线下的实体店铺来说,店铺的主要消费者还是来自于附近的居民,如果能让这些用户都使用自己的小程序的话,那么就可以让自己的产品有更多的销量,现在微信商城小程序有很多营销的功能,比如清库存可以使用秒杀,推广新品可以用团购,而热卖品可以通过团购的形式,如果加上分销功能,不仅可以让用户自己买到优惠的产品,而且分享出去的话如果别人也买了,也可以收到相应的收益。
    对于微信小程序的运营,从本质上讲就是商家进行销售盈余的一个工具,所以产生利润是肯定需要的,所以要通过小程序售卖一些商品,营销方案就需要提前控制好,这样可以给后面省去很多的麻烦。这一点可以参考一些外卖小程序,在价格上不变,但是设置满减,这样用户就会越买越多,让企业可以实现更多的盈利,这就是微信小程序营销的方式之一。如果想了解更多小程序的资讯,可以多关注我们的内容推送。
  • 小程序开发时间大总结,希望对开发制作小程序的伙伴有帮助

    小程序开发时间大总结,希望对开...2021-01-19

    从微信发布小程序以来,各大公司纷纷跟进都想从微信这个流量池里捞一杯羹。我司也不例外,我们整个前端团队这半年来基本上都是在开发小程序。前前后后也开发了四五个小程序了。总觉得要留下点什么,既是记录那些年我们踩过的坑,也是希望大家别再掉坑。
    那些年我们踩过的坑css样式不能引用本地图片资源,只能引用线上资源(background-image),引用本地图片资源只能用<image>标签。{{}}不能执行函数方法,{{}}只支持基本的简单运算和ES6拓展运算符。如价格格式化这种常用的处理,只能在js代码中处理好然后再模板中渲染。
    this.setData(
      price: this.formatPrice(this.data.price)
    })
    可以通过wxs模块解决{{}}中不能执行函数的问题。可以做到模拟vue.js中过滤器的功能。
    <!-- wxml模板 -->
    <wxs src="../../modules/formatPrice.wxs" module="tools" />
    <view>价格:{{tools.formatPrice(price)}}</view>
    // wxs模块
    var formatPrice = function (price){
        price = price >> 0;
        return Number(price / 100).toFixed(2);
    }
    module.exports = {
        formatPrice
    }
    小程序不支持分享链接到朋友圈,暂时的通用做法是生成保存有页面小程序码的图片到本地相册。又用户自行发朋友圈转发。前端可以利用canvas来实现,减轻服务端压力。但是会有图片锯齿不清晰的问题。建议预览图和保存到真机的图片采用不同的尺寸。保存在真机的图片按照750的宽度实现。相比于预览图要大一些,这样保存到手机的图片会清晰很多。
    小程序布局采用rpx单位,UI稿按照750的宽度出图。可直接使用UI稿的尺寸。但是在某些机型上1rpx会无法显示。可以用H5的方式实现1px效果。
    iphoneX吸底按钮的适配,可以用媒体查询获取wx.getSystemInfo获取机型。
    @media only screen
        and (device-width : 375px)
        and (device-height : 812px)
        and (-webkit-device-pixel-ratio : 3) { }
    页面A -> 页面B,页面B的操作触发了页面A的数据更新。返回更新页面A的数据,通常有两种方式来实现(我司采用了方案二):
    在页面A监听onShow事件,在onShow事件触发时无脑更新页面数据。
    通过EventBus来实现跨页面通信。
    复杂组件的开发,省市区三级联动选择器的开发,获取微信地址库的地址的编码和业务采用的省市区编码对不上。
    面路径的层级,最大不能超过10层。
    小程序小程序分包加载,微信对小程序包的大小有如下限制。
    整个小程序所有分包大小不超过 8M
    单个分包/主包大小不能超过 2M
    微信小程序主流框架对比
    wepy应该算是最早发布的小程序开发框架,提供了类vue.js的语法风格和特性,现阶段应该也是应用最广泛的框架吧。我开发的几个小程序也都是采用了wepy这个框架。我先来说说当初为什么选择这个框架的原因吧。
    类Vue.js的语法风格,适合我们团队原有的的技术栈
    支持组件化(当时微信官方的API还不支持组件化)
    支持加载外部npm包
    支持ES6的写法
    前期使用wepy的过程中,wepy自带bug。不过好在开发者响应及时,基本上都能覆盖大部分场景。
    但是有个最大的坑点就是,wepy组件的实现方式。组件使用的是静态编译组件,即组件是在编译阶段编译进页面的,每个组件都是唯一的一个实例。 多个组件共享同一个数据。并且静态编译组件。导致组件A,在页面A和页面B被引用,会copy两份代码到页面A和页面B内部。导致拆分组件并没有对包的体积有任何减少。后期微信官方API支持组件化编程后,我们逐步把一些比较核心,体积较大的组件用原声API重构了。
    由美团团队开发,mpvue和wepy一样也是在小程序上提供了类vue.js的开发体验。作为后来者,抢占了很多wepy的市场份额(ps:我们团队近期也在考虑从wepy迁移到mpvue)。这个框架的原理相比wepy要更加复杂一点,mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,提供了更加接近于vue.js的开发体验。是由京东团队开源的一套遵循 React 语法规范的多端开发解决方案。本身我对React和Taro都不是很了解,就不多解释了。具体可以看开发团队的博客和代码了解更多细节多端统一开发框架 – Taro
    我想从技术的角度来谈谈我对微信小程序的理解,我觉得小程序本身是一个非常优秀的Hybrid App的技术方案。有很多值得学的地方,可以应用到我们Hybrid App的技术方案设计中来。了解和学习小程序技术原理也能更好的优化我们的代码。
    渲染层和逻辑层分离
    相比于之前常见的Hybrid的方案,小程序使用了双线程模型:小程序的渲染层和逻辑层是是分开的,逻辑层通过JSCore来解析和执行,渲染层是通过webview来渲染。之前的常见Hybrid离线包的方案大多使用webview同时实现页面的渲染和js的解析。这样做的的结果就是隔离了js的runtime,在js代码中无法操作webview中的DOM对象和BOM对象。Js无法做任何和页面渲染有关的操作。只能通过setData把数据从JsCore传递到webview。
    独立的JS运行环境,相比于webview同时处理页面的渲染和JS的执行带来了一些好处:
    js无法动态的在页面插入节点和干预页面的渲染,解决了安全和管控的问题,否则小程序的上线审核就变得毫无意义。渲染层和逻辑层的分离,减轻了webview的压力,js的执行和页面的渲染可以并行,不会出现js执行卡主页面渲染的情况。多个页面可以共享一个JS运行环境,数据很方便的共享,整个小程序的生命周期共享同一个上下文,接近App的体验。
    坏处在于:
    多了很多webview和JSCore数据传输的消耗,数据需要序列化成字符串格式进行传输。
    离线包加载
    离线包加载,常见的Hybrid App通过webview加载H5页面,前端页面都是放在服务器端。虽说保证了灵活性。但是加载性能收网速影响大。页面切换白屏时间长。小程序离线包的加载方式。一次性加载所有的前端资源到本地再解压。大大提升了用户体验。不过微信官方为了防止下载离线包的时间过程,也严格限制了小程序包的体积。(分包加载情况下子包大小不能超过2M,也就是初次打开加载的资源不能超过2M)
  • 小程序开发制作用原生好呢还是用框架好呢

    小程序开发制作用原生好呢还是用...2021-01-19

    小程序的开发生态也在蓬勃发展,从最初的微信原生开发,到wepy、mpvue、taro、uni-app等框架依次出现,从刀耕火种演进为现代化开发,生态越来越丰富。选择多了,问题也就来了,开发小程序,该用原生还是选择三方框架?
    首先,微信原生开发的槽点大多集中如下:
    原生开发对 Node、预编译器、webpack 支持不好,影响开发效率和工程构建流程。微信定义了一个不伦不类的语法,不如正经学 vue、react,学会了全端通用,而不是只为微信小程序。vue/react 生态里有太多周边工具,可以提高开发效率,比如 ide、校验器、三方库微信 ide 和专业编辑器相比存在一些缺点和劣势。同时,开发者对三方框架,又总是有各种顾虑:
    怕性能不如原生。怕有些功能框架实现不了,只能用原生。怕框架不稳定,跳到坑里。以及诸多三方框架,到底该用哪个。
    面对如此纠结的场景,不少热心开发者发布评测文章分享经验,但感觉众说纷纭,过期信息太多。缺少一份非常专业的、深度的,或者按如今流行的话来讲,“硬核的”评测报告。做评测报告这件事,不同于泛泛经验分享,其实非常花费时间。它需要:你必须成为每一个框架的专业使用人员,而不是浅浅的了解一下这些框架。真实的动手写多个平台的测试例,比较各个平台的功能、性能,了解他们的社区情况、技术服务情况。你要有长期跟踪和更新报告的能力,避免半年后沦为过期信息。
    换言之:评测要想真,功夫得做深!
    uni-app团队花费 2 个周时间完成本报告,并坚持每个季度更新一次本评测报告。目前更新时间为 2019 年 5 月。
    本文从面向用户、面向开发者两大维度七大细项,对微信原生及主流的wepy、mpvue、taro、uni-app开发框架进行横向对比,希望给开发者在小程序框架选型时提供一种参考思路。本文基于各框架官网可采集到的公开数据及真实测试数据,希望客观公正地评价各个框架的现状和优劣。但宥于利益相关,本文的观点很可能是带有偏向性的,大家可以带着批判的眼光来看待,如发现本文中有任何评测失真,欢迎在这里报 issuse:
    面向用户、面向开发者维度,具体包括:
    用户:提供完整的业务实现,并保证高性能体验。
    开发者:平缓的学习曲线、现代开发体验(工程化)、高效的社区支持、活跃的开发迭代、多端复用。
    1. 用户
    1.1 功能实现
    软件开发,首要目标是向用户提供完整、闭环的业务功能。
    在 web 开发中,如果 vue、react 等框架的使用,造成开发者无法操作浏览器提供的所有 api,那这样的框架肯定是不成熟的。小程序开发也一样,任何开发框架,都不能限制底层的 api 调用。
    而各种业务功能底层依赖微信暴漏的组件和接口(微信官网介绍的组件和 API 规范, 也即微信原生 API),三方框架是基于微信原生进行的二次封装,开发者此时常会有个疑问:小程序在不断的迭代升级,如果某项业务依赖于最新的小程序 API,但三方框架尚未封装,该怎么办?
    实际上就像 web 开发的 vue、react 一样,浏览器出了一个新 API,并不会涉及 vue、react 的升级。本评测里的所有框架,都不会限制开发者调用底层能力。这里详细解释下原因:
    wepy:未对小程序 API 作二次封装,API 依然使用微信原生的,框架与微信小程序是否新增 API 无关。
    mpvue:支持微信的所有原生组件和 api,无限制。同时框架封装了自己的跨端 API,使用方式类似mpvue.request()。
    taro:支持微信的所有原生组件和 api,无限制。同时框架封装了自己的跨端 API,使用方式类似Taro.request(),支持 Taro 代码与小程序代码混写(详见下面的链接),可通过混写的方式调用框架尚未封装的小程序新增 API。
    uni-app:支持微信的所有原生组件和 api,无限制。在跨端方面,即便仍然使用微信原生的组件和 API,也可以直接跨端编译到 App、H5、以及支付宝百度头条等小程序。但为了管理清晰,推荐使用 uni 封装的 API,类似uni.request()。同时支持条件编译(详见下面的链接),可在条件编译代码块中,随意调用各个平台新增的 API 及组件。
    注:以上顺序,按各个框架的诞生顺序排序,下同。
    相关链接:故,三方框架均可调用所有小程序 API,完成用户的业务需求,这个维度各框架是无差别的。
    然而有差别的,是性能体验。
    1.2 性能体验
    三方框架,内部大多做了层层封装,这些封装是否会增加运行负载,导致性能下降?尤其是与原生微信小程序开发相比性能怎么样,这是大家普遍关心的问题。
    为客观的进行对比,我们特意搭建了一个测试模型,详细如下:开发内容:开发一个仿微博小程序首页的复杂长列表,支持下拉刷新、上拉翻页、点赞。
    界面如下:
    测试机型:红米 Redmi 6 Pro、MIUI 10.2.2.0 稳定版(最新版)、微信版本 7.0.3(最新版)。
    测试环境:每个框架开始测试前,杀掉各 App 进程、清空内存,保证测试机环境基本一致;每次从本地读取静态数据,屏蔽网络差异。
    我们以上述仿微博小程序为例,测试 2 个容易出性能问题的点:长列表加载、大量点赞组件的响应。
     1.2.1 长列表加载
    仿微博的列表是一个包含很多组件的列表,这种复杂列表对性能的压力更大,很适合做性能测试。
    从触发上拉加载到数据更新、页面渲染完成,需要准确计时。人眼视觉计时肯定不行,我们采用程序埋点的方式,制定了如下计时时机:
    计时开始时机:交互事件触发,框架赋值之前,如:上拉加载(onReachBottom)函数开头
    计时结束时机:页面渲染完毕 (微信 setData 回调函数开头)
    Tips:setData回调函数开头可认为是页面渲染完成的时间,是因为微信setData定义(具体详见下方链接)如下:
    微信规范:
    https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html?search-key=Page.prototype.setData
    测试方式:从页面空列表开始,通过程序自动触发上拉加载,每次新增 20 条列表,记录单次耗时;固定间隔连续触发 N 次上拉加载,使得页面达到 20*N 条列表,计算这 N 次触发上拉到渲染完成的平均耗时。
    说明:以 400 条微博列表为例,从页面空列表开始,每隔 1 秒触发一次上拉加载(新增 20 条微博),记录单次耗时,触发 20 次后停止(页面达到 400 条微博),计算这 20 次的平均耗时,结果微信原生在这 20 次 触发上拉 -> 渲染完成 的平均耗时为 876 毫秒,最快的uni-app是 741 毫秒,最慢的mpvue是 4493 毫秒
    大家初看这个数据,可能比较疑惑,别急,下方有详细说明
    说明 1:为何 mpvue/wepy 测试数据不完整?
    mpvue、wepy 诞生之初,微信小程序尚不支持自定义组件,无法进行组件化开发;mpvue、wepy 为解决这个问题,将用户编写的Vue组件,编译为WXML中的 模板(template),变相实现了组件化开发能力,提高代码复用性,这在当时的技术条件下是很棒的技术方案。
    但如此方案,在页面复杂、组件较多的时,会大量增加页面 dom 节点数量,甚至超出微信的 dom 节点数限制。我们在 红米手机(Redmi 6 Pro)上实测,页面组件超过 500 个时,mpvue、wepy  实现的仿微博 App 就会报出如下异常,并停止渲染,故这两个测试框架在组件较多时,测试数据不完整。这也就意味着,当页面组件太多时,无法使用这 2 个框架。
    dom limit exceeded please check if there's any mistake you've made
    Tips1:wepy官网的 CHANGELOG(详见下方链接),提到 v1.7.2 测试版本添加了对小程序原生组件的支持,实测坑很多,因为是测试版,官方在 issue 中也表示不推荐使用;按照官网文档,默认安装的 v1.7.3 正式版本并不支持原生组件。
    Tips2:wepy在 400 条列表以内,为何性能高于微信原生框架,这个跟自定义组件管理开销及业务场景有关(wepy编译为模板,不涉及组件创建及管理开销),后续对微博点赞,涉及组件数据传递时,微信原生框架的性能优势就提现出来了,详见下方测试数据。
    自定义组件:
    https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/
    模板(template):
    https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/template.html
    CHANGELOG:
    https://tencent.github.io/wepy/document.html#/changelog
    说明 2:为什么测试数据显示 uni-app 会比微信原生框架的性能略好呢?在页面上有 200 条记录(200 个组件)时,taro 性能数据也比微信原生框架更好。
    微信原生框架耗时主要在setData调用上,开发者若不单独优化,则每次都会传递大量数据;而 uni-app、taro 都在调用setData之前自动做diff计算,每次仅传递变动的数据。
    例如当前页面有 20 条数据,触发上拉加载时,会新加载 20 条数据,此时原生框架通过如下代码测试时,setData会传输 40 条数据
    data: {
        listData: []
    },
    onReachBottom() { // 上拉加载
        let listData = this.data.listData;
        listData.push(...Api.getNews());// 新增数据
        this.setData({
            listData
        }) // 全量数据,发送数据到视图层
    }
    开发者使用微信原生框架,完全可以自己优化,精简传递数据,比如修改如下:
    data: {
        listData: []
    },
    onReachBottom() { // 上拉加载
        // 通过长度获取下一次渲染的索引
        let index = this.data.listData.length;
        let newData = {}; // 新变更数据
        Api.getNews().forEach((item) => {
            newData['listData[' + (index++) + ']'] = item // 赋值,索引递增
        }) 
        this.setData(newData) // 增量数据,发送数据到视图层
    }
    经过如上优化修改后,再次测试,微信原生框架性能数据如下:
    从测试结果可看出,经过开发者手动优化,微信原生框架可达到更好的性能,但 uni-app、taro 相比微信原生,性能差距并不大。这个结果,和 web 开发类似,web 开发也有原生 js 开发、vue、react 框架等情况。如果不做特殊优化,原生 js 写的网页,性能经常还不如 vue、react 框架的性能。也恰恰是因为Vue、react框架的优秀,性能好,开发体验好,所以原生 js 开发已经逐渐减少使用了。复杂长列表加载下一页评测结论:微信原生开发手工优化,uni-app>微信原生开发未手工优化,taro > wepy > mpvue
    Tips:有人以为 uni-app 和 mpvue 是一样的,早期 uni-app 确实使用过 mpvue,但后来因为性能和 vue 语法支持度问题已经重新开发了。
     1.2.2 点赞组件响应速度
    长列表中的某个组件,比如点赞组件,点击时是否能及时的修改未赞和已赞状态?是这项测试的评测点。
    测试方式:
    选中某微博,点击“点赞”按钮,实现点赞状态状态切换(已赞高亮、未赞灰色)。
    点赞按钮 onclick函数开头开始计时,setData回调函数开头结束计时。
    在红米手机(Redmi 6 Pro)上进行多次测试,求其平均值,结果如下:
    说明:也就是在列表数量为 400 时,微信原生开发的应用,点赞按钮从点击到状态变化需要 111 毫秒。
    测试结果数据说明:
    wepy/mpvue 测试数据不完整的原因同上,在组件较多时,页面已经不再渲染了。
    基于微信自定义组件实现组件开发的框架(uni-app/taro),组件数据通讯性能接近于微信原生框架,远高于基于template实现组件开发的框架(wepy/mpvue)性能。
    组件数据更新性能测评:微信原生开发,uni-app,taro > wepy > mpvue
    综上,本性能测试做了 2 个测试,长列表加载和组件状态更新,综合 2 个实验,结论如下:
    微信原生开发手工优化,uni-app>微信原生开发未手工优化,taro > wepy > mpvue
    2. 开发者
    在满足用户业务需求的前提下,我们谈谈开发者的需求,从如下几个维度比较:
    平缓的学习曲线:简单易学,最好能复用现有技术栈,丰富的学习资料。
    高效的开发体验:现代前端开发流程、工程化支持。
    高效的社区支持:遇到问题,可很快的寻求到帮助。
    活跃的开发迭代:框架处于积极更新升级状态,无需担心停更。
    2.1 平缓的学习曲线
     2.1.1 DSL 语法支持
    选择开发团队熟悉的、能快速上手的 DSL,是团队框架选型的基本点。
    首先微信原生的开发语法,既像React ,又像Vue,有点不伦不类,对于开发者来说,等于又要学习一套新的语法,大幅提升了学习成本,这一直被大家所诟病。
    其它开发框架基本都遵循 React、Vue(类 Vue)语法,其主要目的:复用工程师的现有技术栈,降低学习成本。此时,框架对于原框架(React/Vue)语法的支持度就是一个重要的衡量标准,如果支持度较低、和原框架语法差异较大,则开发者无异于要学习一门新的框架,成本太高。
    实际开发中发现,各个开发框架,都没有完全实现Vue、React在 web 上的所有语法:
    wepy开发风格接近于 Vue.js,属于类 Vue实现,相对微信原生开发算前进了一大步,但相比完整Vue语法还有较大差距,开发时需要单独学习它的规则;
    mpvue、uni-app 框架基于 Vue.js 核心,通过修改 Vue.js 的 runtime 和 compiler,实现了在小程序端的运行。mpvue支持的 Vue 语法略少,uni-app 则基本支持绝大多数 vue 语法,如filter、复杂 JavaScript 表达式等;
    taro 对于 JSX 的语法支持度,也达到了绝大多数都支持的完善程度。
    DSL 语法支持评测:taro,uni-app > mpvue > wepy > 微信原生
     2.1.2 学习资料完善度
    官方文档、问题搜索、示例 demo 的完备度方面:
    微信原生:文档丰富,API 搜索准确,官方有示例 demo,支持官网上调起微信开发者工具,预览运行效果 ,详见:
    https://developers.weixin.qq.com/miniprogram/dev/index.html
    wepy:文档只有 2 页,没有搜索,组件 API 等文档都直接看微信的文档。没有提供示例 demo,很多配置需要靠猜。详见:
    https://tencent.github.io
    mpvue:文档较少,但其概念不复杂,组件 API 等文档都直接看微信的文档,学习难度低。问题搜索效果一般。没有提供示例 demo。详见:
    http://mpvue.com/
    taro:基础文档完整,具体使用问题资源较少,问题搜索效果一般,示例 demo 只包含基础功能,仅发布了微信一端。详见:
    https://taro.aotu.io/
    uni-app:基础文档和各种使用专题内容丰富,问题搜索效果较好,示例 demo 功能完备,并发布为 7 端上线。详见:
    https://uniapp.dcloud.io/
    教学课程方面:
    学习资料完善度评测:微信原生 > uni-app > mpvue , taro > wepy
    2.2 现代前端开发体验
    开发体验层面,处于明显劣势的是微信原生开发,主要差距在于:
    框架开发提供了精简的代码组织(微信原生开发,一个 Page 由 4 个文件构成,写个代码要开的标签卡太多)。
    框架开发提供了更强大的组件化能力。
    框架开发提供了应用状态管理(类 Vuex/Redux/Mobx 等)。
    框架开发能灵活支持各种 Sass 等 预处理器。
    框架开发可提供完整的 ES Next 语法支持。
    框架开发方便自定义构建策略。
    其它小程序开发框架均支持cli模式,可以在主流前端工具中开发,且基本都带有 d.ts 的语法提示库。
    由于mpvue、uni-app、taro直接支持vue、react语法,配套的 ide 工具链较丰富,着色、校验、格式化完善;wepy要弱一些,有部分三方维护的 vscode 插件。
    好的开发工具,绝对可以大幅提升开发体验,这个维度上,明显高出一截的框架是uni-app,其出品公司同时也是 HBuilder 的出品公司,DCloud.io(https://dcloud.io/)。HBuilder 是四大主流前端开发工具(可对比百度指数,详见下方链接),其为uni-app做了很多优化,故uni-app的开发效率、易用性非其他框架可及。
    开发体验维度,对比结果:uni-app > taro,mpvue > wepy > 微信原生
    这里可以输出一个结论:如果你需要工程化能力,那就直接忘了微信原生开发吧。
    相关链接:
    对比百度指数:
    http://zhishu.baidu.com/v2/main/index.html#/trend/vscode?words=vscode,hbuilder,webstorm,sublime
    2.3 高效的社区支持
    学习、开发难免遇到问题,官方技术支持和社区活跃度很重要。
    本次评测 demo 开发期间,我们的同学(同时掌握 vue 和 react),在学习研究各个多端框架时,切实感受到由于语法、学习资料、社区的差异带来的学习门槛,吐出了很多槽。
    综合评估,本项评测结论:微信原生 , uni-app > taro > mpvue > wepy
    2.4 活跃的开发迭代
    开发者必须关心一个问题:该项目是否有人长期维护?
    这个问题可以通过 github commits 频次、产品更新日志(changelog)、百度搜索指数等指标来衡量和对比。
    github commits 频次
    我们采集 2019 年 4 月份(时间为 4.1 ~ 4.30),每个项目在 github 上的 master 分支有 commit 的天数,结果如下:
    Tips:
    微信原生是闭源的,看不到 commits 数量,但保持每月至少一次的更新节奏,详见:
    https://developers.weixin.qq.com/miniprogram/dev/framework/release.html
    wepy的 master 分支无 commit,最新的 2.0.x 分支在 4 月份也仅 1 天有 commit 记录。
    从 commit 的记录来看,taro、uni-app处于更新比较活跃的状态,wepy、mpvue则相对疲软,呈现无人维护之态。
    产品更新日志
    通过浏览产品更新日志,可确认产品是否在积极迭代、增加新功能、修复用户 bug。
    我们分别查看各框架官方链接的更新日志(CHANGELOG),下方是链接地址:
    微信基础库更新日志:
    https://developers.weixin.qq.com/miniprogram/dev/framework/release.html
    wepy 官网 CHAGELOG:
    https://tencent.github.io/wepy/document.html#/changelog
    通过产品更新日志对比,微信原生、taro、uni-app 三者更新频繁,bug 修复、新功能补充都处于比较紧凑的状态;而mpvue、wepy则已有长时间没有版本发布,wepy甚至有将近 1 年时间未发布正式版本,开发者选型需谨慎。
    2.5 多端复用
    随着微信小程序的火爆,支付宝、百度、字节跳动等公司也先后进入小程序领域,这些公司个个日活过亿,坐拥海量用户,企业主希望将自己的业务触达每个用户,不管这个用户在哪个小程序中。
    需求转接到程序员这里,程序员怎么办?难道真的每个平台到处搬砖吗?此时,一套代码、多端发布就成为很多程序员的梦想,小程序跨端框架应运而生。
    现实真能如此理想吗?每个跨端框架能否真的像官网宣传的那样,实现开发一次,发布到所有小程序平台?甚至和 H5 平台复用代码?
    我们用事实说话,依然使用上述仿微博 App:
    https://github.com/dcloudio/test-framework
    依次发布到各平台,验证每个框架在各端的兼容性,结果如下:
    测试结果说明:
    ⭕ 表示支持且功能正常,❌ 表示不支持,其它则表示支持但存在部分 bug 或兼容问题
    通过这个简单的例子可以看出,跨端支持度测评结论: uni-app,taro > mpvue> 原生微信小程序、wepy
    但是仅有上面的测试还不全面,实际业务要比这个测试例复杂很多。但我们没法开发很多复杂业务做评测,所以还需要再对照各家文档补充一些信息。由于每个框架的文档中都描述了各种组件和 API 的跨端支持程度。我们过了几家的文档,发现各家基本是以微信小程序为基线,然后把各种组件和 API 在其他端实现了一遍:
    taro:H5 端实现了大部分微信的 API。
    uni-app:组件、API、配置,大部分在各个端均已实现,个别 API 有说明在某些端不支持。可以看出 uni-app 是完整在 H5 端实现了一套微信模拟器。
    跨端框架,一方面要考虑框架提供的通用 api 跨端支持,同时还要考虑不同端的特色差异如何兼容。毕竟每个端都会有自己的特色,不可能完全一致。
    taro:提供了 js 环境变量判断和统一接口的多端文件,可以在组件、js、文件方面扩展多端,不支持其他环节的分平台处理。
    uni-app:提供了条件编译模型,所有代码包括组件、js、css、配置 json、文件、目录,均支持条件编译,可不受限的编写各端差异代码
    跨端框架,还涉及一个 ui 框架的跨端问题,评测结果如下:
    taro:官方提供了taro ui,只支持微信小程序和 H5 两端,不支持 App,详见:
    https://taro-ui.aotu.io/#/
    uni-app:官方提供了uni ui,可全端运行;uni-app 还有一个插件市场,里面有很多三方 ui 组件,详见:
    https://ext.dcloud.net.cn/
    最后补充跨端案例:
    mpvue:微信端案例丰富,未见其它端案例
    taro:微信端案例丰富,百度、支付宝、H5 端亦有少量案例
    uni-app:多端案例丰富,官方示例已发布到 7 端 (包括 App 端)
    综合以上信息,本项的最终评测结论:uni-app > taro > mpvue > 原生微信小程序、wepy
    这里可以输出一个结论,如果有多端发布需求,微信原生开发、wepy这两种方式可以直接排除了。真实客观的永远是实验和数据,而不是结论。不同需求的开发者,可以根据上述实验数据,自行得出自己的选型结论。
    但作为一篇完整的评测,我们也必须提供一份总结,虽然它可能加入了我们的主观感受:
    如果你只开发微信小程序,不做多端,那么使用uni-app、taro是更优的选择,他们相当于 web 世界的 vue 和 react,有了这些工具,不再需要使用原生 wxml 开发。如果坚持微信原生开发,需要注意手动写优化代码来控制setdata,并且注意其工程化能力非常弱。
    如果你是react系,那就用taro。
    如果是vue系,那就用uni-app,uni-app在性能、周边生态和开发效率上更有优势。如果你开发多端,uni-app和taro都可以,可根据自己熟悉的技术栈选择,相对而言uni-app的多端成熟度更高一些。
    如有读者认为本文中任何评测失真,欢迎在这里报 issuse:
029-86195145 180 6652 8545 西安嘉瑞德网络科技公司
工作时间:周一到周六 8:30-18:30
邮箱:2528823962@qq.com
QQ:2528823962
地址:陕西省西安市未央元朔路明丰伯马都A座10820室
  • 微信小程序制作微信二维码
    扫码咨询
Copyright © 2015 西安嘉瑞德网络科技有限公司 陕ICP备17015187号-1