- 论坛徽章:
- 0
|
什么是ThinkSNS+
09年,由北京的团队开发了ThinkSNS涉足社交开源行业。这么多年累计不少客户。2014-2016,两年都在维护和开发之前基于TP的ThinkSNS,慢慢的引入新开发概念。终于,在2016年下半年,我们决定重写这个程序,抛弃之前的每一行代码。框架上,开发人员一致性的选择了Laravel,并取了一个看起来像手机厂商给手机命名的名字----ThinkSNSPlus没错就是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的ServiceProvider,熟悉Laravel开发都知道,这个服务门面被称之为"Laravel拓展"但是安装并不方便,需要先composer require vendor/name,然后在app.php的providers字段中配置,然后运行命令生成配置文件等。
考虑到ThinkSNS+面向的都是站长、创业者、企业集团等用户,让他们改代码?简直不如杀了他们。所以,萌生了一个想法,如何把这个步骤自动化?让用户只需要composer require vendor/name就完成呢?而且,对于例如广播系统的使用,很需要一个这样的东西来方便开发拓展。所以想办法把这个步骤,在composer require步骤完成,由此开发了这个模式。
Laravel的拓展不能直接以这种方式使用哟,因为我们做这个的想法是把配置移交到后台配置。
接口和SPA
接口,在初期没有完全考虑RESTful所以,你能会看到URL命名很像RESTful规范,实际数据却不是,后续逐步规范化。
这里提到了API接口,意味着一个事情,我们抛弃了传统网页,ThinkSNS+核心就是一个用户中心,然后功能全部由拓展实现,目前后台、手机端都是采用SPA调用接口的形式开发。
开源版源码官方正版获取唯一渠道:关注公众号“thinksns”,回复“开源版”即可获得最新源码压缩文件地址。
开源代码仓库:
GitHub:https://github.com/zhiyicx/thinksns-plus(点击star,每日关注开发动态。)
内测申请方式
提供个人/企业联系方式及认证信息(实名ID/企业营业执照照片或扫描件)及申请说明,发送邮件至lihecong@zhishisoft.com将有机会获得首批内测资格,名额有限,申请从速。
开源不易,为了争取开源,我们团队做了很多努力。把基于Laravel的作品展示在大家面前,之后专栏会持续不断的分享ThinkSNS+开发过程中的技术细节。
|
|