前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WePY:在质疑中前进

WePY:在质疑中前进

作者头像
腾讯开源
发布2018-10-12 16:28:21
8920
发布2018-10-12 16:28:21
举报

WePY (发音: /'wepi/)是一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序。框架的细节优化,Promise,Async Functions的引入都是为了能让开发小程序项目变得更加简单,高效。同时WePY也是一款成长中的框架,大量吸收借鉴了一些优化前端工具以及框架的设计理念和思想。 WePY自开源以来,受到小程序开发者的广泛关注,目前该项目的Star数已近1.4w,贡献者人数高达100人,官方记录的使用WePY框架开发的小程序有70多个。可以说,只要有小程序开发者的圈子,就有WePY。

这样一个备受关注的腾讯开源项目背后其实只有一个人。以下将通过Q&A的形式,带大家了解WePY和WePY的作者:Gcaufy。

WePY 作者

Q: 先介绍一下自己吧

Gcaufy: 我2011 年大学毕业之后,阴错阳差的走上了 Web 开发的道路。15 年之前算是自由职业 SOHO 工作,主要给一些国外的大公司做外包系统,更多的是做后端开发。15 年之后以前端工程师的身份加入腾讯,开始负责腾讯手机充值的相关业务。

2016 年参加小程序内测,开发手机充值小程序版本。小程序公测一个月时,我开源了小程序上的组件化开发框架 WePY。18 年年初,我来到了微信支付。在微信支付,我主要负责 toB 端的业务,给微信支付的商家提供服务。

Q: 可以分享下当初学习编程的经历吗?

Gcaufy: 我学习编程的经历比较久,高一的时候就开始自学 C 语言了,然后又学了单片机汇编,高中就在文曲星上写内核代码。上大学之后研究的东西比较杂乱,喜欢折腾一些外挂工具,搞点简单的软件破解之类的,当时的梦想是以后可以从事逆向工程等比较底层的工作。

WePY 的开源历程

Q: 最初开发 WePY 的原因是什么呢?

Gcaufy: 早期微信小程序是不支持组件化开发、不支持引用第三方 NPM 资源的,为了解决开发的痛点,让我自己在做业务开发时的体验更友好,就去做了一个框架,实现了类 Vue 的开发体验。

Q: 为什么会选择将 WePY 开源呢?

Gcaufy: 在开发小程序框架的过程中,感觉可以抽出来给到所有小程序开发者去使用,所以就决定放在 GitHub 上开源,希望这套方案能够解决在小程序开发中遇到的一些实际问题。

另外一个原因是自己本身爱好开源,从 04 年写的第一份代码开始,我都会以各种形式把源代码公开。开源既可以帮助想学习的人,又能强迫自己去优化代码,而且从别人的反馈和意见中,你能知道自己哪些地方还可以做得更好。

直面社区质疑

Q: 我看到 WePY 介绍是类 Vue 风格,是否可以具体讲一下 WePY 在哪些方面借鉴了 Vue 的设计?哪些地方又是与 Vue 不同的?

Gcaufy: WePY 在语法上借鉴了 Vue 的语法,原理则是完全不同的:比如 WePY 使用的是 Angular 的脏检查设计,而不是使用的 Vue 的 getter, setter 等,最初的想法就是利用脏检查去绕过性能不是很好的setData。当然从现在的反馈来看,有些当时的设计还是不是很恰当的。

Q: 如何看待社区里开发者提出的 WePY 代码质量问题?

Gcaufy: 对于这个问题我是认同的,我在对外的分享里多次提到过 WePY 存在很多问题。项目是 2016 年 10 月份开始的,大概就花了 4 个周末的时间,然后发布到 GitHub 上。项目有单元测试但是只覆盖到核心库部分,编译那一部分是完全没有测试的,后面没有继续把这里补齐就是因为代码写得几乎不可被测试,改造的成本无疑于重构代码,因此这里的质量可想而知,所以我也经常说当前项目的 Star 数与本身的质量严重不对等。

项目最初的想法就是解决小程序 NPM 资源引用,以及组件化开发的问题。在早期确实能提供不错的开发效率。大概在 17 年 11 月份,官方自己推出了组件化方案,那这个时候 WePY 带来的效率提升反而没那么明显了,反到是 bug 都给暴露出来了。一直以来我都想重构代码,但到这个时候才意识到重构迫在眉睫,这也是为什么我要做 WePY 2.0 版本的原因。目前已经将一些 Demo 改造成 2.0 的,希望 2.0 是一个全新的,对得起开发者的版本。

Q: 最后想问一下 WePY 这个名字含义是什么?

Gcaufy: 一个项目最难的地方就是给它取一个响亮的名字。开始时是因为需要定义一个新的文件名后缀,在思考时第一个闪现在脑子里的就是 cpp,那我就想用 wpp,但是搜索发现 wpp 有好多结果,可能会不利于以后的 SEO,于是就改了一个字母 wpy。所以最后框架就叫 WePY 了,实际上并没有任何特殊含义,最重要的是 NPM 上这个名字还是没有被注册的。

WePY作者龚澄(常用ID: Gcaufy)会在掘金开发者大会· 微信小程序专场,分享 WePY 开发实践。

演讲内容:本次分享会介绍 WePY 的开发背景、设计思想以及编译原理,同时也会直面 WePY 现在存在的问题以及未来 WePY 的设计规划等等。 WePY 是一个从开源社区不断汲取养分,自我学习、不断成长的一个产物,也希望它能够反哺开源社区,给予更多的小程序开发者们开发便利。

文末彩蛋:留言赠票

· 参与时间:即日起至 9 月 14 日 18:00 截止

· 参与方式:在本文评论区留言即可

· 奖品设置:我们将从评论者中随机抽取 3 名

· 注意事项:门票可以转让,但不可退换现金

·      自行购票可扫描以下小程序码

- 腾讯工蜂 -

腾讯自研基于Git的企业级协作开发解决方案

扫描二维码,研发管理从此

高效、轻便、可靠

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯开源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档