微信小程序框架 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 是不能办到的!

下面是一个错误示范

// 错误示范!
<view wx:for="{{list}}">
   <card name={{item.name}} description={{item.description}}></card>
</view>

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

<view>
  <card1 name={{name1}} description={{description1}}></card>
  <card2 name={{name2}} description={{description2}}></card>
</view>

显然影响到正常开发了 🙂

这点上小程序原生完胜

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

组件化开发

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

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

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

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

总结

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    X先生_未知数的X阅读 15,967评论 3 119
  • 转载链接 注:本文转载知乎上的回答 作者:初雪 链接:https://www.zhihu.com/question...
    pengshuangta阅读 28,466评论 9 295
  • 1. 他人定律。你的价值高低不取决于你,取决于他人的需求。也就是说,你的价值不在于你有多好,而在于他人的痛点与你所...
    芦苇箐箐阅读 4,162评论 0 2
  • 0,收入700元
    郑大胆31阅读 147评论 0 0
  • 【随记22】我一直认为金钱是有属性之分的,我常把被动收入称为:希望之钱,把劳动收入称为:痛苦之钱。并且衡量金钱一定...
    A老拙汉LCG阅读 1,148评论 0 0