创建 App
这是一个可选的应用结构,主要用于 图形编辑器 等需要分层渲染的场景。
App 负责承载多个 Leafer 实例分层 协同工作,将不同更新频率的内容分开渲染,以提升性能。
统一结构
App 默认可以通过 add() 方法添加多个自定义层。为了方便大家记忆和沟通,我们以现实世界的方式为常用的 Leafer 层进行拟物化命名,并支持通过配置快速添加。
ground?: Leafer
地面层 (背景层),位于最底部的 Leafer 实例,一般用于渲染背景、网格内容(可选)。
tree: Leafer
树结构 (主要内容层),位于中间的 Leafer 实例,相当于 HTML 中的 body。
sky: Leafer
天空层 (变化层),位于最顶部的 Leafer 实例,一般用来渲染 图形编辑器 实例。
我们以 图形编辑器 的例子来展示 App 的实际用法:
ts
import { App, Frame, Rect } from 'leafer-ui'
import { Editor } from '@leafer-in/editor' // 导入图形编辑器插件
import '@leafer-in/viewport' // 导入视口插件(可选)
const app = new App({
view: window,
fill: '#F2F2F2', // 背景色
tree: { type: 'design' }, // 添加 tree 层
sky: {} // 添加 sky 层
})
app.tree.add(Frame.one({ // 页面内容
children: [
Rect.one({ editable: true, fill: '#FEB027', cornerRadius: [20, 0, 0, 20] }, 100, 100),
Rect.one({ editable: true, fill: '#FFE04B', cornerRadius: [0, 20, 20, 0] }, 300, 100)
]
}, 100, 100, 500, 600))
app.sky.add(app.editor = new Editor()) // 添加图形编辑器,用于选中元素进行编辑操作
ts
import { App, Frame, Rect } from 'leafer-ui'
import '@leafer-in/editor' // 导入图形编辑器插件
import '@leafer-in/viewport' // 导入视口插件(可选)
const app = new App({
view: window,
fill: '#F2F2F2',
editor: {}, // 配置 editor 会自动创建并添加 app.editor 实例、tree 层、sky 层
// tree: { type: 'design' },
// sky: {}
})
app.tree.add(Frame.one({ // 页面内容
children: [
Rect.one({ editable: true, fill: '#FEB027', cornerRadius: [20, 0, 0, 20] }, 100, 100),
Rect.one({ editable: true, fill: '#FFE04B', cornerRadius: [0, 20, 20, 0] }, 300, 100)
]
}, 100, 100, 500, 600))
// app.sky.add(app.editor = new Editor()) // 添加图形编辑器,用于选中元素进行编辑操作
ts
import { App, Leafer, Frame, Rect } from 'leafer-ui'
import { Editor } from '@leafer-in/editor' // 导入图形编辑器插件
import '@leafer-in/viewport' // 导入视口插件(可选)
const app = new App({ view: window, fill: '#F2F2F2' })
app.add(app.tree = new Leafer({ type: 'design' })) // 添加 tree 层
app.add(app.sky = new Leafer()) // 添加 sky 层
app.tree.add(Frame.one({ // 页面内容
children: [
Rect.one({ editable: true, fill: '#FEB027', cornerRadius: [20, 0, 0, 20] }, 100, 100),
Rect.one({ editable: true, fill: '#FFE04B', cornerRadius: [0, 20, 20, 0] }, 300, 100)
]
}, 100, 100, 500, 600))
app.sky.add(app.editor = new Editor()) // 添加图形编辑器,用于选中元素进行编辑操作