Owl Admin 中文文档


Amis

<h2><strong>工作原理</strong></h2> <p>amis 的渲染过程是将 <code>json</code> 转成对应的 React 组件。先通过 <code>json</code> 的 type 找到对应的 <code>Component</code>,然后把其他属性作为 <code>props</code> 传递过去完成渲染。</p> <p>拿一个表单页面来说,如果用 React 组件开发一般长这样。</p> <pre><code class="language-jsx">&amp;lt;Page title=&amp;quot;页面标题&amp;quot; subTitle=&amp;quot;副标题&amp;quot;&amp;gt; &amp;lt;Form title=&amp;quot;用户登录&amp;quot;&amp;gt; &amp;lt;InputText name=&amp;quot;username&amp;quot; label=&amp;quot;用户名&amp;quot; /&amp;gt; &amp;lt;/Form&amp;gt; &amp;lt;/Page&amp;gt;</code></pre> <p>把以上配置方式换成 amis JSON, 则是:</p> <pre><code class="language-json">{ &amp;quot;type&amp;quot;: &amp;quot;page&amp;quot;, &amp;quot;title&amp;quot;: &amp;quot;页面标题&amp;quot;, &amp;quot;subTitle&amp;quot;: &amp;quot;副标题&amp;quot;, &amp;quot;body&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;form&amp;quot;, &amp;quot;title&amp;quot;: &amp;quot;用户登录&amp;quot;, &amp;quot;body&amp;quot;: [ { &amp;quot;type&amp;quot;: &amp;quot;input-text&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;username&amp;quot;, &amp;quot;label&amp;quot;: &amp;quot;用户名&amp;quot; } ] } }</code></pre> <p>其实只需要把 json 节点,根据 type 信息自动转成 React Component 即可。</p> <p>&lt;br&gt;</p> <h2><strong>用 JSON 写页面有什么好处</strong></h2> <p>为了实现用最简单方式来生成大部分页面,amis 的解决方案是基于 <a href="https://baike.baidu.com/item/JSON">JSON</a> 来配置,它的独特好处是:</p> <ul> <li><strong>不需要懂前端</strong>:在百度内部,大部分 amis 用户之前从来没写过前端页面,也不会 <code>JavaScript</code>,却能做出专业且复杂的后台界面,这是所有其他前端 UI 库都无法做到的;</li> <li><strong>不受前端技术更新的影响</strong>:百度内部最老的 amis 页面是 6 年多前创建的,至今还在使用,而当年的 <code>Angular/Vue/React</code> 版本现在都废弃了,当年流行的 <code>Gulp</code> 也被 <code>Webpack</code> 取代了,如果这些页面不是用 amis,现在的维护成本会很高;</li> <li><strong>享受 amis 的不断升级</strong>:amis 一直在提升细节交互体验,比如表格首行冻结、下拉框大数据下不卡顿等,之前的 JSON 配置完全不需要修改;</li> <li>可以 <strong>完全</strong> 使用 <a href="https://aisuda.github.io/amis-editor-demo/">可视化页面编辑器</a> 来制作页面:一般前端可视化编辑器只能用来做静态原型,而 amis 可视化编辑器做出的页面是可以直接上线的。</li> </ul> <p>&lt;br&gt;</p> <h2><strong>amis 的其它亮点</strong></h2> <ul> <li><strong>提供完整的界面解决方案</strong>:其它 UI 框架必须使用 JavaScript 来组装业务逻辑,而 amis 只需 JSON 配置就能完成完整功能开发,包括数据获取、表单提交及验证等功能,做出来的页面不需要经过二次开发就能直接上线;</li> <li><strong>大量内置组件(120+),一站式解决</strong>:其它 UI 框架大部分都只有最通用的组件,如果遇到一些稍微不常用的组件就得自己找第三方,而这些第三方组件往往在展现和交互上不一致,整合起来效果不好,而 amis 则内置大量组件,包括了富文本编辑器、代码编辑器、diff、条件组合、实时日志等业务组件,绝大部分中后台页面开发只需要了解 amis 就足够了;</li> <li><strong>支持扩展</strong>:除了低代码模式,还可以通过 <a href="./extend/internal">自定义组件</a> 来扩充组件,实际上 amis 可以当成普通 UI 库来使用,实现 90% 低代码,10% 代码开发的混合模式,既提升了效率,又不失灵活性;</li> <li><strong>容器支持无限级嵌套</strong>:可以通过嵌套来满足各种布局及展现需求;</li> <li><strong>经历了长时间的实战考验</strong>:amis 在百度内部得到了广泛使用,<strong>在 6 年多的时间里创建了 5 万页面</strong>,从内容审核到机器管理,从数据分析到模型训练,amis 满足了各种各样的页面需求,最复杂的页面有超过 1 万行 JSON 配置。</li> </ul> <p>&lt;br&gt;</p> <h2><strong>amis 不适合做什么?</strong></h2> <p>使用 JSON 有优点但也有明显缺点,在以下场合并不适合 amis:</p> <ul> <li><strong>大量定制 UI</strong>:JSON 配置使得 amis 更适合做有大量常见 UI 组件的页面,但对于面向普通客户(toC)的页面,往往追求个性化的视觉效果,这种情况下用 amis 就不合适,实际上绝大部分前端 UI 组件库也都不适合,只能定制开发。</li> <li><strong>极为复杂或特殊的交互</strong>: <ul> <li>有些复杂的前端功能,比如 可视化编辑器,其中有大量定制的拖拽操作,这种需要依赖原生 DOM 实现的功能无法使用 amis。</li> <li>但对于某些交互固定的领域,比如图连线,amis 后续会有专门的组件来实现。</li> </ul></li> </ul>

页面列表

ITEM_HTML