ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1

什么是 ThinkSNS+
09 年,由北京的团队开发了 ThinkSNS 涉足社交开源行业。这么多年累计不少客户。2014-2016,两年都在维护和开发之前基于 TP 的 ThinkSNS , 慢慢的引入新开发概念。终于,在2016年下半年,我们决定重写这个程序,抛弃之前的每一行代码。框架上,开发人员一致性的选择了 Laravel ,并取了一个看起来像手机厂商给手机命名的名字----ThinkSNS Plus 没错就是 Plus 也就是符号 + 因为我们更希望侧重移动端,这就是 ThinkSNS+。

如何保持和 Laravel 的升级
起初没想过框架升级的问题,后来思考了一个问题,最后会不会像之前版本一样?框架难以升级?所以我们决定每周一对 laravel/laravel 的 master 分支进行合并,为了表示对 Taylor Otwell 以及 Laravel 贡献者的尊重,每一个 commit 在合并的时候都进行了保留。

开源协议
由于 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-plugin

plus-component
这个设计其实只是想拓展包可以快速的接入路由模板数据模型这些基础开发,也是中间插件 1.0 版本中唯一实现的拓展方式,存在了长达半年之久,可以快速的写路由、控制器、数据模型,目前我们团队出的应用拓展都是以此方式开发实现。
并封装了 php artisan component 命令安装。

plus-plugin
这是一个很年轻的 type 在 composer 插件 1.1 版本中增加的,这个拓展方式实现原理很简单,其实就是 Laravel 的 Service Provider ,熟悉 Laravel 开发都知道,这个服务门面被称之为 "Laravel 拓展" 但是安装并不方便,需要先 composer require vendor/name ,然后在 app.php 的 providers 字段中配置,然后运行命令生成配置文件等。

考虑到 ThinkSNS+ 面向的都是站长、创业者、企业集团等用户,让他们改代码?简直不如杀了他们。所以,萌生了一个想法,如何把这个步骤自动化?让用户只需要 composer require vendor/name 就完成呢?而且,对于例如广播系统的使用,很需要一个这样的东西来方便开发拓展。所以想办法把这个步骤,在 composer require 步骤完成,由此开发了这个模式。

Laravel 的拓展不能直接以这种方式使用哟,因为我们做这个的想法是把配置移交到后台配置。

接口和 SPA
接口,在初期没有完全考虑 REST ful 所以,你能会看到 URL 命名很像 REST ful 规范,实际数据却不是,后续逐步规范化。

这里提到了 API 接口,意味着一个事情,我们抛弃了传统网页,ThinkSNS+ 核心就是一个 用户中心,然后功能全部由拓展实现,目前后台、手机端 都是采用 SPA 调用接口的形式开发。

开源代码仓库:

GitHub:https://github.com/zhiyicx/thinksns-plus(点击star,每日关注开发动态。)

原文地址:https://blog.51cto.com/14231620/2409957

时间: 2024-10-18 02:58:29

ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1的相关文章

【社交系统ThinkSNS+研发日记三】基于 Laravel Route 的 ThinkSNS+ Component

[社交系统ThinkSNS+研发日记系列] 一.<ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1> 二.<基于 Laravel 开发 ThinkSNS+ 中前端的抉择(webpack/Vue)踩坑日记> 在前面,我介绍了拓展类型,分别有 plus-compnent 和 plus-plugin 两个,这里重点讲以下如何实现 plus-component 的. plus-component 是什么 就如同名字一样,plus 代表的是 Thin

基于 Laravel 开发 ThinkSNS+ 中前端的抉择(webpack/Vue)踩坑日记

在上一篇文章< ThinkSNS+基于Laravel master分支,从1到 0,再到0.1>,简单的介绍了 ThinkSNS+ ,这里分享在开发过程中,前端选择的心理活动. Laravel Mix的放弃 在 Laravel 中,前端工作流默认是由 laravel-mix 包驱动的,集成了 Vue.js.而作为核心开发之一,也负责前端这块的开发.其实,这是seven第一次写 Vue,之前都是用 React 做开发. 然后seven和另一个核心成员 Wayne 在楼道抽烟聊前端这事情,要不要用

