我和 EasyWeChat 那些事儿

file

前天弄了这个订阅号,到写这篇文章的时候有400多个朋友关注了,选择在这时候才写第一篇文章也是想听听大家想我聊点什么,看到有不少朋友想听听我是如何开发 EasyWeChat 这个项目的,那我们就聊聊我的开源历程吧。

它最开始应该是 14 年,不过后面我好像是 2015 年删除过项目清理过历史,所以正式重新来开发它应该是在 15 年 6 月,它的最初版本并没有叫 EasyWeChat,也没有其它什么名称,就是简单以项目名称存在,最开始的项目结构也超简单,有兴趣的朋友可以看看 1.0 版本的代码。

为什么要弄这个项目,原因其实特别简单,当时自己朋友有一个微信应用的接入需求,找到我帮忙,在看完微信文档后的第一个动作必然是上 GitHub 找一下有没有人封装更好用一些的 SDK, 毕竟你也知道官方那个用完绝对不想再碰第二次。当时找到好几个,都试用了一下,但是都发现了很难接受的问题(我自己也觉得是毛病多,难伺候),不是方法名起得看不懂,就是一看源码就手痒痒的要去改,但是必须控制自已,因为一旦改起来可能就无法收拾了,项目也别想做了。

纠结了一天后,还是决定自己写,先把满足项目需求的部分写出来,把项目完成后再完善其它部分。

最开始我的 GitHub ID 也不叫 overtrue,那时候自己对开源的玩法并不熟悉,就是各种折腾嘛,然后参考别人的开源项目,在那个项目完成后我其实就半年左右没做开源项目的开发了,因为接触到了 Laravel,使用它给公司几个项目做了重构之后就深深的爱上它了,然后就研究它去了。

后来应群里大家的要求,让我帮忙录一些 Laravel 的视频,于是初生牛犊不怕虎,录就录呗,就录了 4 节视频放到了优酷上,后来逐渐有了一些人气,觉得有必要做点开源的事情了。

在 15 年初的时候就把 GitHub 改名为 overtrue 了,随后再次由于项目需要,EasyWeChat 的 1.0 版本就出来了。刚开始尝试推荐给朋友们使用反响还不错,然后就持续在改进,这其中其实遇到很多问题的,毕竟那时候的 GitHub 也不是像现在这样完善。很多东西需要自己去发现,比如 Travis-CI、Scrutinizer-CI 这些东西都并没有一个地方可以直观的知道,基本都是看别人的开源项目用了,才了解到它们。

