mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-12-03 00:08:07 +08:00
26 lines
35 KiB
HTML
26 lines
35 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US" dir="ltr">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>RUNTIME | tmagic-editor</title>
|
||
<meta name="description" content="页面可视化平台">
|
||
<meta name="generator" content="VitePress v1.6.4">
|
||
<link rel="preload stylesheet" href="/tmagic-editor/docs/assets/style.CZrNMGLM.css" as="style">
|
||
<link rel="preload stylesheet" href="/tmagic-editor/docs/vp-icons.css" as="style">
|
||
|
||
<script type="module" src="/tmagic-editor/docs/assets/app.B68obRPL.js"></script>
|
||
<link rel="preload" href="/tmagic-editor/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
||
<link rel="modulepreload" href="/tmagic-editor/docs/assets/chunks/theme.CXRxPj6D.js">
|
||
<link rel="modulepreload" href="/tmagic-editor/docs/assets/chunks/framework.DkLJC2NO.js">
|
||
<link rel="modulepreload" href="/tmagic-editor/docs/assets/guide_runtime.md.6KshBZZr.lean.js">
|
||
<meta name="theme-color" content="#646cff">
|
||
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
||
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
||
</head>
|
||
<body>
|
||
<div id="app"><div class="Layout" data-v-36591270><!--[--><!--]--><!--[--><span tabindex="-1" data-v-5856d2bc></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-5856d2bc>Skip to content</a><!--]--><!----><header class="VPNav" data-v-36591270 data-v-fcf6b202><div class="VPNavBar" data-v-fcf6b202 data-v-d86d8915><div class="wrapper" data-v-d86d8915><div class="container" data-v-d86d8915><div class="title" data-v-d86d8915><div class="VPNavBarTitle has-sidebar" data-v-d86d8915 data-v-4e485ca3><a class="title" href="/tmagic-editor/docs/" data-v-4e485ca3><!--[--><!--]--><!--[--><img class="VPImage logo" src="./favicon.png" alt data-v-d597c09a><!--]--><span data-v-4e485ca3>tmagic-editor</span><!--[--><!--]--></a></div></div><div class="content" data-v-d86d8915><div class="content-body" data-v-d86d8915><!--[--><!--]--><div class="VPNavBarSearch search" data-v-d86d8915><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-d86d8915 data-v-ff5533c3><span id="main-nav-aria-label" class="visually-hidden" data-v-ff5533c3> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/tmagic-editor/docs/guide/" tabindex="0" data-v-ff5533c3 data-v-67fc5a8e><!--[--><span data-v-67fc5a8e>文档</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/tmagic-editor/docs/api/editor/props.html" tabindex="0" data-v-ff5533c3 data-v-67fc5a8e><!--[--><span data-v-67fc5a8e>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/tmagic-editor/docs/form-config/fields/text.html" tabindex="0" data-v-ff5533c3 data-v-67fc5a8e><!--[--><span data-v-67fc5a8e>表单配置</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/Tencent/tmagic-editor/releases" target="_blank" rel="noreferrer" tabindex="0" data-v-ff5533c3 data-v-67fc5a8e><!--[--><span data-v-67fc5a8e>更新日志</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://tencent.github.io/tmagic-editor/playground/index.html" target="_blank" rel="noreferrer" tabindex="0" data-v-ff5533c3 data-v-67fc5a8e><!--[--><span data-v-67fc5a8e>Playground</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-d86d8915 data-v-b495c88f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-b495c88f data-v-2736d437 data-v-6c1c63e9><span class="check" data-v-6c1c63e9><span class="icon" data-v-6c1c63e9><!--[--><span class="vpi-sun sun" data-v-2736d437></span><span class="vpi-moon moon" data-v-2736d437></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-d86d8915 data-v-c0c31a4e data-v-98e6c5f3><!--[--><a class="VPSocialLink no-icon" href="https://github.com/Tencent/tmagic-editor" aria-label="github" target="_blank" rel="noopener" data-v-98e6c5f3 data-v-af4e3f83><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-d86d8915 data-v-a0fb53fe data-v-55d61167><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-55d61167><span class="vpi-more-horizontal icon" data-v-55d61167></span></button><div class="menu" data-v-55d61167><div class="VPMenu" data-v-55d61167 data-v-d54e0581><!----><!--[--><!--[--><!----><div class="group" data-v-a0fb53fe><div class="item appearance" data-v-a0fb53fe><p class="label" data-v-a0fb53fe>Appearance</p><div class="appearance-action" data-v-a0fb53fe><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a0fb53fe data-v-2736d437 data-v-6c1c63e9><span class="check" data-v-6c1c63e9><span class="icon" data-v-6c1c63e9><!--[--><span class="vpi-sun sun" data-v-2736d437></span><span class="vpi-moon moon" data-v-2736d437></span><!--]--></span></span></button></div></div></div><div class="group" data-v-a0fb53fe><div class="item social-links" data-v-a0fb53fe><div class="VPSocialLinks social-links-list" data-v-a0fb53fe data-v-98e6c5f3><!--[--><a class="VPSocialLink no-icon" href="https://github.com/Tencent/tmagic-editor" aria-label="github" target="_blank" rel="noopener" data-v-98e6c5f3 data-v-af4e3f83><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-d86d8915 data-v-fe6041d6><span class="container" data-v-fe6041d6><span class="top" data-v-fe6041d6></span><span class="middle" data-v-fe6041d6></span><span class="bottom" data-v-fe6041d6></span></span></button></div></div></div></div><div class="divider" data-v-d86d8915><div class="divider-line" data-v-d86d8915></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-36591270 data-v-cf58124c><div class="container" data-v-cf58124c><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-cf58124c><span class="vpi-align-left menu-icon" data-v-cf58124c></span><span class="menu-text" data-v-cf58124c>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-cf58124c data-v-b834c8bc><button data-v-b834c8bc>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-36591270 data-v-5ef8d95b><div class="curtain" data-v-5ef8d95b></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-5ef8d95b><span class="visually-hidden" id="sidebar-aria-label" data-v-5ef8d95b> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-0aa5b47f><section class="VPSidebarItem level-0 has-active" data-v-0aa5b47f data-v-169b0f8b><div class="item" role="button" tabindex="0" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><h2 class="text" data-v-169b0f8b>文档</h2><!----></div><div class="items" data-v-169b0f8b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/introduction.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>介绍</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>快速开始</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/conception.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>基础概念</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/publish.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>页面发布</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/runtime.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>RUNTIME</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/component.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>组件开发</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/editor-expand.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>编辑器扩展</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/migration.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>升级到1.5.x</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-0aa5b47f><section class="VPSidebarItem level-0" data-v-0aa5b47f data-v-169b0f8b><div class="item" role="button" tabindex="0" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><h2 class="text" data-v-169b0f8b>进阶指南</h2><!----></div><div class="items" data-v-169b0f8b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/advanced/js-schema.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>JS Schema</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/advanced/layout.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>布局原理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/advanced/page.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>页面渲染</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/advanced/coupling.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>联动原理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/advanced/code-block.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>代码块</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/advanced/data-source.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>数据源</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/advanced/tmagic-ui.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>@tmagic/ui</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/advanced/tmagic-form.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>@tmagic/form</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-0aa5b47f><section class="VPSidebarItem level-0" data-v-0aa5b47f data-v-169b0f8b><div class="item" role="button" tabindex="0" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><h2 class="text" data-v-169b0f8b>教程</h2><!----></div><div class="items" data-v-169b0f8b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/tutorial/" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>写在前面</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/tutorial/hello-world.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>1.Hello World</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/tutorial/runtime.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>2.Runtime</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-169b0f8b data-v-169b0f8b><div class="item" data-v-169b0f8b><div class="indicator" data-v-169b0f8b></div><a class="VPLink link link" href="/tmagic-editor/docs/guide/tutorial/render.html" data-v-169b0f8b><!--[--><p class="text" data-v-169b0f8b>3.DSL解析渲染</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-36591270 data-v-1a7b61fc><div class="VPDoc has-sidebar has-aside" data-v-1a7b61fc data-v-42ea4fcb><!--[--><!--]--><div class="container" data-v-42ea4fcb><div class="aside" data-v-42ea4fcb><div class="aside-curtain" data-v-42ea4fcb></div><div class="aside-container" data-v-42ea4fcb><div class="aside-content" data-v-42ea4fcb><div class="VPDocAside" data-v-42ea4fcb data-v-1d34bb44><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-1d34bb44 data-v-dcee81d9><div class="content" data-v-dcee81d9><div class="outline-marker" data-v-dcee81d9></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-dcee81d9>On this page</div><ul class="VPDocOutlineItem root" data-v-dcee81d9 data-v-f877905d><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-1d34bb44></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-42ea4fcb><div class="content-container" data-v-42ea4fcb><!--[--><!--]--><main class="main" data-v-42ea4fcb><div style="position:relative;" class="vp-doc _tmagic-editor_docs_guide_runtime" data-v-42ea4fcb><div><h1 id="runtime" tabindex="-1">RUNTIME <a class="header-anchor" href="#runtime" aria-label="Permalink to "RUNTIME""></a></h1><p>本章详细介绍如何深入理解tmagic-editor的打包,以及如何根据需求定制,修改tmagic-editor的页面打包发布方案。页面发布、打包相关的定制化开发,需要使用tmagic-editor的业务方,搭建好基于开源tmagic-editor的管理平台、存储服务等配套设施。</p><h2 id="实现一个-runtime" tabindex="-1">实现一个 runtime <a class="header-anchor" href="#实现一个-runtime" aria-label="Permalink to "实现一个 runtime""></a></h2><p>在 <a href="./advanced/tmagic-ui.html">@tmagic/ui</a> 部分,我们已经说过,runtime 和 UI 是配套实现的。每个版本的 runtime 都需要一个对应的 UI 来作为渲染器,实现渲染 DSL 呈现页面的功能。</p><h3 id="ui" tabindex="-1">UI <a class="header-anchor" href="#ui" aria-label="Permalink to "UI""></a></h3><p>一个 UI 应该至少包含一个渲染器,来实现<a href="./advanced/page.html">页面渲染</a>。同时可以提供一些基础组件。具体实现可以参考<a href="./advanced/tmagic-ui.html">@tmagic/ui</a>。</p><h3 id="page" tabindex="-1">page <a class="header-anchor" href="#page" aria-label="Permalink to "page""></a></h3><p>runtime 的 <code>page</code> 部分,就是真实项目页面的渲染环境。发布出去的项目页都需要基于该部分来实现渲染功能。而 <code>page</code> 的主要逻辑,就是需要加载 UI,同时实现业务方需要的业务逻辑,比如:</p><ul><li>提供页面需要的全局 api</li><li>业务需要的特殊实现逻辑</li><li>加载第三方全局组件/插件等</li></ul><p>具体的 page 实现示例,可以参考</p><ul><li><a href="https://github.com/Tencent/tmagic-editor/blob/master/runtime/vue/page" target="_blank" rel="noreferrer">vue runtime</a></li><li><a href="https://github.com/Tencent/tmagic-editor/blob/master/runtime/react/page" target="_blank" rel="noreferrer">react runtime</a></li></ul><h3 id="playground" tabindex="-1">playground <a class="header-anchor" href="#playground" aria-label="Permalink to "playground""></a></h3><p>runtime 的 <code>playground</code> 部分,和 <code>page</code> 做的事情几乎一致,业务方可以包含上述 <code>page</code> 所拥有的全部能力。但是,因为 playground 需要被编辑器加载,作为编辑器中页面模拟器的渲染容器,和编辑器通信,接受编辑器中组件的增删改查。所以,除了保持和 <code>page</code> 一样的渲染逻辑之外,<code>playground</code> 还要额外实现一套既定通信内容和 api,才能实现和编辑器的通信功能。</p><h4 id="onruntimeready" tabindex="-1">onRuntimeReady <a class="header-anchor" href="#onruntimeready" aria-label="Permalink to "onRuntimeReady""></a></h4><p><strong>在 playground 页面渲染后</strong>,需要调用接口通知编辑器完成加载。该调用需要传入一个参数 API,即挂载了增删改查功能的对象示例,提供给编辑器。</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">window.magic?.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">onRuntimeReady</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">API</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div><h4 id="onpageelupdate" tabindex="-1">onPageElUpdate <a class="header-anchor" href="#onpageelupdate" aria-label="Permalink to "onPageElUpdate""></a></h4><p><strong>playground 在每次更新了页面配置后</strong>,调用一次 onPageElUpdate 并传入一个 DOM 节点,该方法作用是传入一个页面渲染组件的根节点,用来告知编辑器的模拟器遮罩如何作出反应。</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">window.magic.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">onPageElUpdate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(document.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">querySelector</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'.magic-ui-page'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">));</span></span></code></pre></div><h4 id="提供-api" tabindex="-1">提供 API <a class="header-anchor" href="#提供-api" aria-label="Permalink to "提供 API""></a></h4><table tabindex="0"><thead><tr><th>API</th><th>说明</th><th>参数</th></tr></thead><tbody><tr><td>updateRootConfig</td><td>根节点更新</td><td><code>root: MApp</code></td></tr><tr><td>updatePageId</td><td>更新当前页面 id</td><td><code>id: string</code></td></tr><tr><td>select</td><td>选中组件</td><td><code>id: string</code></td></tr><tr><td>add</td><td>增加组件</td><td>{ <code>config</code> , <code>root</code> }: <code>UpdateData</code></td></tr><tr><td>update</td><td>更新组件</td><td>{ <code>config</code> , <code>root</code> }: <code>UpdateData</code></td></tr><tr><td>remove</td><td>删除组件</td><td>{ <code>config</code> , <code>root</code> }: <code>UpdateData</code></td></tr><tr><td>sortNode</td><td>组件在容器间排序</td><td>{ <code>src</code> , <code>dist</code>, <code>root</code> }: <code>SortEventData</code></td></tr></tbody></table><p>runtime 的实现示例,可以参考tmagic-editor提供的:</p><ul><li><a href="https://github.com/Tencent/tmagic-editor/blob/master/runtime/vue" target="_blank" rel="noreferrer">vue runtime</a></li><li><a href="https://github.com/Tencent/tmagic-editor/blob/master/runtime/react" target="_blank" rel="noreferrer">react runtime</a></li></ul><h3 id="页面发布" tabindex="-1">页面发布 <a class="header-anchor" href="#页面发布" aria-label="Permalink to "页面发布""></a></h3><p>如介绍中提到的,tmagic-editor页面发布方案,是对构建产物 <code>page/index.html</code> 进行项目信息注入。项目信息就是搭建平台存储的页面配置。发布时,将注入项目信息的 <code>page/index.html</code> 发布出去即可。</p><h2 id="版本管理" tabindex="-1">版本管理 <a class="header-anchor" href="#版本管理" aria-label="Permalink to "版本管理""></a></h2><p>基于上一步提到的打包原理,每次构建后,得到的产物都可以进行归档编号,存为版本。涉及到的组件改动和新增修改,体现在各个版本中。</p><img src="https://image.video.qpic.cn/oa_88b7d-32_1233288257_1633783105283986" width="40%" alt="版本选择"><p>版本管理具体如何实现,这取决于使用tmagic-editor的业务方。版本管理具有如下优点:</p><ol><li>对于已经配置好发布的项目,使用固定版本,不会被新版本的特性影响,保证项目线上稳定运行</li><li>发布的新版本如果出现问题,可以及时回退选择使用旧版本</li></ol><h2 id="结合业务定制" tabindex="-1">结合业务定制 <a class="header-anchor" href="#结合业务定制" aria-label="Permalink to "结合业务定制""></a></h2><p>tmagic-editor的静态资源构建,项目配置保存,页面发布,在tmagic-editor的提供的示例方案中,流程是:</p><ol><li>触发构建,执行流水线,基于 runtime 执行 build</li><li>将构建产物归档推送至 cdn,存为一个ui版本</li><li>项目配保存后,项目发布时,将项目配置发布至 CDN 存储为 DSL.js,同时根据当前项目使用的ui版本,获取到 page/index.html,将 DSL.js 引用方式以 script 标签形式写入。</li><li>将注入信息的 page/index.html 发布为项目静态资源 act.html</li><li>线上可加载 act.html 访问项目</li></ol><p>其中各个步骤的定制,可以交由业务方根据tmagic-editor提供的示例进行自定义修改。</p></div></div></main><footer class="VPDocFooter" data-v-42ea4fcb data-v-8365344e><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-8365344e><span class="visually-hidden" id="doc-footer-aria-label" data-v-8365344e>Pager</span><div class="pager" data-v-8365344e><a class="VPLink link pager-link prev" href="/tmagic-editor/docs/guide/publish.html" data-v-8365344e><!--[--><span class="desc" data-v-8365344e>Previous page</span><span class="title" data-v-8365344e>页面发布</span><!--]--></a></div><div class="pager" data-v-8365344e><a class="VPLink link pager-link next" href="/tmagic-editor/docs/guide/component.html" data-v-8365344e><!--[--><span class="desc" data-v-8365344e>Next page</span><span class="title" data-v-8365344e>组件开发</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-36591270 data-v-a79f70ae><div class="container" data-v-a79f70ae><p class="message" data-v-a79f70ae>Powered by 腾讯视频会员平台技术中心</p><p class="copyright" data-v-a79f70ae>Copyright (C) 2025 Tencent.</p></div></footer><!--[--><!--]--></div></div>
|
||
<script>window.__VP_HASH_MAP__=JSON.parse("{\"api_editor_codeblockservicemethods.md\":\"BX3_siEm\",\"api_editor_componentlistservicemethods.md\":\"Xb7YtEXQ\",\"api_editor_datasourceservicemethods.md\":\"Cww3zNKG\",\"api_editor_editorserviceevents.md\":\"gcFs85FS\",\"api_editor_editorservicemethods.md\":\"DKiiyoPz\",\"api_editor_events.md\":\"BykK47dJ\",\"api_editor_eventsservicemethods.md\":\"DM8w_EeN\",\"api_editor_historyserviceevents.md\":\"B7KupcqD\",\"api_editor_historyservicemethods.md\":\"B4obX-T3\",\"api_editor_props.md\":\"DMerdVwC\",\"api_editor_propsserviceevents.md\":\"Bhooxxnn\",\"api_editor_propsservicemethods.md\":\"Bz1ljBiU\",\"api_editor_slots.md\":\"CLNSmLrl\",\"api_editor_storageservicemethods.md\":\"Ca5cmMwR\",\"api_editor_uiservicemethods.md\":\"C07HQB4i\",\"api_form_form-dialog-events.md\":\"BQrVPpPK\",\"api_form_form-dialog-methods.md\":\"DEL0Eh3K\",\"api_form_form-dialog-props.md\":\"BlahsoDf\",\"api_form_form-events.md\":\"CgPQ3xhz\",\"api_form_form-methods.md\":\"DVzlGQIE\",\"api_form_form-props.md\":\"B_-pPs7j\",\"api_stage_coreevents.md\":\"BJgI_eWC\",\"api_stage_coremethods.md\":\"cDBiJupB\",\"api_table_events.md\":\"CvXtPUgT\",\"api_table_methods.md\":\"C_4xFmoD\",\"api_table_props.md\":\"Cvxm72pY\",\"form-config_compare.md\":\"CxuguNFe\",\"form-config_fields_cascader.md\":\"DDs-fgTi\",\"form-config_fields_checkbox.md\":\"9hHkO7zL\",\"form-config_fields_color-picker.md\":\"Bwmjw37v\",\"form-config_fields_date-picker.md\":\"DHFhUgO7\",\"form-config_fields_datetime-picker.md\":\"DBfKXCAu\",\"form-config_fields_display.md\":\"BaiQUX7K\",\"form-config_fields_hidden.md\":\"CY0o0qcd\",\"form-config_fields_link.md\":\"BO3PrLPD\",\"form-config_fields_number.md\":\"Cd3cTbQs\",\"form-config_fields_radio.md\":\"BuEqISL1\",\"form-config_fields_select.md\":\"D-hxYaPx\",\"form-config_fields_switch.md\":\"DRJauj9b\",\"form-config_fields_text.md\":\"D7E6aVnZ\",\"form-config_fields_textarea.md\":\"BytSbPPK\",\"form-config_fields_time-picker.md\":\"Cqzj5cz_\",\"form-config_layout.md\":\"2h_UimI8\",\"form-config_relate.md\":\"D4BEna2n\",\"guide_advanced_code-block.md\":\"B8iGTN8d\",\"guide_advanced_coupling.md\":\"DIxoB53H\",\"guide_advanced_data-source.md\":\"DG0DsdJV\",\"guide_advanced_js-schema.md\":\"HvE43RGl\",\"guide_advanced_layout.md\":\"B3q7H8Pu\",\"guide_advanced_page.md\":\"Db2dMbH0\",\"guide_advanced_tmagic-form.md\":\"Ctv1XIF5\",\"guide_advanced_tmagic-ui.md\":\"BKuDBLIF\",\"guide_component.md\":\"BxUtu8_5\",\"guide_conception.md\":\"BPjbVwPx\",\"guide_editor-expand.md\":\"BDIeQ45u\",\"guide_index.md\":\"DKdfuR9D\",\"guide_introduction.md\":\"CTlEAu5R\",\"guide_migration.md\":\"DF5WlNCT\",\"guide_publish.md\":\"BxM8UPuD\",\"guide_runtime.md\":\"6KshBZZr\",\"guide_tutorial_hello-world.md\":\"BwBB0sLQ\",\"guide_tutorial_index.md\":\"DeQI3m9W\",\"guide_tutorial_render.md\":\"CmB0S1C1\",\"guide_tutorial_runtime.md\":\"DZf5WVK6\",\"index.md\":\"_vBFVjCB\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"tmagic-editor\",\"description\":\"页面可视化平台\",\"base\":\"/tmagic-editor/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"./favicon.png\",\"search\":{\"provider\":\"local\"},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/Tencent/tmagic-editor\"}],\"footer\":{\"message\":\"Powered by 腾讯视频会员平台技术中心\",\"copyright\":\"Copyright (C) 2025 Tencent.\"},\"nav\":[{\"text\":\"文档\",\"link\":\"/guide/\",\"activeMatch\":\"/guide/\"},{\"text\":\"API\",\"link\":\"/api/editor/props\",\"activeMatch\":\"/api/\"},{\"text\":\"表单配置\",\"link\":\"/form-config/fields/text\",\"activeMatch\":\"/form-config/\"},{\"text\":\"更新日志\",\"link\":\"https://github.com/Tencent/tmagic-editor/releases\"},{\"text\":\"Playground\",\"link\":\"https://tencent.github.io/tmagic-editor/playground/index.html\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"文档\",\"items\":[{\"text\":\"介绍\",\"link\":\"/guide/introduction.md\"},{\"text\":\"快速开始\",\"link\":\"/guide/\"},{\"text\":\"基础概念\",\"link\":\"/guide/conception.md\"},{\"text\":\"页面发布\",\"link\":\"/guide/publish.md\"},{\"text\":\"RUNTIME\",\"link\":\"/guide/runtime.md\"},{\"text\":\"组件开发\",\"link\":\"/guide/component.md\"},{\"text\":\"编辑器扩展\",\"link\":\"/guide/editor-expand.md\"},{\"text\":\"升级到1.5.x\",\"link\":\"/guide/migration.md\"}]},{\"text\":\"进阶指南\",\"items\":[{\"text\":\"JS Schema\",\"link\":\"/guide/advanced/js-schema.md\"},{\"text\":\"布局原理\",\"link\":\"/guide/advanced/layout.md\"},{\"text\":\"页面渲染\",\"link\":\"/guide/advanced/page.md\"},{\"text\":\"联动原理\",\"link\":\"/guide/advanced/coupling.md\"},{\"text\":\"代码块\",\"link\":\"/guide/advanced/code-block.md\"},{\"text\":\"数据源\",\"link\":\"/guide/advanced/data-source.md\"},{\"text\":\"@tmagic/ui\",\"link\":\"/guide/advanced/tmagic-ui.md\"},{\"text\":\"@tmagic/form\",\"link\":\"/guide/advanced/tmagic-form.md\"}]},{\"text\":\"教程\",\"items\":[{\"text\":\"写在前面\",\"link\":\"/guide/tutorial/\"},{\"text\":\"1.Hello World\",\"link\":\"/guide/tutorial/hello-world.md\"},{\"text\":\"2.Runtime\",\"link\":\"/guide/tutorial/runtime.md\"},{\"text\":\"3.DSL解析渲染\",\"link\":\"/guide/tutorial/render.md\"}]}],\"/api/\":[{\"text\":\"编辑器\",\"items\":[{\"text\":\"Editor组件\",\"items\":[{\"text\":\"props\",\"link\":\"/api/editor/props.md\"},{\"text\":\"slots\",\"link\":\"/api/editor/slots.md\"},{\"text\":\"events\",\"link\":\"/api/editor/events.md\"}]},{\"text\":\"editorService\",\"items\":[{\"text\":\"方法\",\"link\":\"/api/editor/editorServiceMethods.md\"},{\"text\":\"事件\",\"link\":\"/api/editor/editorServiceEvents.md\"}]},{\"text\":\"propsService\",\"items\":[{\"text\":\"方法\",\"link\":\"/api/editor/propsServiceMethods.md\"},{\"text\":\"事件\",\"link\":\"/api/editor/propsServiceEvents.md\"}]},{\"text\":\"historyService\",\"items\":[{\"text\":\"方法\",\"link\":\"/api/editor/historyServiceMethods.md\"},{\"text\":\"事件\",\"link\":\"/api/editor/historyServiceEvents.md\"}]},{\"text\":\"eventsService\",\"link\":\"/api/editor/eventsServiceMethods.md\"},{\"text\":\"uiService\",\"link\":\"/api/editor/uiServiceMethods.md\"},{\"text\":\"codeBlockService\",\"link\":\"/api/editor/codeBlockServiceMethods.md\"},{\"text\":\"componentListService\",\"link\":\"/api/editor/componentListServiceMethods.md\"},{\"text\":\"storageService\",\"link\":\"/api/editor/storageServiceMethods.md\"}]},{\"text\":\"表单\",\"items\":[{\"text\":\"Form组件\",\"items\":[{\"text\":\"props\",\"link\":\"/api/form/form-props\"},{\"text\":\"methods\",\"link\":\"/api/form/form-methods\"},{\"text\":\"events\",\"link\":\"/api/form/form-events\"}]},{\"text\":\"FormDialog组件\",\"items\":[{\"text\":\"props\",\"link\":\"/api/form/form-dialog-props\"},{\"text\":\"methods\",\"link\":\"/api/form/form-dialog-methods\"},{\"text\":\"events\",\"link\":\"/api/form/form-dialog-events\"}]}]},{\"text\":\"表格\",\"items\":[{\"text\":\"Table组件\",\"items\":[{\"text\":\"props\",\"link\":\"/api/table/props\"},{\"text\":\"methods\",\"link\":\"/api/table/methods\"},{\"text\":\"events\",\"link\":\"/api/table/events\"}]}]},{\"text\":\"stage\",\"items\":[{\"text\":\"StageCore\",\"items\":[{\"text\":\"方法\",\"link\":\"/api/stage/coreMethods\"},{\"text\":\"事件\",\"link\":\"/api/stage/coreEvents\"}]}]}],\"/form-config/\":[{\"text\":\"基础配置\",\"items\":[{\"text\":\"Input输入框\",\"link\":\"/form-config/fields/text.md\"},{\"text\":\"Textarea文本域\",\"link\":\"/form-config/fields/textarea.md\"},{\"text\":\"InputNumber计数器\",\"link\":\"/form-config/fields/number.md\"},{\"text\":\"Display只读文本\",\"link\":\"/form-config/fields/display.md\"},{\"text\":\"Hidden隐藏域\",\"link\":\"/form-config/fields/hidden.md\"},{\"text\":\"Link链接\",\"link\":\"/form-config/fields/link.md\"},{\"text\":\"Checkbox多选框\",\"link\":\"/form-config/fields/checkbox.md\"},{\"text\":\"Radio单选框\",\"link\":\"/form-config/fields/radio.md\"},{\"text\":\"Switch开关\",\"link\":\"/form-config/fields/switch.md\"},{\"text\":\"Select选择器\",\"link\":\"/form-config/fields/select.md\"},{\"text\":\"Cascader级联选择器\",\"link\":\"/form-config/fields/cascader.md\"},{\"text\":\"ColorPicker颜色选择器\",\"link\":\"/form-config/fields/color-picker.md\"},{\"text\":\"DatePick日期选择器\",\"link\":\"/form-config/fields/date-picker.md\"},{\"text\":\"DatetimePick日期时间选择器\",\"link\":\"/form-config/fields/datetime-picker.md\"},{\"text\":\"TimePick时间选择器\",\"link\":\"/form-config/fields/time-picker.md\"}]},{\"text\":\"布局配置\",\"items\":[{\"text\":\"布局\",\"link\":\"/form-config/layout.md\"}]},{\"text\":\"联动配置\",\"items\":[{\"text\":\"联动\",\"link\":\"/form-config/relate.md\"}]},{\"text\":\"表单对比\",\"items\":[{\"text\":\"表单对比\",\"link\":\"/form-config/compare.md\"}]}]}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
||
|
||
</body>
|
||
</html> |