您好,登錄后才能下訂單哦!
什么是 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,每日關注開發動態。)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。