grace 和 wepy 都是辅助小程序开发的开源库, 本文对两者做个对比
注: 本文是作者本人的一些拙见, 纯粹的技术讨论, 不想引起技术信仰之争, 欢迎积极正向的讨论及建议
如果你还不了解 Grace, 请参考: 微信小程序开发神器 - Grace
Github: github.com/wendux/grac
自小程序发布后, 现在最著名的小程序开发框架就是 wepy, 它借助一系列工具, 通过预编译的手段实现了和 vue 接近的开发风格, 可以认为 wepy 更就是小程序的 vue(但还有一些不同, 如布局模板), 首先, 必须承认 wepy 是一个好的框架, 如果你是 Vue 开发者, 如果要开发一些大的小程序项目, wepy 应该是你的不二之选但是我们换个角度, 考虑下面两个问题:
小程序开发者来源
来自前端开发者
目前来看, 如果是一名前端, 那么很可能用过 Angular/React/Vue 中的一个, 首先, 如果你没有用过 Vue, 那么要使用 wepy 的学习成本接近于学习 Vue 的成本, 这是第一点, 学习成本会大一些其次对于对 Angular/React 有强烈信仰的开发者来说, 他们可能会问一声, 小程序就小程序, 为什么非得弄成 Vue. 在 web 开发时正宗的 Vue 都不用, 会为了开发小程序再去学习一下 wepy?
非前端开发者
在小程序发布后, 想必大多数程序员都想尝尝, 而并非只是前端程序员, 对于这部分开发者来说, 大都会采用小程序原生开发, 他们基本不肯能再去学习一个像 Vue 同等规模的前端框架
总结一下, 站在开发者的角度, wepy 采用了类 Vue 的开发风格, 即是优势, 也是劣势优势是可以让数量可观的 Vue 开发者轻松过渡, 但缺点是提高了其它开发者的使用门槛所以, 一个轻巧易上手的帮助工具就很有必要, 而 grace 就是这样的一个工具
小程序定位
小程序的定位本身就是触手可得, 用完即走, 解决想干个啥都得下个 APP 的历史现象有了小程序后, 不用装太多 APP, 只有在第一次用的时候花费少量流量下载即可可以看到, 小程序第一次使用时还是要下载, 为了减少下载等待时间, 节省用户流量, 小程序对程序包的大小设置了上线 4M, 这也为什么小程序中小的含义 微信的这种限制决定了小程序一般只是用于实现核心功能, 不会用作复杂功能这也就决定了, 在大多数小程序开发时, 我们需要的并不是什么强拽炫酷吊炸天的大框架, 而是一些简单的帮助工具, 而 grace 的定位就是一个精巧的帮助工具在笔者了解的很多小程序, 甚至大都是用原生开发的
下面总结一下主要区别:
定位不同; grace 的定位是一个精巧易用的小程序开发辅助库, 而 wepy 是一个功能全面的类 vue 框架.
grace 使用简单易上手, wepy 对不了解 Vue 的开发者有不小的学习成本, 并且开发环境依赖多, 配置比较复杂
grace 更贴近于原生, wepy 更贴近于 web.
下面我们看看 Grace 都有哪些功能:
Grace 可以干什么
我们看看 grace 的特点:
轻量小巧上手简单
支持和 Vue 一样优雅的数据响应式
支持数据自动更新更改缓存批量更新
强大的网络功能
支持全局事件总线
支持跨页面传值
支持 mixins
主打是精巧, 可以看到目前核心功能主要涉及三个方面: 数据网络事件
数据
小程序是数据与页面渲染分离的, 所以在开发中会有大量的 setData 操作, grace 为了简化这大量的显式数据更新, 实现了和 Vue 一致的数据响应式 - 可以通过赋值直接更新数据与此同时, 为了避免频繁 setData 带来的性能消耗, grace 不仅支持手动批量刷新而且 grace 可以自动跟踪页面前后台切换, 如果页面切换到后台, 则不会再去调用 setData , 而是将变动先缓存, 等到页面切换到前台, 才会统一刷新, 有效避免不必要的性能消耗
网络
大多数小程序都需会和后台通过 http 进行通信, 为此, grace 提供了强大灵活良好的 Promise API, 同时支持全局请求配置请求 / 响应拦截器等更重要的是, Promise 风格的 API 可以支持 ES7 的 async/await
事件
小程序原生在跨页面通信方面比较弱, 为此, grace 提供了一个全局事件总线, 你可以在任何页面通过注册 / 触发事件来进行通信 不仅如此, grace 还在事件总线的基础上, 实现了更友好的页面数据回传的回调
除了这些, grace 还支持 mixins, 提供了一种扩展新功能的方式, 它可以在全局给页面添加一些功能, 开发者可以自己发挥
Grace 今后的发展
笔者觉得小程序的量级一般都不会太大, 为了避免过度设计, grace 会一直保持精巧而易用的原则, 不会添加太多使用频率比较小的功能如果大家有什么好建议, 或者希望 grace 添加什么新功能, 都可以在 github 提 issue.
最后, 贴出 Github 地址, 如果觉得对你有用, 欢迎 star, 如果有什么建议, 欢迎 issue
Grace 项目地址: github.com/wendux/grac
来源: https://juejin.im/post/5aa0e45af265da23a404635a