最近手痒想体验一下微信小程序目前的开发手感,于是写了一个非常小的 Demo,也算是经历了开发小程序的完整步骤,这里想记录一下自己的感受与思考。
小程序简介
小程序最初是由微信提出并首发的,面向开放的新一代解决方案。微信小程序 官方介绍小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。
从这里可以看出微信小程序的核心价值是构建生态,腾讯的战略目标是联系一切,希望用户在使用 App 时都通过微信这个入口来触达所有 App,其余后来跟上的各大厂的核心价值基本都是类似,只不过具备的不是社交的优势,而是别的方面。
小程序提供让第三方开发者接入平台的能力,可以使用小程序平台所提供的接口,例如在微信里转发,调用支付宝支付等,这都是不同平台所提供的不同能力,并将开发的应用做到平台中,也就是实现在微信或支付宝等 App 中访问开发者所开发的应用。
手机浏览器所做的事情就是通过这一个 App,触达所有网站,网站本质上也可以理解为一个 App,用户使用一个 App 来完成所以事情,本身很符合人性,小程序就想做这样一个事情,成为更高层面意义上的浏览器,触达所有 App。
小程序技术方案
对于这块,bang 的博客 从需求分析技术方案分析的很不错,在小程序出来之前,各大平台是怎么解决开放问题的呢,大都通过纯 H5 应用来实现开放,平台提供 H5 容器,并通过 jsapi 提供 Native 接口,第三方开发者开发 H5 应用并调用平台提供的接口,然后将 H5 应用嵌入到平台中,也可以使用平台提供的各方面能力。
这种方案有以下几个主要问题:
- 平台对纯 H5 应用缺乏管控,开发者几乎可以随意改变应用,平台对这块的管控非常困难,作为平台如果没有管控能力是很危险的
- 纯 H5 应用体验太差,无论是启动速度还是页面渲染速度都与 Native 相去甚远
第一个问题如果不能解决,那么平台对外开放就很难做的很大,因为越大则危险系数越高,如果设置高准入门槛,则盘子的大小会被限制住。
第二个问题如果不能解决,因为体验差,那么用户在使用时就不一定愿意使用平台所提供的,平台提供的基本上至少是二级菜单,或者操作两次才能触达,如果体验很差,那么相比独立 App 就完全处于劣势当中。
所以小程序解决方案需要做到管控、体验优秀这两点。
纯 H5 应用的升级版是离线包技术方案,能在一定程度上部分解决上面两个问题。
- 提供离线包开发框架以及发布平台,用户将代码传到平台上,平台进行审核后发布,部分解决管控问题
- 离线包会将包下载到本地,H5 容器在打开页面时打开的就是本地页面,将网络请求时间转换成 io 操作时间,能够提高页面的加载速度
但离线包解决方案是不够完美的:
- 只提供开发框架不能完全限制开发者使用的 DSL,H5 是非常自由的,会造成审核扫描方案非常困难
- 文件离线化只能部分解决体验问题,流畅度等还是无法解决
所以提供开发规范与 DSL,就可以针对 DSL 来进行审核扫描管控,并且可以抽出中间层,将 DSL 转换成原生 H5 应用,这样就可以用 H5 容器进行加载,也可以将 DSL 转换通过 RN、Weex 等技术做成 Native Node,从而达到近乎原生的体验。当然小程序对于管控和体验方面远不止上面这些,大的方向是一致的。
小程序与其他动态化解决方案的区别
小程序与 RN、Weex 等的区别,从上面即可看出解决的问题不同,小程序解决的是开放问题,而 RN 和 Weex 解决的是动态化以及一次开发多端使用的问题。
小程序带来的变化
创业上,首选方案由开发 App 转变为开发小程序;就业上,小程序的出现直接冲击了移动端开发者的饭碗,
移动端开发成本目前已经相当高了,并且拉新和运营成本也很高,如果希望快速试错的话,那么现在还优先选择开发移动 App 无疑是一个非常错误的选择。小程序的开发和运营成本相对要低得多,并且依托于大厂的流量,如果做的好,会迅速有大量流量灌入,非常适合大部分创业公司。
但小程序也有自己的问题,比如张小龙希望小程序是即用即走这样的产品,这就意味着用户粘性很难保证,并且运营者很难直接触达用户,做一些运营活动就会比较困难,并且不是所有的产品都适合小程序,小程序也不是移动端 App 或网页的简单的移植,这都是需要运营者去思考的问题。
当前的小程序平台
前面说了小程序是面向开放的,所以要想吸引大批开发者入驻,本身就对这个平台提出了很高的要求。
首先是平台流量要大,这个是基础,只有流量大,小程序的流量才可能大,从而才能吸引开发者开发小程序。再者是有足够的开放能力,平台只有提供足够的接口,开发者才能更方便的开发。所以只有大厂大平台才能做小程序平台。
从上面两点来说微信非常满足,首先流量无可匹敌,平台也有足够的开放能力,并且还有先发优势,所以现在微信小程序是风生水起。
而别的平台也不甘落后,大厂先后发布了自己的小程序平台,比如 支付宝小程序、百度小程序,在 BAT 先后发布小程序平台之后,今日头条近日也宣布即将发布自己的小程序平台,目前在内测当中,不日即会正式发布。
这几个大厂都有自己的生态链和特点,虽然流量不及微信,但是可以发挥自己的优势,比如支付宝的优势在于金融,那么做金融相关的小程序使用 支付宝小程序 便是一个不错的选择,百度小程序 则可有发挥他的人工智能等方面的优势,头条在算法和推荐以及内容方面优势明显,估计也会在这些方面做文章。
那么作为后来者,劣势很明显,开发者已经开发了 微信小程序 之后,再让他们重新开发别的平台的小程序无疑是一件非常困难的事情,所以后来者就将 DSL 做的和 微信小程序 基本一致,甚至提供转换工具,在代码几乎不需要做改动的情况下,转换成后来者平台的小程序。后来者提供的主体 Demo 和功能也处于跟随 微信小程序 的状态,在这个基础上提供例如芝麻信用等微信没有的能力。
小程序的开发门槛
小程序的开发门槛是比较低的,作为一个客户端开发工程师根据文档也能够迅速上手,无非是一些基础配置、标签和 API 接口的使用,于我而言最难的恐怕是做出复杂的效果与 CSS 相关的配置,但随着小程序第三方组件的日益完善,这块门槛则会进一步降低。
小程序开发基本步骤
小程序开发主要分为以下几个步骤:
- 首先是在 平台 注册小程序开发者账号
- 根据 文档 和 Demo 代码 做基础配置
- 根据文档开发页面,小程序的开发思路和 Vue 等是很相似的,之前做过一点 Vue 的开发,所以对这块还比较熟悉
- 开发中需要的组件多去 Github 上看看,拿过来改改基本都可以用,后续熟悉了就可以开发自己的组件,小程序对组件化的支持还是足够的,但是不如 Vue 的方式舒服。组件化可以参考 wxSearch 的使用方式
- 开发完成后,通过开发工具上的 Upload 上传,然后 提交审核,审核通过后就 OK 了
我开发的是一个记录家庭水果、饮料、化妆品等开封时间以及还有多长时间过期这样一个 Demo,目前数据都落到本地,后续继续完善以及补充服务端开发。微信也发布了 小程序云平台,但为了防止数据丢失,还是使用多个平台保存为好。
结语
小程序的出现对移动端开发岗位造成了巨大冲击,但本身门槛并不高,所以移动端开发者掌握小程序开发也是一个不错的事情。