PHP 基于laravel框架获取微博数据之一 模拟新浪微博登录

参考资料:http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/http://blog.csdn.net/fly_leopard/article/details/51148904http://www.tuicool.com/articles/uIJzYff http://blog.csdn.net/u010029983/article/details/46364113等 模拟新浪微博登录是抓取新浪数据的基础,网上的参考资料

基于Laravel+Swoole开发智能家居后端

基于Laravel+Swoole开发智能家居后端 在上一篇<Laravel如何优雅的使用Swoole>中我已经大概谈到了Laravel结合Swoole的用法. 今天,我参与的智能家居项目基本上已经结束了Web服务器及android端的开发(熬了个通宵突击把剩下的做了,好累), 趁热来聊聊基于Laravel+Swoole开发智能家居后端的关键技术点. 16进制ASCII码协议的解析 硬件我不谈,我只需要关心数据解析.如何基于Swoole如果在php中解析16进制的ascii码,这种文章还比较少呢

【转】基于laravel制作APP接口(API)

这篇文章主要介绍了基于laravel制作APP接口(API)的相关资料,需要的朋友可以参考下 前期准备 前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件奇妙的事情,就完完全全的陷入的程序的世界. 这不,最近又开始折腾APP了,话说现在开发一款APP真是容易,只用JavaScript和一点点HTML+css技术就可以完成.但是做APP的后台就不一样了.开发了APP,想让读点数据进去,那我们就要去开发个后台了. laravel框架,是我最喜欢的PHP框

VS2013中使用git发布解决方案master分支的时候出现错误

环境:VS2013+ 码云(https://git.oschina.net/)错误描述:在VS2013中使用git发布解决方案master分支的时候出现“无法将本地分支 master 发布到远程存储库 origin,因为此处已存在具有同一名称的分支.您可能需要重命名您的本地分支,然后重试”,如下图所示 其实官网创建时已经给出了解决办法: 1.创建项目的时候不需要选择自动创建ReadMe文件,如果已经创建可以选择清空项目 创建项目后(不含ReadMe文件)Code版块会自动跳转到该提示 根据该提示

git 创建远程分支和删除 master 分支

. . . . . 最近需要将不同的客户的代码分开管理,所以需要为这些代码分别创建分支. 目前版本库中分支结构如下: [[email protected]:Project]$ git branch -a* master remotes/origin/HEAD -> origin/master remotes/origin/masger remotes/origin/master 其中 master 分支是客户 A 所使用的分支. 其它客户则以 masger 分支为基础版本创建. 大致需求的流程如

基于 Laravel (5.1) & Ember.js (1.13.0) 的用户授权系统

Laravel 本身提供了完整的用户授权解决方案,对于由 PHP 驱动的多页面应用,Laravel 能够完美解决用户授权问题.但是在 SPA 中,laravel 退化成一个 API server,页面路由和表单提交完全由前端框架控制,此时面临2个问题: 如何在前端实现页面访问权限控制? 如何对 ajax 请求做授权? 如何在前端实现页面访问权限控制? Ember.js 1.13.0 没有提供 authentication 功能,我使用了一个名为 ember-simple-auth 的第三方扩展.

git从master分支checkout一个新分支,开发完毕合并到master出现冲突

项目是一个人独立开发的,master都是开发完的版本,v1.0,v1.1,v1.2……新开发任务时,从master checkout一个新的分支出来,进行开发,当开发完毕,我checkout到master时,出现了很多冲突文件,很不解,项目都是我一个人开发的,为什么会出现冲突呢,在经过问题排查时发现,我在dev分支上进行开发时,当时master上要修改一个小东西,就在master上进行了修改,然后进行了amend提交,造成了checkout分支时master的commit id和现在的commi