React 可视化开发工具 Shadow Widget 非正经入门(之六:markdow
本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点。本篇讲解 Markdown 在 Shadow Widget 中的应用。
Markdown 在 Shadow Widget 中的应用Shadow Widget 中 Markdown 采用 John Gruber 的 Markdown 语法规则。由于 markdown 支持 Shadow Widget 不只用 markdown 表达文本段落,重要的是,它还用 markdown 实施界面编程。为达到这个目标,我们先对 John Gruber 的 markdown 语法做一点优化。 优化 markdown 语法常规 markdown 语法都支持用 > 这一段缩进一个级别。 > > 这一段缩进两个级别。 这样的 markdown 文本在独立的 从更严格角度去看,字母 Shadow Widget 把转义标签也纳入到 markdown 文本内容中,需要以更严谨的方式表达缩进一级,我们引用 :: 这一段缩进一个级别。 :: :: 这一段缩进两个级别。 把转义标签嵌到 markdown 文本中Markdown 语法支持 <pre $=MarkedDiv key='marked' width='{0.9999}'>### 嵌入描述界面的转义标签 <div $=P key='p' width='{0.9999}'> <span $=Button key='test1'>test 1</span> <span $=Button key='test2'>test 2</span> </div> 本例在 markdown 文本定义了 **两个按钮** 界面。 ### 嵌入一个引用 <div key='pie' $='.body.auto1.pie_chart'></div> 在外部定义的构件(`.body.auto1.pie_chart`)将插入到 markdown 正文中使用。 </pre> 使用 markdown 的构件是 Div 类构件,在 markdown 嵌入转义标签的首层节点要求是 "非行内构件",Panel 类、Div 类、P 类均可。嵌入的由转义标签描述的界面,表现为一种 "段落",与 markdown 描述的各段落一起按顺序排列。上面例子生成的节点树如下: marked // MarkedDiv +-- markdown paragraph +-- p // P | +-- test1 // Button | +-- test2 // Button +-- markdown paragraph +-- pie +-- markdown paragraph 在 markdown 中嵌入转义标签,使 markdown 的表达能力变得异常强大,Shadow Widget 编程能表达的界面都能嵌进来。嵌入的转义标签甚至还可是 markdown 构件,层层嵌套,深度没有限制。 两个 markdown 基础类Shadow Widget 内置提供 在转义标签描述一个 markdown 节点,建议用 所以,下面两种转义标签,我们选择第一种优于第二种: <pre $=MarkedDiv>Hello,world</pre> <div $=MarkedDiv>Hello,world</div> MarkedDiv 常用来表达一维数据定义,MarkedTable 表达二维数据,行是一维,列是另一维。这两种构件都定义有 markdown 兼顾了机器可读与人类可读的需求Markdown 被设计出来,主要用来简化网页内容编辑的,许多用户(尤其是作家)并不熟悉 html 标签,让他使用 Shadow Widget 继承 markdown 这个优势,同时,在不引入太复杂操作前提下,努力提升界面表现力。从原理上讲,markdown 可嵌入大部分 html 标签,如 在 markdown 文本中嵌入特定界面,比如下面的直方统计图:
典型操作步骤如下:
经过这几个步骤,直方图就嵌入到 markdown 文本中了。 Markdown 在 Shadow Widget 中应用广泛,就像 markdown 能简化文章写作一下,它一样简化编程中的界面设计。其表达形式对机器可读,同时,对开发人员也是易读易理解的,对它做修改直接改文本,很方便。 一个复杂些的例子比如下面组件,点击左侧列表中的项目,右侧将展示相应页的内容(注:下面是图片,不能点击看交互效果)。
它的实现原理大致是,用如下 MarkedDiv 定义 <pre $=MarkedDiv key="mark"> <pre $=MarkedDiv title="item A">Page A </pre> <pre $=MarkedDiv title="item B">Page B </pre> <pre $=MarkedDiv title="item C">Page C </pre> </pre> 然后用 如果把这种界面做成样板,用户使用时,拖进来就创建一个组件,然后选中 key 为 (非正经入门系列至此完结,本文是最后一篇) 本专栏历史文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |