什么是ThinkSNS+嗯,这不是广告。..2009年,北京团队研发ThinkSNS,涉足社交开源行业。2009年,北京团队研发ThinkSNS,涉足社交开源行业。多年来,我们积累了许多客户。2014年到2016年,基于TP的ThinkSNS维护开发了两年,慢慢引入了新的开发理念。最后,在2016年下半年,我们决定重写程序,把之前的每一行代码都扔掉。在框架方面,开发者一致选择了Laravel,并且给手机取了一个很像手机厂商名字的名字——ThinkSNSPlus对,就是Plus,就是符号+,因为我们想更专注于移动端,这就是ThinkSNS+。(程序员的文案,怎么莫名其妙的广告感。。。)如何用Laravel不断升级一开始我没想过框架升级的问题,后来我想到了一个问题,最后会不会像之前的版本一样?框架难升级?所以我们决定每周合并laravel/laravel的master分支。为了表示对TaylorOtwell和Laravel贡献者的尊重,合并时保留了每个提交。开源协议由于Laravel本身是一个MIT协议,基于Laravel开发,我们也希望ThinkSNS+能够为开源社区做贡献,所以代码没有使用私有协议,而是选择了Apache-2.0协议进行开源。前端工作流是一个艰难的选择。我们希望能够适配内置的Laravel-Mix,希望构建更适合的应用场景。最后,我们选择放弃Laravel-Mix,自己做前端搭建,又衍生出一个新问题,希望能够和mix辅助功能无缝配合,阅读源码后发现,问题太简单了,一个mix-manifest.json的问题,但这东西一波三折。一开始我们选择在webpack.config.babel.js中制作生成功能,配合第三方包实现功能。但是如果扩展包访问也被使用呢?最后开发前端包webpack-laravel-mix-manifest来生成这个文件。扩展设计的首选,目前有两种扩展设计,分别是plus-component和plus-plugin,其实都是通过Composer中间插件实现的。composer插件zhiyicx/plus-install-pluginplus-component的设计其实只是为了扩展包快速接入路由模板数据模型的基础开发。也是中间插件1.0版本唯一实现的扩展方式,已经存在半年了,可以快速编写路由、控制器和数据模型。目前我们团队的应用扩展就是这样开发实现的。并打包phpartisan组件命令安装。plus-plugin是composer插件1.1版本中添加的一个非常年轻的类型。这种扩展方法的原理很简单。它实际上是Laravel的ServiceProvider。熟悉Laravel开发的都知道,这个服务门面叫做“Laravel扩展”,但是安装起来不太方便,需要先composerrequirevendor/name,然后在app.php的providers字段配置,然后运行生成配置文件的命令等。考虑到ThinkSNS+针对的是站长、创业者、企业集团等用户,让他们改代码?杀了他们更好。于是,一个想法产生了,如何将这一步自动化?让用户只需要composerrequirevendor/name就可以完成?而且,对于广播系统的使用,例如,需要这样的东西以促进发展和扩展。于是想办法在composerrequirestep中完成这一步,从而开发出这种模式。这种方式不能直接使用Laravelextensions,因为这样做的思路是把配置交给后台配置。接口和SPA接口一开始没有充分考虑RESTful,所以可以看到URL命名很像RESTful规范,但实际数据不是,后面会逐渐规范。这里提到了API接口,意味着一回事。我们已经放弃了传统的网页。ThinkSNS+的核心是用户中心,所有功能都是通过扩展实现的。目前后台和移动端都是采用SPA调用接口的形式开发的。开源代码仓库GitHub:https://github.com/zhiyicx/th...(点star每天关注发展动态。)开源并不容易。为了争取开源,我们团队做了很多努力。将基于Laravel的作品展示在大家面前,接下来专栏会继续分享ThinkSNS+开发过程的技术细节。
