微信小程序和Vue哪个更好
2019-07-04 14:13:38
  • 0
  • 0
  • 5

微信小程序刚出来的时候,老板非常重视,问我做起来难不难。那时的API还少,文档也相当简单,我就如实回答;“这不挺简单的嘛”。老板就接着问:“这样,你看看把我们业务全部迁到小程序,两天够不够?”…(⊙_⊙;)… (后续:一年后,小程序开放了webview功能,两天说不定还真的够。所以说,凡事不要轻言放弃。)

对运营部门来说,增加一个渠道,改善用户体验,降低App获取成本,小程序是个好东西。然而对于开发人员来说,往往意味着数倍的工作量。移动端H5要维护一套,微信小程序要一套,支付宝小程序要一套,今年手机厂商还大力推广的“快应用”。虽然语法都与Vue类似,上手非常容易,但生态远没有React和Vue来得成熟,开发体验接近于阉割版的Vue。以微信小程序为例,列举开发过程最不爽的几点:

React全家桶 Vue全家桶 微信小程序

组件间通信 Redux Vuex 没有

侦听数据变化 componentWillReceiveProps生命周期 侦听器watch 没有

处理显示数据 JSX computed、fliters 只能计算后setData

Dom操作 ref ref 没有Dom概念

HTML

HTML5 HTML5

本来就不是html,

甚至不支持<table>

CSS CSS3 CSS3

样式和CSS有差异,

甚至background-image都不能用本地图片

为了克服上述困难,市面上出现了一些使用 Vue.js 开发小程序的前端框架,如WePY和mpvue。通过不同的webpack配置,可以对同一套代码分别编译成H5应用和小程序,减少了同时维护多端的成本。

mpvue指北

笔者之前头比较铁,在原生微信小程序上浪费了不少精力。在放弃了直接开发小程序,转投mpvue之后,开发手感有了极大的改善。mpvue的入门请参考官方文档,以下分享一些mpvue开发过程中的最佳实践。

Vue:

通过webpack.DefinePlugin配置环境变量,在H5和小程序中走不同分支,可以处理小程序和H5之间的各种差异;

不支持过滤器filters,什么都得用computed来解决;

所有在data/props/computed中的数据都会影响性能,甚至导致页面卡顿。虽然有些不爽,在methods中用到Vuex的数据,可以直接从this.$store.state中读取,而不是通过mapState写到computed里;

微信小程序API,H5需要自己实现。如wx.getStorage就得用localStorage实现一遍;

路由:

进入和离开页面,H5使用beforeRouteEnter和beforeRouteLeave,小程序使用onShow和onHide;

由于路由配置问题,mounted在H5中可能会触发两次,这是个经典问题。然而小程序中不会出现;

小程序可以通过配置实现底导航,但底导航对应的页面跳转必须使用switchTab。H5需要自己实现底导航的样式和逻辑,但可以直接通过路由跳转;

网络:

http请求,小程序需要自己模拟cookie;

如果使用socket.io,小程序上推荐socket.io.xcx;

HTML:

不支持v-html,不支持在 template 内使用 methods 中的函数;

HTML元素尽量只使用<div>,其他诸如<table>在小程序里并不兼容,会导致H5和小程序产生差异;

由于编译完的元素都是<view>和<div>,因此大部分的CSS元素选择器会失效,所有样式最好都使用class选择器;

微信小程序的input本身就有各种奇怪的bug,即使原生开发小程序,也尽量别使用各种高级功能;

同样由于小程序未知的bug,直接使用v-model可能会在某些手机上出现输入框莫明被清空的现象,而H5不会。这时可以用v-model.lazy;

小程序原生组件,H5需要自己实现一遍,比如用<select>实现<picker>;

转载请注明: 访得 » 微信小程序和Vue哪个更好

 
最新文章
相关阅读