2021-05-18 21:49:30 +08:00

94 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>DSL设计 | h5-dooring</title>
<meta name="generator" content="VuePress 1.8.0">
<meta name="description" content="">
<link rel="preload" href="/doc/assets/css/0.styles.690c58c3.css" as="style"><link rel="preload" href="/doc/assets/js/app.b8bba05a.js" as="script"><link rel="preload" href="/doc/assets/js/18.81ac15ea.js" as="script"><link rel="preload" href="/doc/assets/js/2.a5de04a4.js" as="script"><link rel="preload" href="/doc/assets/js/22.eb3fcb45.js" as="script"><link rel="prefetch" href="/doc/assets/js/10.2d5d3aaa.js"><link rel="prefetch" href="/doc/assets/js/11.d3f84a40.js"><link rel="prefetch" href="/doc/assets/js/12.d4cc4a96.js"><link rel="prefetch" href="/doc/assets/js/13.96be485c.js"><link rel="prefetch" href="/doc/assets/js/14.6f2488ca.js"><link rel="prefetch" href="/doc/assets/js/15.aec16679.js"><link rel="prefetch" href="/doc/assets/js/16.c8d40261.js"><link rel="prefetch" href="/doc/assets/js/17.84ee6300.js"><link rel="prefetch" href="/doc/assets/js/19.67f92c26.js"><link rel="prefetch" href="/doc/assets/js/20.f0a28bd8.js"><link rel="prefetch" href="/doc/assets/js/21.951176bf.js"><link rel="prefetch" href="/doc/assets/js/23.6a4f2d96.js"><link rel="prefetch" href="/doc/assets/js/24.daed6430.js"><link rel="prefetch" href="/doc/assets/js/25.51e83a6e.js"><link rel="prefetch" href="/doc/assets/js/26.e6aa3510.js"><link rel="prefetch" href="/doc/assets/js/27.5080a3bf.js"><link rel="prefetch" href="/doc/assets/js/28.55620880.js"><link rel="prefetch" href="/doc/assets/js/29.e89094bb.js"><link rel="prefetch" href="/doc/assets/js/3.ececc857.js"><link rel="prefetch" href="/doc/assets/js/30.bf067e11.js"><link rel="prefetch" href="/doc/assets/js/31.29d66811.js"><link rel="prefetch" href="/doc/assets/js/4.1eeab90b.js"><link rel="prefetch" href="/doc/assets/js/5.315fb3a4.js"><link rel="prefetch" href="/doc/assets/js/6.f057afa6.js"><link rel="prefetch" href="/doc/assets/js/7.078f0030.js"><link rel="prefetch" href="/doc/assets/js/8.63e7a89b.js"><link rel="prefetch" href="/doc/assets/js/9.5e6217e4.js">
<link rel="stylesheet" href="/doc/assets/css/0.styles.690c58c3.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/doc/" class="home-link router-link-active"><!----> <span class="site-name">h5-dooring</span></a> <div class="links"><!----> <nav class="nav-links can-hide"><div class="nav-item"><a href="/doc/" class="nav-link">
首页
</a></div><div class="nav-item"><a href="/doc/zh/guide/" class="nav-link router-link-active">
文档
</a></div><div class="nav-item"><a href="http://h5.dooring.cn" target="_blank" rel="noopener noreferrer" class="nav-link external">
体验
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://github.com/MrXujiang/h5-Dooring" target="_blank" rel="noopener noreferrer" class="nav-link external">
github
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/doc/" class="nav-link">
首页
</a></div><div class="nav-item"><a href="/doc/zh/guide/" class="nav-link router-link-active">
文档
</a></div><div class="nav-item"><a href="http://h5.dooring.cn" target="_blank" rel="noopener noreferrer" class="nav-link external">
体验
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://github.com/MrXujiang/h5-Dooring" target="_blank" rel="noopener noreferrer" class="nav-link external">
github
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/doc/zh/guide/" aria-current="page" class="sidebar-link">基本介绍</a></li><li><a href="/doc/zh/guide/introduced.html" class="sidebar-link">doring如何工作</a></li><li><a href="/doc/zh/guide/startedQuickly.html" class="sidebar-link">快速上手</a></li><li><a href="/doc/zh/guide/directoryStructure.html" class="sidebar-link">目录结构</a></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>组件开发</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/doc/zh/guide/componentDev/componentStructure.html" class="sidebar-link">组件结构</a></li><li><a href="/doc/zh/guide/componentDev/DSLAnalysis.html" aria-current="page" class="active sidebar-link">DSL设计</a></li><li><a href="/doc/zh/guide/componentDev/dynamicLoading.html" class="sidebar-link">动态加载</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>功能实现</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/doc/zh/guide/functionRealization/templateLibrary.html" class="sidebar-link">模板库</a></li><li><a href="/doc/zh/guide/functionRealization/saveJson.html" class="sidebar-link">保存json</a></li><li><a href="/doc/zh/guide/functionRealization/download.html" class="sidebar-link">下载源码</a></li><li><a href="/doc/zh/guide/functionRealization/pagePreview.html" class="sidebar-link">网页预览</a></li><li><a href="/doc/zh/guide/functionRealization/machinePreview.html" class="sidebar-link">真机预览</a></li><li><a href="/doc/zh/guide/functionRealization/revocation.html" class="sidebar-link">撤销/重做</a></li><li><a href="/doc/zh/guide/functionRealization/screenshot.html" class="sidebar-link">截图功能</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>私有化部署和二次开发</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/doc/zh/guide/deployDev/deploy.html" class="sidebar-link">私有化部署</a></li><li><a href="/doc/zh/guide/deployDev/deploy_v6.html" class="sidebar-link">v6.dooring私有化部署(临时)</a></li><li><a href="/doc/zh/guide/deployDev/dir.html" class="sidebar-link">服务端数据说明</a></li><li><a href="/doc/zh/guide/deployDev/https.html" class="sidebar-link">支持https</a></li><li><a href="/doc/zh/guide/deployDev/oss.html" class="sidebar-link">接入第三方oss</a></li><li><a href="/doc/zh/guide/deployDev/api.html" class="sidebar-link">API接口文档</a></li><li><a href="/doc/zh/guide/deployDev/log.html" class="sidebar-link">更新日志</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="dsl设计"><a href="#dsl设计" class="header-anchor">#</a> DSL设计</h1> <p>DSL层主要约定了Dooring组件的数据协议包括组件的可编辑属性、编辑类型、初始值等之所以定义一致的协议层主要是方便后期的组件扩展配置后移有助于不同后端语言开发和数据存储接下来我们看看header组件的schema。</p> <p>1.editData 可编辑的属性类型DSL</p> <p>2.config 可编辑组件的默认属性</p> <div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> Header<span class="token operator">:</span> IHeaderSchema <span class="token operator">=</span> <span class="token punctuation">{</span>
editData<span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token punctuation">{</span>
key<span class="token operator">:</span> <span class="token string">'bgColor'</span><span class="token punctuation">,</span>
name<span class="token operator">:</span> <span class="token string">'背景色'</span><span class="token punctuation">,</span>
type<span class="token operator">:</span> <span class="token string">'Color'</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span>
key<span class="token operator">:</span> <span class="token string">'height'</span><span class="token punctuation">,</span>
name<span class="token operator">:</span> <span class="token string">'高度'</span><span class="token punctuation">,</span>
type<span class="token operator">:</span> <span class="token string">'Number'</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span>
key<span class="token operator">:</span> <span class="token string">'logo'</span><span class="token punctuation">,</span>
name<span class="token operator">:</span> <span class="token string">'logo'</span><span class="token punctuation">,</span>
type<span class="token operator">:</span> <span class="token string">'Upload'</span><span class="token punctuation">,</span>
isCrop<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
cropRate<span class="token operator">:</span> <span class="token number">1000</span> <span class="token operator">/</span> <span class="token number">618</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span>
key<span class="token operator">:</span> <span class="token string">'logoText'</span><span class="token punctuation">,</span>
name<span class="token operator">:</span> <span class="token string">'logo文字'</span><span class="token punctuation">,</span>
type<span class="token operator">:</span> <span class="token string">'Text'</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span>
key<span class="token operator">:</span> <span class="token string">'color'</span><span class="token punctuation">,</span>
name<span class="token operator">:</span> <span class="token string">'文字颜色'</span><span class="token punctuation">,</span>
type<span class="token operator">:</span> <span class="token string">'Color'</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span>
key<span class="token operator">:</span> <span class="token string">'fontSize'</span><span class="token punctuation">,</span>
name<span class="token operator">:</span> <span class="token string">'文字大小'</span><span class="token punctuation">,</span>
type<span class="token operator">:</span> <span class="token string">'Number'</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
config<span class="token operator">:</span> <span class="token punctuation">{</span>
bgColor<span class="token operator">:</span> <span class="token string">'rgba(245,245,245,1)'</span><span class="token punctuation">,</span>
logo<span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token punctuation">{</span>
uid<span class="token operator">:</span> <span class="token string">'001'</span><span class="token punctuation">,</span>
name<span class="token operator">:</span> <span class="token string">'image.png'</span><span class="token punctuation">,</span>
status<span class="token operator">:</span> <span class="token string">'done'</span><span class="token punctuation">,</span>
url<span class="token operator">:</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>serverUrl<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">/uploads/3_1740be8a482.png</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
logoText<span class="token operator">:</span> <span class="token string">'页头Header'</span><span class="token punctuation">,</span>
fontSize<span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
color<span class="token operator">:</span> <span class="token string">'rgba(47,84,235,1)'</span><span class="token punctuation">,</span>
height<span class="token operator">:</span> <span class="token number">50</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre></div><p>由以上代码可知我们可以在editData属性中给组件添加可编辑的属性比如背景图然后再component中接受属性从而设置样式。</p> <p>在config属性中我们可以设置组件默认属性值和editData中每一项的key一一对应。</p></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated:</span> <span class="time">1/17/2021, 9:57:34 PM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/doc/zh/guide/componentDev/componentStructure.html" class="prev">
组件结构
</a></span> <span class="next"><a href="/doc/zh/guide/componentDev/dynamicLoading.html">
动态加载
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/doc/assets/js/app.b8bba05a.js" defer></script><script src="/doc/assets/js/18.81ac15ea.js" defer></script><script src="/doc/assets/js/2.a5de04a4.js" defer></script><script src="/doc/assets/js/22.eb3fcb45.js" defer></script>
</body>
</html>