好吧,这不是广告。。。在 09 年,由北京的团队开发了 ThinkSNS 涉足社交开源行业。
09 年,由北京的团队开发了 ThinkSNS 涉足社交开源行业。这么多年累计很多客户。2014-2016,两年都在维护和开发以前基于 TP 的 ThinkSNS , 慢慢的引入新开发概念。终于,在2016年下半年,咱们决定重写这个程序,抛弃以前的每一行代码。框架上,开发人员一致性的选择了 Laravel ,并取了一个看起来像手机厂商给手机命名的名字----ThinkSNS Plus 没错就是 Plus 也就是符号 + 由于咱们更但愿侧重移动端,这就是 ThinkSNS+。(程序员的文案,怎么莫名广告感。。。)php
起初没想过框架升级的问题,后来思考了一个问题,最后会不会像以前版本同样?框架难以升级?因此咱们决定每周一对 laravel/laravel 的 master 分支进行合并,为了表示对 Taylor Otwell 以及 Laravel 贡献者的尊重,每个 commit 在合并的时候都进行了保留。前端
因为 Laravel 自己是 MIT 协议,基于 Laravel 开发,咱们也但愿 ThinkSNS+ 能为开源社区贡献,因此代码上没有采用私有协议,而是选择了 Apache-2.0 协议进行开源。webpack
这块是一个难以选择的问题,咱们但愿能由内置 Laravel-Mix 的契合度,又但愿构建能更适合咱们的应用场景,最后,咱们选择 放弃 Laravel-Mix 本身作前端构建,衍生出一个新的问题,咱们又但愿能和 mix 辅助函数无缝配合,看了源代码后,发现问题太简单了,就是一个 mix-manifest.json 的事情而已,可是这个东西却一波三折。laravel
起初,咱们选择在 webpack.config.babel.js 中作生成函数,配合第三方包实现,功能实现了。可是若是是拓展包接入也要使用怎么办?最后开发 webpack-laravel-mix-manifest 这个前端包,来生成这个文件。git
首选,拓展设计目前有两个,分别是 plus-component 和 plus-plugin 其实都是由 Composer 中间插件实现。
composer 插件 zhiyicx/plus-install-plugin程序员
plus-component
这个设计其实只是想拓展包能够快速的接入路由模板数据模型这些基础开发,也是中间插件 1.0 版本中惟一实现的拓展方式,存在了长达半年之久,能够快速的写路由、控制器、数据模型,目前咱们团队出的应用拓展都是以此方式开发实现。
并封装了 php artisan component 命令安装。github
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 的拓展不能直接以这种方式使用哟,由于咱们作这个的想法是把配置移交到后台配置。web
接口,在初期没有彻底考虑 REST ful 因此,你能会看到 URL 命名很像 REST ful 规范,实际数据却不是,后续逐步规范化。
这里提到了 API 接口,意味着一个事情,咱们抛弃了传统网页,ThinkSNS+ 核心就是一个 用户中心,而后功能所有由拓展实现,目先后台、手机端 都是采用 SPA 调用接口的形式开发。json
GitHub:https://github.com/zhiyicx/th...(点击star,每日关注开发动态。)babel
开源不易,为了争取开源,咱们团队作了不少努力。把基于 Laravel 的做品展现在你们面前,以后专栏会持续不断的分享 ThinkSNS+ 开发过程当中的技术细节。