组件库
组件库基于 amis 开发,它使用 JSON 配置来生成页面,可以减少页面开发工作量,极大提升效率。但是大量的 JSON 配置会导致代码可读性差,维护成本高。所以 EaseAdmin 对 Amis 的 150+ 组件进行了封装,使 Amis 构建页面更加简洁高效。
所有 Amis 组件都放在 easeadmin/builder 目录。调用方法与 Amis 组件库属性表中的 属性名 相同,参数对应 属性值 你可以在 amis文档 中找到组件的详细信息。
组件使用
下面是一个 Container 组件的属性表,你可以通过 make 方法来创建一个组件对象来链式调用 Container 组件属性表中的全部属性。
| 属性名 |
类型 |
默认值 |
说明 |
| type |
string |
"container" |
指定为 container 渲染器 |
| className |
string |
|
外层 Dom的类名 |
| bodyClassName |
string |
|
容器内容区的类名 |
| wrapperComponent |
string |
"div" |
容器标签名 |
| style |
object |
|
自定义样式 |
| body |
SchemaNode |
|
容器内容 |
import { Container } from 'easeadmin/builder'
Container.make()
.className('my-container')
.bodyClassName('my-body')
.style({ color: 'red' })
.body('Hello World')
或者使用内置的 amis 方法来创建组件对象。
import amis from 'easeadmin/builder/amis'
amis('container')
.className('my-container')
.bodyClassName('my-body')
.style({ color: 'red' })
.body('Hello World')
以上例子将输出 Amis 的 JSON
{"type":"container", "className":"my-container", "bodyClassName":"my-body", "style":{"color":"red"}, "body":"Hello World"}
基础组件
你可以在 EaseAdmin 中找到几乎所有的 amis 组件,他们都都继承自 Schema 类,都拥有以下公共方法。
| 方法名 |
参数 |
说明 |
| make |
无 |
创建一个组件实例 |
| id |
string |
设置组件的 id |
| find |
string |
通过ID查找组件 |
| type |
string |
设置组件的类型 |
| attr |
string,any,string? |
设置自定义属性 |
| style |
object |
设置组件的样式 |
| className |
string |
设置组件的类名 |
| definitions |
object |
设置组件的定义 |
| permission |
boolean |
设置是否渲染组件 |
| onEvent |
object |
设置组件的事件 |
| remove |
string? |
移除组件属性 |
如果你没有找到你需要的组件或属性,你可以通过 Schema 的 attr 方法来设置你需要的属性。
import amis from 'easeadmin/builder/amis'
// 设置自定义属性
// 输出: {myKey:['myValue']}
amis('schema').attr('myKey', ['myValue'])
// 追加一个值到数组最后面
// 输出: {myKey:['myValue','myValue2']}
amis('schema').attr('myKey', 'myValue2', 'push')
// 追加一个值到数组最前面
// 输出: {myKey:['myValue3','myValue','myValue2']}
amis('schema').attr('myKey', 'myValue3', 'unshift')
// 替换整个 key 的值
// 输出: {myKey:{test:1}}
amis('schema').attr('myKey', { test: 1 }, 'replace')
// 合并一个对象到 key 的值
// 输出: {myKey:{test:1,test2:2}}
amis('schema').attr('myKey', { test2: 2 }, 'merge')
构建页面
使用 EaseAdmin 后你会发现原来用 AdonisJS 后端代码构建页面这么简单。
import amis from 'easeadmin/builder/amis'
import html from 'easeadmin/builder/html'
// 给页面设置标题
let page = amis('page').title('Welcome')
// 在页面上放置一个按钮
page.body(amis('button').label('Hello World').level('primary'))
// 在页面上放置多个按钮
page.body([
amis('button').label('First Button').level('primary'),
amis('button').label('Second Button').level('info').id('second'),
])
// 查找组件
let second = page.find('second')
// 移除组件的 level 属性
second.remove('level')
// 移除组件
second.remove()
// 不渲染组件
second.permission(false)
// 渲染为 HTML
html(page, {
title: string //页面标题
host?: string //静态文件的域名
inject?: string //自定义注入到页面的 HTML
props?: Record<string, any> //amis 属性
env?: Record<string, any> //amis 环境变量
})
代码转换
EaseAdmin 提供了一个 parser 方法来将 json 转换为 amis 代码。该功能也内置在了后台的 开发者 工具中。
import parser from 'easeadmin/builder/parser'
const result = parser({"type":"container", "body":"Hello World"})
console.log(result)
转换的代码
amis('container').body('Hello World')