@cniot/mdd-render-engine

0.1.1-beta.12 • Public • Published

模型驱动渲染引擎

引擎部分不包含 UI 逻辑,支持全平台。各个平台的渲染部分通过注册 components 来实现。 在线文档参考: https://yuque.antfin.com/docs/share/65a39ca0-f5a2-49aa-8c0f-3f3287597a67?# 《模型驱动引擎页面如何使用》

直接使用

  • pc
import * as Next from '@cainiaofe/cn-ui';
import MDDRenderEngine, {setActions, setComponents} from '@cniot/mdd-render-engine';

import {actions, components} from '@cniot/mdd-render-pc-ftp';
import '@cniot/mdd-ftp-render/build/index.css';

setActions(actions);
setComponents(Next);
setComponents(components);


const schema = {}
<MDDRenderEngine
  // 要渲染的 schema
  schema={schema}
  // 渲染完成
  onReady={(engine)=>{}}
  // 动作处理器 map 可省略
  actions = {actions}
>

  • rn

import {View, Text} from 'react-native';
import MDDRenderEngine from '@cniot/mdd-render-engine/';

import {actions, components} from '@cniot/mdd-rn-ftp';

setActions(actions);
setComponents(Next);
setComponents(components);

const schema = {}
<MDDRenderEngine
  // 要渲染的 schema
  schema={schema}
  // 渲染完成
  onReady={(engine)=>{}}
>

module

为了模型驱动页面的可扩展性,我们设计了 module 。项目可以向引擎的全局(或某个实例)注入模块,可以是渲染函数,也可以是自己定义的逻辑处理函数,或者是数据

  • 全局注册和获取

import MDDRenderEngine, { RenderEngine } from '@cniot/mdd-render-engine/build/rn/index.es.js';

// 全局输入模块, 每个实例都可以获得这个模块
RenderEngine.setModule("def", function(){
  // todo
})

// 获取 def 函数
const def = RenderEngine.getModule("def")

  • 实例注册和获取

import MDDRenderEngine, { RenderEngine } from '@cniot/mdd-render-engine/build/rn/index.es.js';

const engine = new RenderEngine();
// 在示例上添加模块
engine.setModule("def", function(){
  // todo
})

// 自定义4个默认事件
engine.removeModule("dialog");
engine.setModule("dialog", function(){
  // todo
});

<MDDRenderEngine schema={{}} engine={engine}>

处理器

处理器是 schema 定义的 4 个默认动作 ajax/dialog/url/drawer,目前 PC 部分已经包含了默认实现。如果想要自定义实现逻辑可以按照如何方式来覆盖


import MDDRenderEngine, { RenderEngine } from '@cniot/mdd-render-engine/pc';

const engine = new RenderEngine();

// 自定义4个默认事件
// 先删除已注册的module
engine.removeModule("dialog");

// 再注册新的module,注意4个默认动作默认key: ajax, dialog, url, drawer
engine.setModule("dialog", function(){
  // todo
});

<MDDRenderEngine schema={{}} engine={engine}>

国际化

import MDDRenderEngine, { RenderEngine, i18n } from '@cniot/mdd-render-engine/pc';

i18n.setLocaleMessages({
  "查询":"Search"
})

// 组件内部是通过界面配置的值,查询对应国际化语言文案的。所以这里的 key 是中文

更新记录

0.1.1-beta.12

  • 支持 extendsModule 中的 onReady 拿到 engine 实例
  • 动态取值格式要求必须$加大写字母($[A-Z].+)

Readme

Keywords

none

Package Sidebar

Install

npm i @cniot/mdd-render-engine

Weekly Downloads

10

Version

0.1.1-beta.12

License

ISC

Unpacked Size

39.8 kB

Total Files

8

Last publish

Collaborators

  • ruowen
  • hxuena
  • lanjian.yj
  • qige.yzx
  • mingnan.wmn
  • xiaobc
  • wangyuhao.wyh
  • rio7
  • wukidy
  • jun.lu
  • zhouhuan