## 目錄結構
FastAdmin所有應用插件都是存放在`addons`目錄,一個插件一個目錄,`目錄名`必須和`插件標識`相同,且全部為小寫,不允許出現大寫或下劃線等特殊符號。
~~~php
mydemo //插件標識
├── application //此文件夾中所有文件會覆蓋到根目錄的/application文件夾
├── assets //此文件夾中所有文件會復制到/public/assets/addons/mydemo文件夾
├── controller //此文件夾為插件控制器目錄
├── lang //此文件夾為插件語言包目錄
├── model //此文件夾為插件模型目錄
├── library //此文件夾為插件類目錄(如有)
├── public //此文件夾中所有文件會覆蓋到根目錄的/public文件夾
├── view //此文件夾為插件視圖目錄
├── wxapp //此文件夾為微信原生應用源碼目錄(如有)
├── uniapp //此文件夾為Uniapp源碼目錄(如有)
├── licenses //此文件夾為版權文件目錄(如有)
├── Mydemo.php //此文件為插件核心安裝卸載控制器,必需存在,注意首字母大寫
├── bootstrap.js //此文件為插件JS啟動文件,可選
├── LICENSE //插件版權文件
├── config.html //自定義插件配置視圖模板,可選
├── config.php //插件配置文件,我們在后臺插件管理中點配置按鈕時配置的文件,不存在時將不顯示`配置`按鈕
├── info.ini //插件信息文件,用于保存插件基本信息,插件開啟狀態等,必需存在
├── install.sql //插件數據庫安裝文件,此文件僅在插件安裝時會進行導入,可選
└── testdata.sql //插件測試數據SQL文件,此文件在安裝插件時會提示是否導入測試數據,可選
~~~
其中的`application`和`public`文件夾會覆蓋到根目錄,這兩個文件夾主要用于我們后臺管理功能的開發,我們可以先在后臺開發好對應的管理功能后,再將對應的功能打包進插件即可,FastAdmin在插件安裝和卸載時會自動進行文件沖突檢測,如果遇到沖突的文件會提醒用戶是否進行覆蓋或刪除。
`assets`這個文件夾很關鍵,FastAdmin會將`assets`中的所有文件夾和文件復制到`/public/assets/addons/插件標識/`文件夾中去,`assets`文件夾中的所有文件不會進行文件沖突檢測,`/public/assets/addons/插件標識/`這個目錄下的文件,我們在視圖文件中可以直接通過`__ADDON__`指向這個路徑。因此在開發視圖時我們可以先使用相對路徑設計,完成后我們再統一加上這個`__ADDON__`的前綴
`controller、lang、model`和`view`這四個文件夾是我們插件前臺功能的MVC部分,這部分文件夾不會復制或移動到其它位置。
`wxapp`此文件夾微信原生開發的應用插件源碼目錄。
`uniapp`此文件夾是基于Uniapp開發的應用插件源碼目錄。
`licenses`此文件夾是用于存放插件依賴項目版權文件的目錄,一般我們開發的應用插件都會使用到一個或多個開源項目,如果開源項目文件只有一個文件,此時請將相應的版權聲明文件放在該文件夾即可。
`Mydemo.php`這個文件是插件的核心文件,我們可以在這個文件中編寫插件安裝或卸載時執行的腳本,或者在此插件中編寫菜單的生成或刪除,同時插件的行為方法也是編寫在此文件中的,插件所支持的行為事件會在后面講到。此文件命令規則為插件標識首字母大寫。
`bootstrap.js`這個文件是插件的啟動文件,插件在安裝完啟用后,FastAdmin會將此文件中的內容合并到`/public/assets/js/addons.js`中去,你可以在此編寫插件核心JS或注冊事件,在此JS中可以使用require依賴其它模塊。同時在此插件中可以使用`Fast`、`Backend`、`Lang`等全局對象,因為在此之前此類對象已經加載且注冊。
`config.html`這個文件是插件的配置時使用的視圖模板,可選,當存在時,插件管理中點配置按鈕會調用這個視圖文件。
`config.php`這個文件是插件的配置文件,我們在后臺插件管理中點配置按鈕時會保存在此文件,`config.php`詳細使用方法和說明請參考配置章節。
`info.ini`這個文件僅用于保存插件基礎信息和開啟狀態,此文件的內容格式為
~~~ini
name = mydemo
title = 示例插件
intro = 這是一個示例插件的介紹
author = FastAdmin
website = https://www.fastadmin.net
version = 1.0.0
state = 1
~~~
`install.sql`這個文件中只能是SQL語句,同時在此文件中可以使用`__PREFIX__`表示數據庫表前綴,FastAdmin在安裝導入SQL時自動進行替換。`install.sql`的詳細使用方法請參考數據庫章節
`testdata.sql`這個文件中只能是SQL語句,同時在此文件中可以使用`__PREFIX__`表示數據庫表前綴,FastAdmin在安裝導入SQL時自動進行替換。如果存在此文件,則在安裝完插件后會提示是否導入測試數據。
### 溫馨提示
`application`不允許新增其它的模塊,只允許使用自帶的`index`和`admin`模塊
`public`和`assets`目錄下不允許任何的`php/asp/jsp`等服務端腳本文件