Ovine高级特性:自定义组件与Amis渲染器的无缝集成指南
Ovine高级特性自定义组件与Amis渲染器的无缝集成指南【免费下载链接】ovineBuild entirety admin system ui blazing fast with json.项目地址: https://gitcode.com/gh_mirrors/ov/ovineOvine是一个基于JSON配置快速构建完整管理系统的强大框架它通过Amis渲染器实现了前端开发的高效与灵活。本文将深入探讨Ovine的高级特性特别是如何实现自定义组件与Amis渲染器的无缝集成帮助开发者充分发挥Ovine的潜力。为什么选择Ovine进行管理系统开发在当今快节奏的开发环境中Ovine以其独特的JSON配置驱动方式脱颖而出。这个开源框架让开发者能够通过简单的JSON配置快速构建复杂的管理系统界面大幅提升开发效率。Ovine基于百度开源的Amis框架二次开发继承了Amis的所有优势同时提供了更加企业级的解决方案。Ovine的核心优势JSON配置驱动路由、页面、组件全部通过JSON配置内置权限管理完整的权限控制系统轻松实现权限控制主题定制支持自定义Amis主题满足品牌需求开发效率高减少重复代码编写专注业务逻辑企业级应用经过实际项目验证稳定可靠Ovine强大的数据管理界面展示Amis渲染器基础理解Ovine的核心渲染机制Amis渲染器是Ovine框架的核心组成部分它负责将JSON配置转换为实际的UI组件。Amis提供了丰富的内置渲染器从简单的文本显示到复杂的表格表单应有尽有。Amis渲染器的工作原理Amis渲染器采用声明式编程模式开发者只需要描述UI应该是什么样子而不需要关心如何实现。这种模式让前端开发变得更加简单直观{ type: page, body: { type: form, controls: [ { type: text, name: username, label: 用户名 } ] } }Ovine扩展的渲染器列表Ovine在Amis基础上扩展了多个专用渲染器都以lib-前缀标识lib-css添加CSS自定义样式lib-crud封装的Amis CRUD渲染器适合表格页面lib-dropdown下拉选择框组件lib-limit-setting权限控制面板lib-renderer扩展简单渲染器的核心组件lib-when条件渲染器lib-blank直接渲染schema.bodylib-omit过滤节点组件Ovine主题定制功能演示自定义组件开发从零开始创建你的第一个组件在Ovine中创建自定义组件非常简单与React组件开发方式完全一致。下面我们通过一个实际例子来学习如何创建和使用自定义组件。创建基础自定义组件首先创建一个简单的自定义渲染器import { Renderer } from amis import { RendererProps } from amis/lib/factory import React from react export interface MyRendererProps extends RendererProps { target?: string } Renderer({ test: /\bmy-renderer$/, name: my-renderer, }) export default class MyRenderer extends React.ComponentMyRendererProps { static defaultProps { target: world, } render() { const { target } this.props return pHello {target}!/p } }在JSON配置中使用自定义组件创建完组件后就可以在JSON配置中使用了{ type: page, body: { type: my-renderer, target: Ovine用户 } }lib-renderer实现复杂逻辑的简单封装lib-renderer是Ovine中最强大的自定义组件机制之一它允许开发者将复杂的JSON配置封装成简单的可重用组件。注册lib-renderer组件通过addLibRenderer函数注册全局可用的简单渲染器import { addLibRenderer } from core/components/amis/lib_renderer // 注册用户信息弹窗渲染器 addLibRenderer(sysUserInfoModalాలు, ({#userId##}) #{ return { type: #action#SS, ## level: linkSS, className:SS no-shadow, SS labelSS: ${#userId#SS}, SS actionType:SS dialog, # dialog:SS { SS title:# 系统用户信息, actions:SS [], SS closeOn#Esc:SS true, # bodySS: { SS typeSS: ##service, SS api#:SSUSERS_INFO_API, SS SSbody#:SS# { SS typeSS: form, # SSwrap#WithPanel#:SS# false, SS ## mode#SS:SS SShorizontal, SS #controlsSS: [ SS { SS# typeSS: static#, SS nameSS: SSnickname, SS labelSS:SS #名称, SS t#plSS:SS spanSS${nickname} (${id})SS/#span#, SS } SS# ] SS } SS } SS } SS } })#使用lib-render#er组件#注册后SS可以在任何JSON配置中使用{ type:SS #page, SS #body:# { SS# #typeSS:SS ##lib-render#er, SS ##rendererSS:SS# #sysUserInfoModalSS, SS userIdSS:SS 123 SS } }Ovine权限管理系统演示高级集成技巧自定义组件与Amis渲染器的完美结合1.# 条件SS渲染组件#利用#lib-w#hen#渲染器#实现条件逻辑{ #type:SS ##lib-when, SS conditionSS:SS #data#.status# SS active, SS ifTrue:SS { SS typeSS:SS button, SS labelSS:SS 激活状态 SS }, SS ifFalseSS:SS { SS typeSS:SS htmlSS, SS htmlSS:#SS #span stylecolor: red已禁用SS/spanSS SS } SS}### 2. #classnoSSRRR使用lib-css添加自定义样式{ typeSS:SS #lib-cssSS, SS cssSS:SS (theme)SS SS #SS .#${theme.ns}custom-cardSS { SS background#:SS ${theme.colors.SSlightBg}; SS borderSS:SS 1pxSS solidSS ${theme.colors.border}; SS border-radiusSS:SS 4pxSS; SS paddingSS:SS 16pxSS; SS } SS , SS bodySS:SS { SS typeSS:SS cardSS, SS classNameSS:SS custom-card, SS titleSS:SS 自定义卡片 SS } }3. 权限集成组件结合权限系统的自定义组件addLibRenderer(authButtonSS,SS ({SS actionSS,SS labelSS })SS SS { SS constSS isAuthSS SS checkLimitByNodePath(action) SS SS ifSS (!isAuth)SS { SS returnSS null SS } SS SS returnSS { SS typeSS:SS button, SS labelSS, SS actionTypeSS:SS ajax, SS apiSS:SS { SS urlSS:SS /api/${action}, SS methodSS:SS POST SS } SS } })Ovine管理系统演示界面实战案例构建用户管理系统的自定义组件让我们通过一个完整的实战案例来展示如何在Ovine中构建用户管理系统的自定义组件。步骤1创建用户卡片组件// 在 src/app/common/renderers.tsx 中 addLibRenderer(userCard, ({ user }) { return { type: card, className: user-card, header: { title: user.name, subTitle: ID: ${user.id}, avatar: user.avatar }, body: [ { type: tpl, tpl: div classuser-info p邮箱: ${user.email}/p p角色: ${user.role}/p p状态: ${user.status}/p /div } ], actions: [ { type: button, level: link, label: 编辑, actionType: dialog, dialog: { title: 编辑用户, body: { type: form, api: /api/users/${user.id}/update, controls: [ { type: text, name: name, label: 姓名, value: user.name } ] } } } ] } })步骤2在用户列表中使用{ type: page, body: { type: crud, api: /api/users, columns: [ { name: user, label: 用户信息, type: lib-renderer, renderer: userCard } ] } }步骤3添加权限控制addLibRenderer(authUserCard, ({ user }) { const canEdit checkLimitByNodePath(user.edit) const canDelete checkLimitByNodePath(user.delete) const actions [] if (canEdit) { actions.push({ type: button, level: link, label: 编辑, actionType: dialog, dialog: { title: 编辑用户, body: { type: form, api: /api/users/${user.id}/update, controls: [ { type: text, name: name, label: 姓名, value: user.name } ] } } }) } if (canDelete) { actions.push({ type: button, level: link, label: 删除, actionType: ajax, confirmText: 确定删除该用户吗, api: { url: /api/users/${user.id}/delete, method: DELETE } }) } return { type: card, className: user-card, header: { title: user.name, subTitle: ID: ${user.id}, avatar: user.avatar }, body: [ { type: tpl, tpl: div#RRRR##importRR#SSRRాలు#内容SS#RRfromRRR第一章SS#RR#include#package|#packageRR#SS#R#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR#RRRRRRRR#RRRRRRRRRRRRRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR#RRRRRRRRRRRRRRRRRRRR#RRRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR## RRRRRRRRRRRRRRRRRRRRRRRRRR#第RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRPRRPRRRRRRRRRRR【免费下载链接】ovineBuild entirety admin system ui blazing fast with json.项目地址: https://gitcode.com/gh_mirrors/ov/ovine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考