一个月写了个小程序-mpvue
开始
公司有了一个新的外包项目,是做一个比较简单的商城,但是项目比较紧张,周期就1个月,而且也没有其他人员参与,所以我要让全世界的人知道,这个小程序被我承包了。对的,包括数据库构建, api 端口,后台,小程序都是我自己写。
之前没做过小程序,看了一下知乎上面说的,做一个大概20来天,那么30天对新手来说还是可以的,匆匆忙忙就开始了。预估时间:接口7天,小程序10天,后台7天。结果: 太高估自己的能力了。
技术选型
最后确定了使用Thinkphp5 + mpvue来进行小程序的开发。
为什么用Thinkphp5
因为时间关系,后台直接使用FastAdmin来生成,挺好用的,对方又没有太多的后台要求,许多东西改改就成为一个可用的后台。所以,api接口也是直接使用当前它所带的版本,TP5.0来进行开发。
为什么用mpvue
看了一天的小程序,对于组件有了一个大致的理解,但是实际上手原生开发的话,还是比较的陌生。刚好有两个框架,mpvue和WePY这两个组件化框架,反正就是2选一,mpvue名字更像vue,所以就选它了。
分析开发过程中的一些体会
TP5
和Laravel比较的像,但是在开发过程中,对于比较熟悉Laravel开发的我,就经常会遇到很多编码习惯不兼容的问题。
- 比如实现类似jwt的token,使用Laravel的话,jwt-auth就可以用了。在TP开发中,我使用了php-jwt来实现一个简单的类似jwt-auth的功能
- 比如middleware,用于判断是否授权用户,自己使用了TP的$beforeActionList做了一个,同时比较坑的是,它只支持小写,就导致我熟悉的命名方法并不能生效,当时一直不明白是为什么。
- 熟悉了scope方法,在TP里面也是有的,但是在调用的时候,我文档看的不仔细,scope方法必须首先被调用,所以当时也在想为什么。
- 路由模式无法使用,我使用Laravel的vagrant来进行开发,但是使用路由的话,没办法获取/:id/这个东西,可能是FastAdmin的锅,后面直接使用路径了。
主要还是编码习惯的问题,习惯了Laravel在开发过程中带来的很多便利的调用,在用其他框架的时候,就会用得很不顺手。
与FastAdmin之间上线项目出现了更大的问题。本机PHP7.1,线上机器PHP5.6,本机没有问题,线上问题一大堆。
- 查找不到控制器
- 查找不到model
- 查找不到页面
以上的几个坑我都不知道是不是和PHP5.6有关,具体原因的话,还是在于composer的namespace问题,以及PSR-4的命名问题,有时候是莫名其妙的跪了,后面改文件名,直接引入加载文件地址等来解决。
TP是个挺好的框架的,只是在我的机器上开发过程中会遇到很多问题,而我又很难找不到答案(应该是我机器环境配置有问题),TP中文社区里面的很多问题并不够友好,所以就写得很烦躁。但是,TP真的比较快,本地开发使用Laravel开发接口大概200ms,tp只要80ms,不会卡卡的。
mpvue
具体开发直接使用mpvue入门5分钟 就足够入门了,使用npm安装完编译环境,就可以开始弄了,开发的整体都和vue差不多,组件化也差不多。
有几个开发过程的小问题,也都是我自身的原因
- 当时社区微信开发教程出来之后,我边参考边写我当前的小程序,对于async和await不够理解,还查了别人的实现,导致我后面对接微信登陆,授权,支付等方法异步没法把控的时候,就出现了很多的问题。所以,后面我都直接用Promise来做,等后期再看。
- mpvue的data赋值之后,如果直接使用单个.object来进行赋值的话,并不会进行更新,除非整体进行赋值。
- vuex来管控全局的状态,这个才开始用,不够熟悉,所以也用得少。
小程序端的话,最主要的还是我只是一个伪前端,能做界面,但我并不够专业,所以出界面相对来说比较慢,45个界面做了一周的时间。期间还有和UI的沟通,很多功能UI设计了,但是在小程序里面要还原出来,非常的麻烦,什么都要自己写。
总的来说,mpvue开发小程序没问题,理解一下小程序的一些声明周期和接口的一些用法,完全可以马上上手开发。注:先看看别人开源的小程序代码可以让自己的代码结构更清晰。
备注:开发的时候千万记住要提前确定好环境,客户域名,服务器和小程序,支付还没申请,直接挂我司的进行测试。我司服务器是5.6的,导致easywechat4.0用不了,一些composer也不兼容,我又返工用easywechat3重写,说多了都是泪。
本作品采用《CC 协议》,转载必须注明作者和本文链接
之前也写过前端,最烦人的是调兼容 :sob:
请问lz还接小程序的外包活儿嘛?
哦,知道了