刚开始连什么是 Semver(语义化版本,http://semver.org/) 都不知道,发版也不知道应该怎么样正确的操作。我记得干过一件蠢事儿:在修复很多 bug 的时候,发了太多的小版本,小版本号都到了 39 这样了,于是就想,要不就把前面的那些版本删除吧,于是就引起了别人项目安装不上的尴尬场景出现,那时候连 Composer 都不熟悉,没意识到这些问题。

其实任何东西开始都是从模仿开始的,这也是后来版本设计改进的思路来源:仿 Laravel。

从 1.0 到 2.0 的变更,我对 EasyWeChat 的改进,主要做了几个大的变化:1、将各功能模块独立放到各自的文件夹中,2、重新设计了 API 类、3、错误处理改为异常方式、4、完善文档(那时候应该还是用的 GitHub wiki)

后来微信的大规模接入需求,也让我的项目在广大开发者之间流行起来,我还记得刚到 1000 star 时我是那么的激动。

这是一个新的起点,在经历了一年多的学习与积累后,跳票一年的 3.0 版本终于出来了,主要改进有:1、建立官方网站,主要用于文档展示,2、重新编写了全部代码(至少有 90% 的重写),将各模块同步拆分到 EasyWeChat 组织下,以便于有特别单一小需求或者想集成部分功能的朋友单独使用,3、容器化设计,将各模块以服务形式注册到容器中懒加载的形式来组织、4、改进部分命名以及简化配置。

目前它的状态是 4.0 开发中,4.0 的变更将也是巨大的,当然这里不只是指代码,一个项目要真正受欢迎,它是需要生态的,代码只是一部分。所以 4.0 的变化除了代码结构变更外,更多的将会是生态方面的变化,重点是文档与教程。我将会录制一系列视频来教新手如何更方便的使用它。

为啥要做 4.0 其实主要的原因之一是微信丰富的生态带来的需求增加,小程序,企业号这些都是 3.0 所不具备的(起码不是很好的支持),所以在 4.0 我们将各种微信提供的服务更加清晰的组织,以及对 3.0 发布以来众多 600 多个 issue 的需求提取所做的一些变更。期望它会以一个大家期待的面目登场。

其实整个过程走来,回头一看全是成长的印记,现在翻看以前写的代码,真的是没什么质量,好在每一次改进,都是一次进步,现在也不完美,但是我爱这份工作。

这两年,造了不少轮子,我都是坚持维护改进它们,做开源最难的事情不是写不好代码,而是分享精神与持续的维护。你也许发现了,我的项目一律 MIT 协议,你想怎么改就怎么改,毕竟我只是分享,没想要索取。关于开源我做过几次分享,做开源是一个很有乐趣的工作,虽然经常会有一些不愉快的事情让你想放弃,但是这样的事情毕竟是少数,乐观的你会发现收获才是最大的。

还需要走的路很长,我还得进步,要不一起?

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 Summer 于 6年前 加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 44
Destiny

感谢超哥一路陪伴!

6年前 评论

真棒!以你为榜样!:thumbsup:

6年前 评论

大赞:thumbsup:

6年前 评论

一起以为超哥从一开始就牛逼。

6年前 评论

@maxincai :laughing: ...

6年前 评论

向超哥学习~

6年前 评论

点赞!!@overtrue

6年前 评论

@overtrue 可惜退群了,沟通没以前那么顺畅了,还是点赞。

6年前 评论

@overtrue Laravel开发群2 Group ID:348339842

6年前 评论

@qufo 我早就退那个群了哈哈

6年前 评论

@qufo 不喜欢他们一天瞎扯

6年前 评论
Bin

第一次感觉离大神如此的近。

6年前 评论

看见大神为之一惊。

6年前 评论
幽弥狂

超哥是去深圳找jelly Bool去了???

6年前 评论

@xhh110 没,只是换个地方生活

6年前 评论

伤不起的处女座程序猿,哈哈哈

6年前 评论

一物一码没有做吧!

6年前 评论

@JohnLin 什么东西?

6年前 评论

@JohnLin 和我的 SDK 有啥关系呢?本来这就属于微信支付的下单模块的内容。

6年前 评论

学习使用laravel一年多,学习的路上jelly bool给了很大的帮助,工作的路上安正超easywechat带来的便利简直无以言表:thumbsup: :thumbsup: :thumbsup:

6年前 评论

@overtrue 新版好像在lumen下有问题,update后提示Class 'Illuminate\Foundation\Support\Providers\RouteServiceProvider' not found,这个是laravel下的lumen没有这个服务

6年前 评论

@kevin 哪个版本?

6年前 评论
hainuo

赞。。

6年前 评论

@overtrue 是laravel-wechat 3.1.8 现在更新到3.1.10好了

6年前 评论

期待4.0啊,我们去年底做微信公众号的时候,再三考虑选了企业号,结果这个包不支持,搞得我去改这个包的源码,4.0原生支持那是大赞啊

6年前 评论

文档打开不了 ,大佬

6年前 评论

:+1:
离大神如此之近,却又如此的远,勉励自己加油!

6年前 评论

@Torrent 别,互相学习

6年前 评论

我想知道的是优酷视频在哪?,搜索Laravel无果。

6年前 评论

if (empty($_SESSION['wechat_user'])) {
$_SESSION['target_url'] = 'user/profile';
return $oauth->redirect();
}
这里跳转的时候在微信上会直接显示有代码,这是程序在设计的时候留着的还是什么原因?谢谢

6年前 评论

@ceroot 认真读文档再写代码就没这事儿了,我在文档讲了,redirect 返回的是一个 response 对象,请根据自己的框架情况来决定如何使用,我一猜就知道你应该是用了某框架,尝试将 return 那行改成:

$oauth->redirect()->send(); exit;
6年前 评论
Destiny

研究完 WeChat 的各个版本,再看到这篇文章有很感慨呀!:grimacing: wechat 的成长经历。

5年前 评论

有问题请教各位大神,让我的理解,EasyWeChat 应该跟 微擎 是一种类型的东西吧,都是解决微信上二次开发的事,公司让做微信二次开发,正在选择哪个 SDK 更好,求大神指点。

3年前 评论

easywechat 6 版本的文档怎么回事,是不是有问题啊,支付怎么传都不对,翻了源码,各种组合都不行,v3 版本 api

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!