背景
3个月前,因为某个创意,我想用小程序来实现。到今天,程序已经开发出来了。 在从一无所知到完成目标的过程中,如何进行技术栈的选择,是关键的第一步。这里把我的选择过程与思考记录下来,希望对他人有所帮助。
小程序平台
所有的选择,起源于需求
选择小程序就是“傍大款”,借助小程序所依附的互联网平台进行广泛的分发,享受流量红利。现在除了微信,百度,头条,支付宝,基本上有点规模的互联网公司都推出了自己的小程序。选择小程序的平台,其实是选择背后的互联网平台。所以,使用什么平台的小程序开发,是依赖于需求的。
所以,需要先去理解小程序在这些互联网平台的定位,才能搭上这趟快车,不至于南辕北辙。
这里有几篇文章推荐:
微信上线小程序是为了实现O2O链接线上线下,让微信达到千秋万载,一统江湖,成为人类的终极连接器。
支付宝,则通过借助小程序,连接各种实体和商家,实现内容的丰富和流量聚焦于B端。
百度通过把搜索流量导入到小程序,AI赋能,绝对开放,孵化了微信的竞争对手,但感觉主体战略不清楚。
头条作为内容领域的扛把子,小程序主要是进行内容分发和交易,通过头条算法的智能赋能和场景化,提高转化率。
我要做的是一个教育类的软件,主打社交属性,自然抱的是最粗的大腿:微信。
开发框架
目前有很多小程序开发框架,比如:Wepy mpvue taro,这些框架还有很多,那我们如何抉择呢?其实关键还是看几个问题的答案:
框架解决什么问题?
-
跨平台
通过框架,往往可以一次编写编译成多个H5,Native,各平台小程序。减少开发成本
-
工程化
具备NPM等框架,可以方便的进行团队开发。
-
H5主流开发体验
采用React,VUE等风格,使开发人员不需要学习新的技术
框架带来什么问题?
-
可控力下降
小程序本身已经是二次开发了,有大小的限制,如果再包一层,对代码的可控性肯定会下降,如果功能简单就无所谓,但如果,小程序内功能较为特别,可控力下降就会很麻烦。
-
兼容性
框架出现时间不长,但心非常大,基本都奔着跨小程序平台去的。导致各种兼容性问题。
-
文档不足
小程序的文档已经被人很吐槽了,框架也一样,通过框架节省的时间,很多情况下要还回去。
综合来看,框架主要解决的是多平台编译和编程习惯问题带来的是控制力下降。而原生开发的主要问题是学习成本,控制力是最强的。从产品上来说,多平台编译基本上是给轻量级应用的,如果一个应用是重点应用,一般不会采用这种方式,一旦出问题,成本太高。
所以,综合考虑下,我的小程序采用原生的方式开发。
UI 框架
我们都希望小程序有统一的风格样式和交互方式。其实微信官方有WeUI的CSS和JS库。微信的官方风格是有的,而且也是建议的风格。但毕竟我们都有一颗躁动的心,不甘于平凡...
目前大概的主流的微信小程序UI框架为:
UI | Github Stars | 说明 |
---|---|---|
WeUI | 11.5k | 官方的 |
VantUI | 11.1k | 有赞出品 |
iView | 5.2k | 基于vue.js |
MinUI | 3.4k | 美丽说 |
Wux | 4k | |
Vut | 13 | 比较简单的一套 |
对比而言VantUI是非官方用量最大的,而且查了网上的评价,都认为Vant的设计好一些,从视觉效果上来说。Vant也更精致些。
所以,我的小程序选择了VantUI为UI框架
语言
微信小程序开发支持Javascript和Typescript两种语言。查了很多网站,真正讲微信开发Javascript和Typescript的区别的没有,但大部分使用Typescript的是使用VSCode进行代码开发,然后用微信小程序开发者工具进行真机调试。使用Javascript简单些,但大项目可能管理难,而且对类型支持交叉。代码量大的情况下不好维护。
上面是我在小程序真正开发前写的。现在想说的是:别用Typescript!
自从用了Typescript,就不断被坑,可以查到很多官方的问题,真的是眼泪汪汪啊。这些问题,我回头在另外的文章中会说到。就用Javascript,这是比较稳定可控的。可以看看微信自己的官方示例都是JS的。
微信自己实现了一套语法,跟标准的js不一样,
微信小程序的渲染和后台分开了,无法直接操作DOM进行渲染。
这两个问题,其实在开发起来,是完全不影响效率的。
即使没有上面的问题,作为零基础开始,先别心大,考虑到第一次写微信小程序,如果一次引入太多技术点,容易卡在某个地方动不了,还是选择Javascript来作为第一次的开发语言,这和技术先进性无关。
开发环境
微信小程序开发工具有windows和linux版本,但在deepin中的安装过程中,linux版本出现问题。默认还是以windows开发为主,即使在windows上,通过远程桌面开发还会出现画面花屏的情况。
从个人使用Notepad++,Sublime等工具后,感觉VSCode是最好的,非常小,速度快,有非常好的插件机制,虽然比较IDEA要稍差一点,但感觉不用多久就可以完全超越了。但查看了很多文章,因为小程序编译预览的问题,目前如果使用VSCode只能用来写代码,不能run,感觉还是尴尬的。所以,暂时用微信小程序开发工具。
后端技术平台
在详细研究云开发之前,我一直在研究golang。作为后端出身,自然对后端的开发驾轻就熟。希望后端由自己搭建。我购买了云服务器,安装ngnix,安装mysql......
但实际开发的时候,发现小程序开发工具有云开发这个选项。打开一看,原理是在后端启动256M的小虚机跑nodejs,前端可以利用nodejs在后端跑小功能,这叫云函数。后台提供一个mongodb作为数据库,这叫云数据库。
小程序提供的云开发已经集成在环境中,用起来还是蛮方便的。我即使不想用,还是随手点了点,发现挺简单的,查了下API难度很小。就尝试用了起来,因为软件简单,直到做完,发现直接用云开发就够了。
我的那台云服务,到现在还在吃灰......
总体的感受,晕开发作为小程序还是非常适合的,算是找准场景了。小程序毕竟不是大程序,内容少,数据少,内容多变,上线速度又快,云开发能力不强,但基本够用。再加上监控面板,如果要个人搭建并实际投入开发,需要另外再加3个月。可换成使用云开发,基本上就是多花几天就可以完成后台开发了。
云开发的缺点也不少,工具不够专业,功能不够强大,很多强制规则。比起自己的云服务,贵了很多。但比起要我一个人来维护一个云服务器后台,我还是真的愿意选云开发,掏钱也行,算一下一个月30块钱可以放心的运营一个1000活动用户的小程序。个人开发者没有那么多的精力,还是愿意掏钱有个稳定的后台。
[云开发的介绍文章] https://juejin.im/post/5ba2fa43e51d450e5d0b0676
有疑问加站长微信联系(非本文作者)