WePY:在质疑中前进 | 文末福利

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 的过程有什么值得分享的经历吗?

Gcaufy: WePY 是一个自外而内的开源项目。2016 年 11 月份在内部开源后并没有受到太多关注,于是放在 GitHub 个人账号开源,GitHub 开源后外界关注度越来越高之后,内部才开始被重新关注,然后少数内部团队才开始投入使用,也就是我说的自外而内的开源。大概是在 17 年初腾讯开源的同事和我以及当时我在的团队沟通,想将项目回迁至 Tencent 域下,到 2017 年年底走完流程正式迁入Tencent 域下,至此才完成了所谓的「转正」。

直面社区质疑

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 月 6 日 20:00 截止
  • 参与方式:在本文评论区留言即可
  • 奖品设置:我们将从评论者中随机抽取 3 名
  • 注意事项:门票可以转让,但不可退换现金

专属优惠

掘金开发者大会 ∙ 微信小程序专场现已开始正式报名,现在正在 8 折优惠中。掘金为读者带来了参与活动的专属福利:扫码进入小程序,输入专属优惠码:「wepy」,立减 99 元(限量 10 名)!活动中,不仅有干货满满的技术盛宴,还包众多福利奖品和价值 299 元的自助午餐哦!

活动信息:

  • 官网:conf.juejin.im
  • 时间:2018年9月16日(周日)
  • 地点:北京富力万丽酒店
  • 人数:600 名开发者

购票链接

票务咨询

  • 联系人:王先生
  • 电子邮箱:ticket@xitu.io
  • 电话 / 微信:18561606818

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

表单必填标星_怎么用JS做form表单验证,要详细代码,求救!(带星号的是必填项)...

匿名用户1级2014-06-17 回答举个例子吧&#xff1a;<input type”text” id”telephone” ><input type“button” οnclick“functioncheck1”value“检测”>如果要检测它是否符合标准&#xff0c;那我就会在页面中导入js包然后写一个<script> f…

MySQL/MariaDB表表达式(3):视图

视图是表表达式的一种&#xff0c;所以它也是虚拟表。对视图操作的时候会通过语句动态的从表中临时获取数据。 1.创建、修改视图 CREATE [OR REPLACE][ALGORITHM {UNDEFINED | MERGE | TEMPTABLE}]VIEW [IF NOT EXISTS] view_name [(column_list)]AS select_statement[WITH [C…

使用Arquillian(包括JPA,EJB,Bean验证和CDI)测试Java EE 6

很长时间以来&#xff0c;我听到很多人对Arquillian说好话 。 虽然我一直在阅读有关其用法的文章&#xff0c;但实际上我无法在一篇文章中找到涵盖我认为重要的某些方面的文章。 当然&#xff0c;我看起来还不够努力。 我要讲的要点是&#xff1a; 使用JPA。 我只是在这里使用…

xpath和css selector

参考&#xff1a;https://www.cnblogs.com/captainmeng/p/7852044.html css selector解释&#xff1a;https://www.cnblogs.com/feng0815/p/8367672.html 转载于:https://www.cnblogs.com/Mezhou/p/9671284.html

android任务书技术要求,毕业设计任务书-Android应用程序开发

* *大学信息工程学院毕业设计(论文)任务书指导教师&#xff1a;*** 职称&#xff1a;讲师学生人数&#xff1a; 3学生姓名(学号、专业)&#xff1a;刘**(200927030111 09信息管理)***(200927030120 09信息管理)李**(200927030107 09信息管理)毕业设计(论文)题目(来源、类型)And…

Event Loop 其实也就这点事

前段时间在网上陆续看了很多关于 Event loop 的文章&#xff0c;看完也就混个眼熟&#xff0c;可能内心深处对这种偏原理的知识有一些抵触心情&#xff0c;看完后也都没有去深入理解。最近在看 Vue 的源码&#xff0c;在读到关于 nextTick 的实现时&#xff0c;总有一种似曾相识…

mock模拟接口测试 vue_在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟...

在 https://www.jb51.net/article/151520.htm这篇文章中&#xff0c;我们介绍了在 Angular-CLI 中引入 simple-mock 的方法。本文以 Vue-CLI 为例介绍引入 simple-mock 实现前端开发数据模拟的步骤。本质上这里介绍的是在 webpack-dev-server 中配置 simple-mock 实现 API Mock…

Kudu系列: Kudu主键选择策略

每个Kudu 表必须设置Pimary Key(unique), 另外Kudu表不能设置secondary index, 经过实际性能测试, 本文给出了选择Kudu主键的几个策略, 测试结果纠正了我之前的习惯认知. 简单介绍测试场景: 表中有一个unqiue字段Id, 另外还有一个日期维度字段histdate, 有三种设置kudu PK的方法…

