# 二次開發
二次開發注意事項
### **應用和插件的區分**
通常的,我們可以把業務相對獨立的一個完整的功能,開發為插件。
開發插件的好處是系統具有非常好的擴展性。
基于niucloud-admin框架體系而言,我們一般的把一個功能單元定義為兩個類型(**應用、插件**)。非常深刻的理解應用和插件的定義,區分他們的區別,對于系統的可擴展性和開發方案的規劃是非常重要的前提。
注意!在niucloud-admin框架體系,一個框架只支持單個應用安裝多個插件。而非多應用!niucloud-admin框架不支持多應用。我們設計的初衷是簡單,高效,可擴展。如果多應用模式,會成倍增加開發者的復雜度,導致系統最終無法維護。<br>
**區分他們需要考慮兩點**
第一,要開發的系統是否龐大,是否可能要修改整個niucloud-admin框架核心代碼才能實現最終的業務功能,如果涉及到前面所述,我們一般會基于niucloud-admin框架進行全面的定制。這樣的開發一般叫應用開發,插件是運行在應用上的功能擴展,插件是不能獨立運行的,niucloud-admin框架是一個最基礎的應用。一套niucloud-admin框架開發的系統,安裝和運營只能有一個應用,一個應用可以安裝多個支持本應用的插件。
第二,對于一些功能,相對單一,和其他系統單元沒有過多的耦合性,也幾乎沒有業務黏連。或者,是實現某項具體的內核功能,這類型的功能,一般定義并開發為插件。比如阿里云短信,這一個系統功能,和任何業務系統沒有關聯,功能完全是獨立的。再比如,開發一個刮刮樂的游戲,或者抽獎的小系統。這一類型的業務系統,一般的,僅僅會對會員賬戶的積分,傭金等操作。和具體的其他的業務幾乎沒有關聯,這一類型的功能,一般開發為插件。插件的好處是便于流傳,各種應用都可以加載,對于小開發商來說,可以從一個插件做起。
### **二次開發中的繼承和重寫思想**
好的二次開發的系統,是兼容框架代碼,不修改框架主體任何代碼。并且不會因為二次開發之后,影響到系統與框架的同步升級的架構設計。這個一定要從項目設計階段就考慮。
在此,牛哥講解幾種思維方式
1. 我們有這樣一個業務需求,所有的功能都使用niucloud-admin框架本身的,只是會員列表、會員編輯的功能完全不符合自己的業務需求,因為我們希望實現的會員列表要有儲值、累計消費金額、累計消費次數、當月消費金額、當月消費次數、而不要現在框架本身自帶的手機號,注冊方式等等等。對于這類型的開發,我們一定不要修改框架本身的功能,我們要做的是,我們新建一個插件,然后在插件中實現我們自己的會員列表和會員編輯,然后隱藏系統會員列表菜單,加載自定義的菜單并路由到自己編寫的會員列表。這樣,框架升級的時候,完全不影響二次開發的功能。完美實現二次開發與框架的兼容升級。
2. 我們有這樣一個業務需求,手機端的個人中心和我想要的個人中心樣式不同,要考慮幾點
從api 接口,控制器,service考慮。一定有一個非常重要的概念,接口的功能唯一性、單一性。對于niucloud-admin本身查詢會員中心的api接口可能是,[*http://127.0.0.1/adminapi/member/center*](http://127.0.0.1/adminapi/member/center), 我們二次開發一定不能修改這個接口,(一定記住!只要修改框架的任何東西,都可能會影響與官方的同步升級)。我們可以在插件中,來定義新的個人中心的接口比如 center\_v2, center\_v3, 然后自己寫的頁面調用此接口
對于前臺而言,如果某個diy組件實現不了自己的樣式和功能,那就重寫一個組件,對于某個系統頁面實現不了自己的頁面需求,那就自己重寫個頁面,總歸不能調整框架的任何東西。這些只是整體的一個復用思維方式,至于真的有復雜的系統,改寫部分頁面不如大動干戈,那就徹底的改造他。造成的后果就是升級的兼容性問題。
3. 具體的功能代碼塊,相互調用盡可能通過事件回調減少耦合
4. 整個niucloud-admin框架,對于插件的思想,是以會員賬戶的積分,余額(可提現、不可提現),傭金的增減業務調整為主體思想的。這樣,開發者開發的插件都可以通用,各種應用也可以通用。
- 源碼下載
- 安裝部署
- 環境要求
- 安裝視頻教程
- 寶塔部署
- 授權綁定
- 二次開發須知
- 技術棧
- 目錄結構
- 命名規范
- 二次開發指導
- 二次開發環境搭建步驟
- 二次開發注意事項
- 單站和Saas模式開發
- 插件結構描述
- MENU開發
- DIY組件/頁面開發
- 自定義手機端DIY裝修頁面
- Route 路由處理
- Services中的core文件夾
- 自定義站點管理端控制臺頁面樣式
- 調用素材資源
- Resource資源文件
- 引入圖標ICON
- SMS發送短信開發
- Job 消息隊列和計劃任務
- 消息隊列
- 計劃任務開發
- 生產環境編譯打包處理步驟
- 生產環境搭建步驟
- 插件安裝時npm,composer檢測不可用問題處理
- 上傳圖片大小限制修改
- 插件uniapp開發
- 菜單語言包
- 插件打包
- 插件內測在線升級
- 自定義端口開發
- 如何開發自定義布局后臺布局
- 二次開發應用插件視頻教程
- 二次開發安裝視頻教程
- 準備工作與創建插件
- 插件目錄整體說明
- 插件admin目錄
- 插件app目錄說明(adminapi、api、驗證器)
- 插件app目錄(dict、job)
- 插件app目錄說明(lang、listener)
- 插件app目錄說明(model、service)
- 插件uniapp目錄說明
- 插件開發之后臺功能開發(代碼生成器)
- 插件開發之uniapp功能開發(api)第一節
- 插件開發之uniapp功能開發(api)第二節
- 插件開發之uniapp功能開發(api)第三節
- 插件安裝與打包原理
- 消息隊列開發
- 計劃任務開發
- DIY組件和自定義頁面裝修開發
- 支付接口開發
- 插件升級包打包流程以及云編譯功能
- 常見問題
- 怎么添加菜單,添加了菜單不出現怎么回事
- 怎么配置跨域的問題
- 站點site端(租戶端、商家端)和saas管理端(平臺端)究竟啥意思,有啥區別
- 框架中是有訂單表order,假如開發一個商城插件,請問商城的訂單數據是不是重新搞一個訂單表shop_order
- 有些支付平臺是綁定回調唯一網址或目錄,如果有幾個開發者開發插件都有支付那這塊怎么解決?
- 站點過期,可以登錄,這樣對嗎?
- 計劃任務怎么啟動啊
- Git多分支開發,切換分支
- 安裝應用出現is_dir():報錯處理方案
- 綁定授權時出現“請求來源產品與授權產品不一致”解決方案
- “未找到admin源碼所在目錄”的解決方案
- 頁面裝修本地開發環境配置
- 接口請求錯誤處理方案
- 未獲取到授權信息問題處理方案
- 騰訊地圖配置
- 請求超時問題處理方案
- 下載應用時提示找不到zip解決方案
- 怎么關閉開發調試模式
- 獲取數據失敗問題處理方案
- 框架安裝后,訪問域名無法進入admin端(多數發生在本地)
- 底部導航失效問題
- 開放平臺小程序審核通過發布失敗問題
- 先升級插件后升級框架,導致云編譯報debounce的錯誤
- 微信公眾號自動回復不通
- 修改訪問域名默認跳轉端口
- 插件與框架的兼容問題處理
- 升級提示mkdir()處理方案
- 云編譯時node.js內存不足導致內存溢出處理方案
- 報錯Allowed memory size of ** bytes exhausted (tried to allocate ** bytes)處理方法
- 代碼生成器
- 設計數據表
- 導入數據表
- 添加字段
- 代碼生成
- 效果預覽
- niucloud (服務端)
- 服務端目錄結構
- 整體運行流程
- 入口文件
- 模塊
- 中間件
- 控制器
- 路由
- 模型類
- 服務類
- 驗證類
- 消息隊列
- 開發消息隊列
- 多語言
- 裝載器
- 短信發送
- 上傳文件
- 第三方支付
- 第三方登錄
- 數據字典裝載器
- 打印
- 事件
- 消息提醒(模版消息)
- 數據字典
- admin (后臺管理端)
- 準備工作
- 新手入門
- 目錄結構
- 系統配置
- 路由
- 接口
- 管理端編譯上傳
- uni-app(手機端前端)
- 準備工作
- 前端目錄結構
- Hbuilder開發
- 發行h5
- 運行uniapp
- 發行uniapp
- Visual Studio Code開發
- 發行 uniapp
- 運行 uniapp
- 配置項
- 路由
- 接口
- 分包建議
- 手機端編譯
- 微信小程序編譯上傳
- web端(PC前端)
- 準備工作
- 目錄結構
- 代碼運行
- 路由
- 接口
- 黑暗主題
- web端打包上線
- api接口
- 配置手冊
- 阿里云oss云存儲配置
- 三方開放平臺小程序托管
- 計劃任務配置
- 站點域名配置
- 小票打印配置
- 電子面單配置
- 微信小程序客服配置
- 微信打款配置