微信小程序框架 wepy 与小程序原生开发对比

最近开发微信小程序的时候,想尝试转移到 Tencent/wepy 这个腾讯官方的小程序框架中。官方介绍它的优势在于:

  1. 支持 Promise
  2. 开发语法接近于 Vue.js(组件化开发)
  3. 支持使用第三方 npm 资源

看起来非常诱人!抱着试一试的心态,只先生(就是我,我的ID是只准周末喝饮料),作为一个入门小程序一个学期左右的小白,开始了 wepy 框架的初体验。由于我之前的小程序逻辑并不复杂,所以迁移看起来好像并不是特别困难的事情。

但是,真正迁移过去之后,我意识到了很多问题,这让我对 wepy 有了一个更加客观的认识。下面我从 wepy 官方主打的几个特性来分析 wepy 和小程序原生框架

Promise

没得吹,Promise 的确很好用。

比如要发起 HTTP 请求,小程序原生的写法可能是

wx.request({
  url: url,
  method: 'GET',
  data: {},
  header: {
    'Accept': 'application/json'
  },
  success: function (res) {
    // ...
  }
});

但是通常一个项目中会有很多 HTTP 请求,这样大段的代码在逻辑上并不是很清晰。我们自然是希望可以独立成一个组件(比如说叫 api),然后所有的请求都通过这个组件来实现。可是由于不支持 Promise,小程序请求内容无法用 .then 进行传递,这样就不能抽象成函数来独立返回了。

而在 wepy 中,这个问题得到了很好的解决。比如我独立出来的一个组件 wxRequest

// wxRequest.js
import wepy from 'wepy'
const wxRequest = async (params = {}, url) => {
  let data = params.query || {}
  let res = await wepy.request({
    url: url,
    method: params.method || 'GET',
    data: data,
    header: {
      'Content-Type': 'application/json'
    }
  })
  return res
}
module.exports = {
  wxRequest
}

这里用到了 await 异步操作,非常优雅的抽象出一个请求的函数。当我们要发起 HTTP 请求的时候,就直接很简单一句话就 OK 了

const getRecommendationList = (params) => wxRequest(params, apiRoot + 'recommendation')

网络请求对比结果,因为目前主流前端框架都支持这个功能,所以小程序不支持只能得两星!

  • wepy ⭐⭐⭐⭐⭐
  • 小程序原生 ⭐⭐

开发语法

说实话,我觉得小程序开发语法已经无限接近于 Vue.js 了,只不过没有显式的写到一个文件里面而已...并且开法语法这个问题见仁见智,我觉得并不是特别重要。小程序原生在上手难度上还是很友好的。

但是,在实际操作的过程中,我发现了 wepy 一个很致命的缺点!那就是自定义组件不可以动态绑定属性!这意味着,如果你自己写了一个组件,想要用一个 wx-for 来循环渲染生成的的话,wepy 是不能办到的!

下面是一个错误示范

// 错误示范!

   

更坑爹的是,自定义组件在循环内共享数据!wepy 官方的解决方案是,用不同的组件。也就是说,上面的代码正确的写法是


  
  

显然影响到正常开发了

这点上小程序原生完胜

  • wepy ⭐
  • 小程序原生 ⭐⭐⭐⭐⭐

组件化开发

当然是很爽的!小程序因为在上传文件大小有限制,所以那么一大堆的 node_modules 肯定是不能在移动端进行操作的。但是 wepy 不知道怎么优化就变得可以这样操作了。

对于大部分开发者来说,这意味着小程序开发和前端开发又拉近了不少距离!那些喜欢的插件像是 Redux,通通都可以用!

这点不用多说,我觉得这个是 wepy 的核心竞争力。

  • wepy ⭐⭐⭐⭐⭐
  • 小程序原生 ⭐

总结

总的来说,wepy 的确有很多改进的地方。并且熟悉的 npm install 等等指令都无限拉近了小程序和 web 开发之间的距离。虽然有一些问题,但是腾讯肯定会好好的维护这个框架的!

那么我的建议是,如果你的项目迫切的需要状态管理机制(需要 Redux),请用 wepy。其他的朋友,就直接用小程序原生吧!所以最后,我把我们的项目又切换回到小程序原生了。

你可能感兴趣的:(微信小程序框架 wepy 与小程序原生开发对比)