OSS网页上传和断点续传(OSS配置篇)

OSS网页上传和断点续传主要根据BrowserJS-SDK和相关文档整理而得&#xff0c;快速构建OSS上传应用 一、Bucket设置 浏览器中直接访问OSS需要开通Bucket的CORS设置 将allowed origins设置成 *将allowed methods设置成 PUT, GET, POST, DELETE, HEAD将allowed headers设置成 *将e…

html vbs 输入框,HTML_vbs实现的下拉框对应键入值,vbs实现的下拉框对应键入值 - phpStudy...

vbs实现的下拉框对应键入值vbs实现的下拉框对应键入值 选择自 gu1dai 的 Blog关键字 vbs实现的下拉框对应键入值select centerbody{text-align:left;font:12px #000080 ;}#main{float:left;width:750px;border:#dddddd 1px solid;margin:5px 10px;padding:10px 5px;}#maintable…

为您的下一个基于Spring的应用程序考虑使用spring-boot的原因!

Spring-boot提供了一种创建基于Spring的应用程序的快速方法。 对于下一个项目&#xff0c;有一些非常令人信服的理由考虑使用Spring-boot&#xff1a; 原因1&#xff1a;使用spring-boot启动程序项目进行更简单的依赖性管理。 考虑使用Spring引导提供数据访问抽象的h2数据库实…

小程序各种姿势实现登录

喜闻乐见的背景时间--由于最近接触小程序比较多&#xff0c;又刚好经历过小程序的自动登录时代以及现在的点击登录时代。结合自己的实践以及观察到其他小程序的做法&#xff0c;就有了这篇小分享~ 本文可能涉及的内容-- 更新 首先感谢shaonialife同学的精彩评论~ 可能由于用词…

c#如何使用反射去创建一个委托_C# 反射的委托创建器

.Net 的反射是个很好很强大的东西&#xff0c;不过它的效率却实在是不给力。已经有很多人针对这个问题讨论过了&#xff0c;包括各种各样的 DynamicMethod 和各种各样的效率测试&#xff0c;不过总的来说解决方案就是利用 Expression Tree、Delegate.CreateDelegate 或者 Emit …

BBS-登录

from django.db import models# Create your models here. from django.contrib.auth.models import AbstractUser#用户 class UserInfo(AbstractUser):nidmodels.AutoField(primary_keyTrue)telephonemodels.CharField(max_length32)avatarmodels.FileField(upload_toavatar/,…

html 输入框从左上角,在输入框的左上角,使文本开始_input_开发99编程知识库

網頁上有幾個輸入框&#xff0c;我希望文本從左上角開始。 目前&#xff0c;使用 below&#xff0c;它的左對齊&#xff0c;但在框的中間。 我嘗試了垂直對齊和其他的東西&#xff0c;但沒有。 我不想使用 padding&#xff0c;因為文本需要包圍&#xff0c;它只能使它彈出框頂部…

PHP定时任务Crontab结合CLI模式详解

从版本 4.3.0 开始&#xff0c;PHP 提供了一种新类型的 CLI SAPI&#xff08;Server Application Programming Interface&#xff0c;服务端应用编程端口&#xff09;支持&#xff0c;名为 CLI&#xff0c;意为 Command Line Interface&#xff0c;即命令行接口。 STDIN 标准输…

使用Mockito和BeanPostProcessors在Spring注入测试双打

我非常确定&#xff0c;如果您曾经使用过Spring并且熟悉单元测试&#xff0c;那么您会遇到与您不想修改的Spring应用程序上下文中注入模拟/间谍&#xff08;测试双打&#xff09;有关的问题。 本文介绍了一种使用Spring组件解决此问题的方法。 项目结构 让我们从项目结构开始&…

当面试官问你如何进行性能优化时,你该这么回答(一)

背景 在开发好页面后&#xff0c;如何让页面更快更好的运行&#xff0c;是区分一个程序猿技术水平和视野的一个重要指标。所以面试时&#xff0c;面试官总会问你一个问题&#xff0c;如何进行性能优化呢&#xff1f; 如果你这时是头脑一片空白&#xff0c;或是像之前的我一样…

二叉搜索时与双向链表python_JZ26-二叉搜索树与双向链表

1、中序遍历&#xff0c;当前结点&#xff0c;以及左侧排好序的双向链表&#xff0c;再调整当前结点的指针指向最前结点/* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {} };*/ class Solution …

dva使用心得

组件在异步数据到来前已经完成初始化&#xff0c;是导致constructor中无法取到所需数据的原因。所以最直接的方法&#xff0c;就是修改组件创建的时间 //把原来的组件内部控制显示/* <ComponentName show{modelName.show}/> *///更改为状态直接控制组件是否存在{ modelN…