ThinkSNS+ 基於 Laravel master 分支,從 1 到 0,再到 0.1

什麼是 ThinkSNS+

09 年,由北京的團隊開發了 ThinkSNS 涉足社交開源行業。這麼多年累計很多客戶。2014-2016,兩年都在維護和開發以前基於 TP 的 ThinkSNS , 慢慢的引入新開發概念。終於,在2016年下半年,咱們決定重寫這個程序,拋棄以前的每一行代碼。框架上,開發人員一致性的選擇了 Laravel ,並取了一個看起來像手機廠商給手機命名的名字----ThinkSNS Plus 沒錯就是 Plus 也就是符號 + 由於咱們更但願側重移動端,這就是 ThinkSNS+。php

如何保持和 Laravel 的升級

起初沒想過框架升級的問題,後來思考了一個問題,最後會不會像以前版本同樣?框架難以升級?因此咱們決定每週一對 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 中間插件實現。github

composer 插件 zhiyicx/plus-install-pluginweb

plus-component

這個設計其實只是想拓展包能夠快速的接入路由模板數據模型這些基礎開發,也是中間插件 1.0 版本中惟一實現的拓展方式,存在了長達半年之久,能夠快速的寫路由、控制器、數據模型,目前咱們團隊出的應用拓展都是以此方式開發實現。
並封裝了 php artisan component 命令安裝。json

plus-plugin

這是一個很年輕的 type 在 composer 插件 1.1 版本中增長的,這個拓展方式實現原理很簡單,其實就是 Laravel 的 Service Provider ,熟悉 Laravel 開發都知道,這個服務門面被稱之爲 "Laravel 拓展" 可是安裝並不方便,須要先 composer require vendor/name ,而後在 app.php 的 providers 字段中配置,而後運行命令生成配置文件等。babel

考慮到 ThinkSNS+ 面向的都是站長、創業者、企業集團等用戶,讓他們改代碼?簡直不如殺了他們。因此,萌生了一個想法,如何把這個步驟自動化?讓用戶只須要 composer require vendor/name 就完成呢?並且,對於例如廣播系統的使用,很須要一個這樣的東西來方便開發拓展。因此想辦法把這個步驟,在 composer require 步驟完成,由此開發了這個模式。app

Laravel 的拓展不能直接以這種方式使用喲,由於咱們作這個的想法是把配置移交到後臺配置。

接口和 SPA

接口,在初期沒有徹底考慮 REST ful 因此,你能會看到 URL 命名很像 REST ful 規範,實際數據卻不是,後續逐步規範化。

這裏提到了 API 接口,意味着一個事情,咱們拋棄了傳統網頁,ThinkSNS+ 核心就是一個 用戶中心,而後功能所有由拓展實現,目先後臺、手機端 都是採用 SPA 調用接口的形式開發。

相關文章
相關標籤/搜索