admin.md 13.8 KB
Newer Older
inkwalk's avatar
inkwalk 已提交
1
# uniCloud admin 基础框架
inkwalk's avatar
inkwalk 已提交
2

inkwalk's avatar
inkwalk 已提交
3
### 什么是 uniCloud admin
inkwalk's avatar
inkwalk 已提交
4

inkwalk's avatar
inkwalk 已提交
5
uniCloud admin 基础框架,是基于 uni-app 和 uniCloud 的应用后台管理框架。HBuilderX 2.9.5+ 支持,请更新到最新版本使用。
inkwalk's avatar
inkwalk 已提交
6

inkwalk's avatar
update  
inkwalk 已提交
7 8 9
- 它使用 uni-app 的宽屏适配,可自动适配 PC 宽屏和手机各端。了解[宽屏适配](https://uniapp.dcloud.io/adapt)
- 它基于 uniCloud,是 serverless 的云开发。了解[uniCloud](https://uniapp.dcloud.io/uniCloud/README)
- 它基于 uni-id,admin 框架使用的是 uni-id 的用户账户、权限系统。了解[uni-id](https://uniapp.dcloud.io/uniCloud/uni-id)
inkwalk's avatar
inkwalk 已提交
10

inkwalk's avatar
inkwalk 已提交
11
### 内置的功能
inkwalk's avatar
inkwalk 已提交
12 13

- 管理员账户初始化、登录、修改密码
inkwalk's avatar
update  
inkwalk 已提交
14
- 顶部 topWindow 的设置:比如 logo 更换、右上角部分链接更换。详见项目根目录的`admin.config.js`文件
inkwalk's avatar
inkwalk 已提交
15
- 左侧 leftWindow 的菜单设置:菜单包括两类,一类是动态菜单,具备业务和权限功能;另一类是静态菜单,不会根据登录用户角色变化
inkwalk's avatar
inkwalk 已提交
16
- 开发模式下的 debug 功能,帮助开发者及时发现报错和搜索错误信息,可在`admin.config.js`文件中配置
inkwalk's avatar
inkwalk 已提交
17

inkwalk's avatar
inkwalk 已提交
18 19 20 21 22 23 24 25 26 27 28 29 30
> uniCloud admin 是一个框架,具体业务需要开发者自己开发或从插件市场导入相关插件

### 支持响应式布局

uniCloud admin 同时支持 PC 端 和移动端。

PC 端如下图:

![pc](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/c2a69410-15db-11eb-880a-0db19f4f74bb.png)

移动端如下图:

<img src="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/2766a010-11d7-11eb-8bd0-2998ac5bbf7e.png" width="375"/>
inkwalk's avatar
inkwalk 已提交
31 32 33 34 35

### 使用

#### 创建

inkwalk's avatar
inkwalk 已提交
36
[HBuilderX](https://www.dcloud.io/hbuilderx.html) 2.9.5+版本新建 uni-app 项目,选择 uniCloud admin 项目模板,如下图
inkwalk's avatar
inkwalk 已提交
37

inkwalk's avatar
inkwalk 已提交
38
![download-admin](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/c2085840-15db-11eb-880a-0db19f4f74bb.png)
inkwalk's avatar
inkwalk 已提交
39

inkwalk's avatar
update  
inkwalk 已提交
40
创建完成后,可以跟随`云服务空间初始化向导`初始化项目,创建并绑定云服务空间
inkwalk's avatar
inkwalk 已提交
41 42

![download-admin](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/2baaddd0-11f5-11eb-81ea-f115fe74321c.png)
inkwalk's avatar
inkwalk 已提交
43 44 45 46

#### 运行

1. 进入 admin 项目
inkwalk's avatar
update  
inkwalk 已提交
47 48 49 50
2. 在/cloudfunctions-aliyun/common/uni-id/config.json 文件中填写 `passwordSecret` 字段 (用于加密密码入库的密钥) 和 `tokenSecret` 字段 (为生成token需要的密钥)
3. 右键 cloudfuntions 运行云服务空间初始化向导(如已创建并绑定云服务空间,则跳过此步)
4. 点击工具栏的运行 -> 运行到浏览器
5. 登录页面底部进入创建管理员页面(仅允许注册一次管理员账号)
inkwalk's avatar
inkwalk 已提交
51

inkwalk's avatar
inkwalk 已提交
52 53
> 注意:手机端报 ``request:fail``,需要去云服务空间的``跨域配置``配置跨域域名,需带端口

inkwalk's avatar
inkwalk 已提交
54 55 56 57 58
### 目录结构

```bash
├── cloudfunctions              # 云函数
├── common
inkwalk's avatar
inkwalk 已提交
59 60
│   │── uni.css                 # 公共样式
│   └── uni-icons.css           # icon样式
inkwalk's avatar
inkwalk 已提交
61 62 63 64 65 66 67 68
├── components                  # 自定义组件
├── js_sdk                      # js sdk
├── pages                       # 页面
│   │── index                   # 首页
│   └── login                   # 登录页
├── static
├── store                       # vuex
├── windows
inkwalk's avatar
inkwalk 已提交
69 70
│   │── component               # 项目中使用的组件
│   │── leftWindow.vue          # 左侧窗口(菜单栏)
inkwalk's avatar
inkwalk 已提交
71 72 73 74 75 76 77 78 79 80
│   └── topWindow.vue           # 顶部窗口(导航栏)
├── admin.config.js             # 系统配置(配置导航,菜单等)
├── App.vue
├── main.js
├── mainfest.json
├── pages.json
├── postcss.config.js           # postcss 配置(浏览器兼容性)
└── uni.scss
```

inkwalk's avatar
inkwalk 已提交
81
### 登录页
inkwalk's avatar
inkwalk 已提交
82

inkwalk's avatar
update  
inkwalk 已提交
83 84 85
首次使用,可以通过登录页面底部链接创建一个超级管理员(仅允许创建一次),该接口会判断系统里如果有admin角色的用户,就不再允许添加新的超级管理员。

> 注意:注册完毕后,建议从登录页面移除该链接
inkwalk's avatar
inkwalk 已提交
86

inkwalk's avatar
inkwalk 已提交
87
![login](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/c3f33850-15db-11eb-8ff1-d5dcf8779628.png)
inkwalk's avatar
inkwalk 已提交
88

hbcui1984's avatar
hbcui1984 已提交
89
### 分栏窗体介绍
inkwalk's avatar
inkwalk 已提交
90 91

登录后我们会看到如下窗体, 窗体分为三个部分,topWindow 顶部窗口(导航栏),leftwindow 左侧窗口(菜单栏),右侧的内容主窗体
inkwalk's avatar
inkwalk 已提交
92

inkwalk's avatar
inkwalk 已提交
93
![index](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/c3591b30-15db-11eb-8ff1-d5dcf8779628.png)
inkwalk's avatar
inkwalk 已提交
94 95

#### 顶部窗口(导航栏)
inkwalk's avatar
inkwalk 已提交
96

hbcui1984's avatar
hbcui1984 已提交
97
顶部窗口默认在左侧展示系统Logo、右侧显示导航链接,效果如上图。展示内容可通过项目根目录下的`admin.config.js`文件进行配置,如下为示例:
inkwalk's avatar
inkwalk 已提交
98 99

```js
hbcui1984's avatar
hbcui1984 已提交
100
# admin.config.js
inkwalk's avatar
inkwalk 已提交
101
export default {
hbcui1984's avatar
hbcui1984 已提交
102 103 104
  navBar: {// 顶部导航
    logo:"https://www.example.com/logo.png",//左侧 Logo
    links: [ // 右侧链接
inkwalk's avatar
update  
inkwalk 已提交
105
      {
inkwalk's avatar
inkwalk 已提交
106
        text: "Admin框架文档",
inkwalk's avatar
update  
inkwalk 已提交
107
        url: "https://uniapp.dcloud.net.cn/uniCloud/admin",
inkwalk's avatar
inkwalk 已提交
108 109 110
      },
      {
        text: "浏览更多Admin插件",
inkwalk's avatar
update  
inkwalk 已提交
111
        url: "https://ext.dcloud.net.cn/?cat1=7&cat2=74",
hbcui1984's avatar
hbcui1984 已提交
112
      }
inkwalk's avatar
update  
inkwalk 已提交
113 114
    ],
  },
inkwalk's avatar
inkwalk 已提交
115 116
};
```
hbcui1984's avatar
hbcui1984 已提交
117
顶部导航栏的样式,可通过项目根目录下的`uni.scss`进行自定义,如下:
inkwalk's avatar
inkwalk 已提交
118 119

```css
hbcui1984's avatar
hbcui1984 已提交
120
# uni.scss
inkwalk's avatar
inkwalk 已提交
121 122 123 124
$top-window-bg-color: #fff; /* 背景色 */
$top-window-text-color: #999; /* 文字颜色 */
```

inkwalk's avatar
inkwalk 已提交
125
#### 左侧窗口(菜单栏)
inkwalk's avatar
inkwalk 已提交
126

inkwalk's avatar
inkwalk 已提交
127
左侧窗口内主要是菜单,菜单包含静态菜单和动态菜单,支持无限层级嵌套,但建议层级不要超过三级
inkwalk's avatar
inkwalk 已提交
128

inkwalk's avatar
inkwalk 已提交
129 130
- 静态菜单: 所有登录用户角色都能看到
- 动态菜单: 根据角色的权限自动生成
inkwalk's avatar
update  
inkwalk 已提交
131

inkwalk's avatar
inkwalk 已提交
132
  > 用户登录时,会根据用户的 _角色_ 去查找其拥有的 _权限_ ,再根据 _权限_ 去查找对应的 _菜单_
inkwalk's avatar
inkwalk 已提交
133

inkwalk's avatar
inkwalk 已提交
134
##### 管理静态菜单
inkwalk's avatar
inkwalk 已提交
135

inkwalk's avatar
inkwalk 已提交
136
通过 [admin.config.js](https://github.com/dcloudio/uniCloud-admin/blob/master/admin.config.js) 配置侧边栏内容,所有用户都能看到静态菜单。
inkwalk's avatar
inkwalk 已提交
137

inkwalk's avatar
inkwalk 已提交
138 139
```js
export default {
inkwalk's avatar
update  
inkwalk 已提交
140 141 142 143 144
  // 侧边栏
  sideBar: {
    // 配置静态菜单列表(放置在用户被授权的菜单列表下边)
    staticMenu: [
      {
inkwalk's avatar
inkwalk 已提交
145
        menu_id: "demo",
inkwalk's avatar
inkwalk 已提交
146 147
        name: "静态功能演示",
        icon: "uni-icons-list",
inkwalk's avatar
update  
inkwalk 已提交
148 149
        children: [
          {
inkwalk's avatar
inkwalk 已提交
150
            menu_id: "icons",
inkwalk's avatar
inkwalk 已提交
151
            name: "图标",
inkwalk's avatar
update  
inkwalk 已提交
152
            url: "/pages/demo/icons/icons",
inkwalk's avatar
inkwalk 已提交
153
          },
inkwalk's avatar
update  
inkwalk 已提交
154
          {
inkwalk's avatar
inkwalk 已提交
155
            menu_id: "table",
inkwalk's avatar
update  
inkwalk 已提交
156
            name: "表格",
inkwalk's avatar
update  
inkwalk 已提交
157
            url: "/pages/demo/table/table",
hbcui1984's avatar
hbcui1984 已提交
158 159
          }
        ]
inkwalk's avatar
update  
inkwalk 已提交
160 161 162
      },
    ],
  },
inkwalk's avatar
inkwalk 已提交
163 164 165
};
```

inkwalk's avatar
inkwalk 已提交
166
##### 管理动态菜单
inkwalk's avatar
inkwalk 已提交
167

inkwalk's avatar
inkwalk 已提交
168
在云后台数据库的 `opendb-admin-menus` 表中管理菜单, 对菜单增删改查。如下图:
inkwalk's avatar
inkwalk 已提交
169

inkwalk's avatar
inkwalk 已提交
170
![add-menu](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/aa7adb00-152a-11eb-81ea-f115fe74321c.png)
inkwalk's avatar
inkwalk 已提交
171

inkwalk's avatar
inkwalk 已提交
172 173
_菜单字段解释:_

inkwalk's avatar
inkwalk 已提交
174 175
| 字段        | 类型      | 必填 | 描述                                                 |
| :---------- | :-------- | :--- | :--------------------------------------------------- |
inkwalk's avatar
inkwalk 已提交
176
| menu_id     | Object ID | 是   | 菜单 Id                                    |
inkwalk's avatar
inkwalk 已提交
177 178 179 180 181 182
| name        | String    | 是   | 菜单文字                                             |
| icon        | String    | 否   | 菜单图标                                             |
| url         | String    | 否   | 菜单对应的页面链接(只有没有子菜单的菜单项可以配置) |
| sort        | Integer   | 否   | 在同级菜单中的排序,数组越大越靠后                   |
| parent_id   | String    | 否   | 父级菜单 Id                                          |
| permission  | Array     | 否   | 菜单权限(只有没有子菜单的菜单项可以配置)           |
inkwalk's avatar
update  
inkwalk 已提交
183
| enable | Boolean | 是 | 菜单状态:false 禁用 true 启用 |
inkwalk's avatar
inkwalk 已提交
184
| create_date | Timestamp | 是   | 创建时间                                             |
inkwalk's avatar
inkwalk 已提交
185 186 187 188 189 190

_添加菜单记录需要注意:_

- 无子菜单,则需 `url` 字段不能为空,该菜单才能在页面显示
- 有子菜单,则需至少一个子菜单的 `url` 字段不能为空,该菜单才能在页面显示

inkwalk's avatar
inkwalk 已提交
191
例如,如需增加如下菜单:
inkwalk's avatar
inkwalk 已提交
192 193

```bash
inkwalk's avatar
inkwalk 已提交
194 195
订单管理                  # 父菜单
└── 手机                 # 子菜单
inkwalk's avatar
inkwalk 已提交
196 197
```

hbcui1984's avatar
hbcui1984 已提交
198
**step 1:**添加一条父菜单记录
inkwalk's avatar
inkwalk 已提交
199 200 201 202 203

菜单的 `parent_id` 字段为空, 即为一级菜单

```json
{
inkwalk's avatar
inkwalk 已提交
204
  "menu_id": "order",
inkwalk's avatar
update  
inkwalk 已提交
205
  "name": "订单管理",
inkwalk's avatar
inkwalk 已提交
206
  "icon": "uni-icons-cart-filled",
inkwalk's avatar
update  
inkwalk 已提交
207
  "url": "",
inkwalk's avatar
inkwalk 已提交
208
  "sort": 2,
inkwalk's avatar
update  
inkwalk 已提交
209 210
  "parent_id": "",
  "permission": [],
inkwalk's avatar
inkwalk 已提交
211
  "enable": true,
inkwalk's avatar
inkwalk 已提交
212
  "create_date": "1602662469396"
inkwalk's avatar
inkwalk 已提交
213 214 215
}
```

hbcui1984's avatar
hbcui1984 已提交
216
**step 2:**添加一条子菜单记录
inkwalk's avatar
inkwalk 已提交
217

inkwalk's avatar
inkwalk 已提交
218
将子菜单的 `parent_id` 指向父菜单的 `menu_id`即可,孙菜单就是将子菜单的 `menu_id` 当做父菜单
inkwalk's avatar
inkwalk 已提交
219 220 221

```json
{
inkwalk's avatar
inkwalk 已提交
222
  "menu_id": "phone",
inkwalk's avatar
update  
inkwalk 已提交
223
  "name": "手机",
inkwalk's avatar
inkwalk 已提交
224
  "icon": "uni-icons-phone",
inkwalk's avatar
inkwalk 已提交
225 226
  "url": "pages/phone",
  "sort": 3,
inkwalk's avatar
inkwalk 已提交
227
  "parent_id": "order",
inkwalk's avatar
update  
inkwalk 已提交
228
  "permission": [],
inkwalk's avatar
inkwalk 已提交
229
  "enable": true,
inkwalk's avatar
inkwalk 已提交
230
  "create_date": "1602662469492"
inkwalk's avatar
inkwalk 已提交
231 232 233
}
```

inkwalk's avatar
inkwalk 已提交
234
##### 侧边栏样式管理
inkwalk's avatar
inkwalk 已提交
235

inkwalk's avatar
inkwalk 已提交
236
通过 [uni.scss](https://github.com/dcloudio/uniCloud-admin/blob/master/uni.scss) 配置侧边栏样式
inkwalk's avatar
inkwalk 已提交
237

inkwalk's avatar
update  
inkwalk 已提交
238
> 调整菜单颜色时,只需设置菜单背景色 `$menu-bg-color`,自行搭配文字前景色即可
inkwalk's avatar
inkwalk 已提交
239 240 241 242 243 244 245 246 247 248

```css
$left-window-bg-color: #fff; /* 左侧窗口背景色 */
$menu-bg-color: #fff; /* 一级菜单背景色 */
$sub-menu-bg-color: darken($menu-bg-color, 8%); /* 二级以下菜单背景色 */
$menu-bg-color-hover: darken($menu-bg-color, 15%); /* 菜单 hover 背景颜色 */
$menu-text-color: #333; /* 菜单前景色 */
$menu-text-color-actived: #409eff; /* 菜单激活前景色 */
```

inkwalk's avatar
inkwalk 已提交
249
#### 右侧窗口(内容主窗体)
inkwalk's avatar
inkwalk 已提交
250

inkwalk's avatar
inkwalk 已提交
251 252 253
右侧窗口是内容主窗体,和 uni-app 保持一致,用户登录后看到的第一个页面,默认是 pages 数组中第一项表示应用启动页。

如果想将自己开发的页面调到登录后首页,可在 page.json 调整。
inkwalk's avatar
inkwalk 已提交
254

hbcui1984's avatar
hbcui1984 已提交
255
### icon 图标
inkwalk's avatar
inkwalk 已提交
256

hbcui1984's avatar
hbcui1984 已提交
257
admin 框架内置了一套icon图标,在静态功能演示-图标菜单中,点击图标即可复制图标的class定义,或者直接到`common/uni-icons.css`中查看定义,然后以如下方式使用:
inkwalk's avatar
inkwalk 已提交
258

hbcui1984's avatar
hbcui1984 已提交
259 260 261
```
<view class="uni-icons-gear"></view>
```
inkwalk's avatar
inkwalk 已提交
262

hbcui1984's avatar
hbcui1984 已提交
263
当然,你也可以使用三方icon库。以使用 `elementUI` 的图标为例,在 `app.vue` 中导入图标库的样式文件:
inkwalk's avatar
inkwalk 已提交
264

inkwalk's avatar
inkwalk 已提交
265 266 267 268 269 270 271 272
```javascript
<style>
  /* 注意此处仅为 icon 使用示例,建议引入纯净图标库,避免增加不必要的 css */
  @import 'https://unpkg.com/element-ui/lib/theme-chalk/index.css';
</style>
```

在标签上使用图标的 class 名称,即:
hbcui1984's avatar
hbcui1984 已提交
273 274 275
```
<view class="el-icon-s-tools"></view>
```
inkwalk's avatar
inkwalk 已提交
276

hbcui1984's avatar
hbcui1984 已提交
277
### 用户-角色-权限
inkwalk's avatar
inkwalk 已提交
278

hbcui1984's avatar
hbcui1984 已提交
279
uniCloud admin 框架基于 uni-id,复用 uni-id 的用户、角色、权限系统,详见[uni-id](https://uniapp.dcloud.io/uniCloud/uni-id)
inkwalk's avatar
inkwalk 已提交
280

hbcui1984's avatar
hbcui1984 已提交
281
需要注意的是,admin框架的动态菜单同样依赖uni-id的权限表(uni-id-permissions)。
inkwalk's avatar
update  
inkwalk 已提交
282

hbcui1984's avatar
hbcui1984 已提交
283
菜单表(opendb-admin-menus)定义如下:
inkwalk's avatar
update  
inkwalk 已提交
284 285 286

| 字段 | 类型 | 必填 | 描述 |
| :--------- | :-------- | :--- | :--------------------------------------------------- |
inkwalk's avatar
inkwalk 已提交
287
| menu_id | Object ID | 是 | 菜单 Id |
inkwalk's avatar
update  
inkwalk 已提交
288 289 290 291 292 293
| name | String | 是 | 菜单文字 |
| icon | String | 否 | 菜单图标 |
| url | String | 否 | 菜单对应的页面链接(只有没有子菜单的菜单项可以配置) |
| sort | Integer | 否 | 在同级菜单中的排序,数组越大越靠后 |
| parent_id | String | 否 | 父级菜单 Id |
| permission | Array | 否 | 菜单权限(只有没有子菜单的菜单项可以配置) |
inkwalk's avatar
update  
inkwalk 已提交
294
| enable | Boolean | 是 | 菜单状态:false 禁用 true 启用 |
inkwalk's avatar
update  
inkwalk 已提交
295
| create_date | Timestamp | 是 | 创建时间 |
inkwalk's avatar
update  
inkwalk 已提交
296

inkwalk's avatar
inkwalk 已提交
297
admin 提供了两个内置方法,方便在页面中鉴定登录用户权限和角色:
inkwalk's avatar
inkwalk 已提交
298

inkwalk's avatar
inkwalk 已提交
299 300 301 302
| 方法             | 作用                       | 入参   | 返回值  |
| :--------------- | :------------------------- | :----- | :------ |
| `$hasPermission` | 鉴定登录用户是否具有某权限 | String | Boolean |
| `$hasRole`       | 鉴定登录用户是否具有某角色 | String | Boolean |
inkwalk's avatar
inkwalk 已提交
303 304 305

```html
<template>
inkwalk's avatar
inkwalk 已提交
306 307
  <view>
    <!-- 包含 user/add 权限的用户可以看到新增按钮 -->
inkwalk's avatar
inkwalk 已提交
308
    <button v-if="$hasPermission('USER_ADD')">新增</button>
inkwalk's avatar
inkwalk 已提交
309 310
    <!-- 包含 admin 角色的用户可以看到删除按钮 -->
    <button v-if="$hasRole('admin')">删除</button>
inkwalk's avatar
update  
inkwalk 已提交
311
  </view>
inkwalk's avatar
inkwalk 已提交
312 313 314
</template>
```

inkwalk's avatar
inkwalk 已提交
315
### 新增页面
inkwalk's avatar
inkwalk 已提交
316

inkwalk's avatar
inkwalk 已提交
317
新增页面可以自己开发页面,也可以从插件市场下载插件。页面如需添加菜单,参见上文的[菜单管理](#静态菜单和动态菜单)
inkwalk's avatar
inkwalk 已提交
318

inkwalk's avatar
inkwalk 已提交
319 320
开发页面不局限开发方式:

inkwalk's avatar
inkwalk 已提交
321 322 323
- 可以新增普通的页面,在前端 callfunction,后台搭配云函数操作
- 可以使用 uni-clientdb,在前端直接操作数据库,后台配置 db schema 进行权限和格式校验
- 可以使用云函数单文件路由,在项目中默认包含了一个[uni-cloud-router](https://uniapp.dcloud.io/uniCloud/uni-cloud-router) 的单文件路由,也可以使用插件市场的其他单文件路由
inkwalk's avatar
inkwalk 已提交
324

inkwalk's avatar
inkwalk 已提交
325
#### 自己开发页面
inkwalk's avatar
inkwalk 已提交
326

inkwalk's avatar
inkwalk 已提交
327
admin 中开发页面,和 uni-app 开发 vue 页面是一致的。
inkwalk's avatar
inkwalk 已提交
328

inkwalk's avatar
inkwalk 已提交
329
#### 从插件市场下载插件,并注册到 admin 菜单
inkwalk's avatar
inkwalk 已提交
330

inkwalk's avatar
inkwalk 已提交
331
[uniCloud admin 管理项目-权限管理插件](https://ext.dcloud.net.cn/plugin?id=3269)为例
inkwalk's avatar
inkwalk 已提交
332

inkwalk's avatar
update  
inkwalk 已提交
333
_使用步骤:_
inkwalk's avatar
inkwalk 已提交
334

inkwalk's avatar
inkwalk 已提交
335
1.[插件市场](https://ext.dcloud.net.cn/)导入插件
inkwalk's avatar
inkwalk 已提交
336 337 338 339 340
2. 在 HBuilder X 2.9.5 中选择添加插件的项目
3. 覆盖项目的 db_init.json 文件, 点击“确定覆盖”
4. 在 db_init.json 文件上右键,点击“初始化云数据库”
5. 刷新 admin 即可在菜单栏看到新增的菜单

inkwalk's avatar
inkwalk 已提交
341
---------------------------------- 分割线 ----------------------------------------
inkwalk's avatar
inkwalk 已提交
342

inkwalk's avatar
inkwalk 已提交
343
### 插件开发
inkwalk's avatar
inkwalk 已提交
344

inkwalk's avatar
inkwalk 已提交
345
我们不仅是插件的使用者,也可以是插件的开发者,那么如何开发一款插件呢?参考 [DCloud 插件开发指南汇总](https://ask.dcloud.net.cn/article/35408) 及其中的 `admin 插件`部分.
inkwalk's avatar
inkwalk 已提交
346 347 348

### 使用三方组件库

inkwalk's avatar
inkwalk 已提交
349
uniCloud admin 支持所有三方的 Vue UI 库,包括 elementUI 等非 uni-app 的 UI 库,但注意这些 for h5 的 ui 库只能在浏览器中使用,无法适配 App 和小程序,按如下操作。
inkwalk's avatar
inkwalk 已提交
350

inkwalk's avatar
inkwalk 已提交
351
以使用 element-ui 框架为例:
inkwalk's avatar
inkwalk 已提交
352 353 354

1. 安装 UI 框架

inkwalk's avatar
update  
inkwalk 已提交
355
   > npm i element-ui -S
inkwalk's avatar
inkwalk 已提交
356 357 358

2. 在 main.js 中引用

inkwalk's avatar
update  
inkwalk 已提交
359 360 361
   ```javascript
   import elementUI from "element-ui";
   import "element-ui/lib/theme-chalk/index.css";
inkwalk's avatar
inkwalk 已提交
362

inkwalk's avatar
update  
inkwalk 已提交
363 364
   Vue.use(elementUI);
   ```