当前位置: 首页 > 网络应用技术

低代码-AMIS核心概念浅分析

时间:2023-03-08 18:47:42 网络应用技术

  本文是一系列文章,该文章源自“低代码工具研究”系列。为了确保Mainline文章的简单结构,本文专门分析了AMIS。通过对其核心概念的分析和解释,以快速的方式进行了分析和解释。并深入了解其设计思想并实现研究的目的。

  阿米斯给出的定义:

  AMIS是一个低代码前端框架。它使用JSON配置生成页面,从而可以减少页面开发工作量并大大提高效率。

  基本用法如下:

  AMIS的文档非常好,非常详细。如果您想快速理解AMIS,则必须首先了解其核心概念。这是最有效的方法。这篇文章将选择一些关键点以从目标点开始。可以阅读更多信息以查看下面的AMIS文档。

  最基本的概念是配置和组件。这件不复杂。坦率地说,页面或组件是树状的结构。每个节点都有不同的属性。这用于用json.design表达它。普通属性的设计非常简单。关键是下面提到的一些困难。我们会看它。

  这个概念太关键了,解决数据传输和共享的问题取决于它,因此可以说。LET谈论最基本的用途。

  属性。对于某些特定组件,只要设置了数据属性,就可以通过表达式使用其子模块。

  同时,还有一个属性,即初始化请求。只要返回的数据符合指定格式,也可以通过访问的值。两者同时存在,将合并值。具体用途如下:

  目前,最好理解。接下来,我需要移动一点,这非常重要。

  想象一下,如果许多组件都嵌套了,那么数据属性会是什么样?后代组件可以在整个级别上获取祖先组件的数据?如果字段名称相同,该怎么办?

  这个问题与JS中的原型链或变量范围非常相似。实际上,具有一定的编程经验的学生应该已经知道这里的解决方案,即使这两个概念出现了,他们也猜到了八个或九。官方网站给出的说明是:

  数据链的特征是,当当前组件遇到用于获取变量的方案时(例如模板渲染,显示表单数据,渲染列表等):

  答案很明显。简而言之,这是逐步找到它。就像页面树一样,数据链实际上是一棵树,链条彼此之间无法访问。您可以简单地将其理解为数据域。作为如何在交叉链之间访问并阅读以下内容的方法。

  我认为,模板和数据映射的两个核心概念都是表达的,因此我们专注于表达式。如果您理解并查看其他两个概念,很容易理解。

  首先,AMIS仍然使用语法代表表达。该语法基于JS,并已构建 - 在函数中支持表达式的表达。用法如下:

  作者在这里的注意力是2分。首先,提到了文档:

  原始表达式使用本机JS。尽管灵活性很大,但安全性不好。为了保持背部末端公式的统一性,已经引入了一项新规则...

  我不禁问,为什么有一个安全问题?临时结论是,在使用纯JS语法之前,应直接将其直接移交给浏览器以进行运行,而操作的影响实际上是不可用的。包装,您可以清楚地将JS代码控制到一定范围,并且可以安全处理,例如语法检测或在沙盒中运行的内容。

  但是还有另一个问题。您不能没有包装吗?功能脱钩的因素和更方便的维护。

  其次,文档提供的功能与Excel的功能一致,可以说可以在一定程度上降低学习成本。我认为我使用了现有的车轮,但是我看了一段时间,发现它是由我自己创造,但是随着作者研究水平的当前水平,它并非任意地是由轮子重复制成的。在任何情况下,尝试适合Excel功能的设计,或考虑全面。

  实际上,它了解数据链和表达方式,它已经了解了大多数链接。它不过是可以响应其他组件数据变化的组件,而本质是数据之间的共享。在数据链中,无法在不同链之间访问数据。我该如何解决此问题?有必要在此处讨论属性。组件的属性是其唯一的标识,因此,通过此形式,可以将当前组件的数据发送。这是一个相对聪明的设计。使用如下。您可以阅读文档以获取更多详细信息。

  毫不奇怪,事件的内容确实很多。可以将其视为表达式最多的两个内容。实际上,事件和表达式本质上是代码实现的一堆逻辑。测试设计师对计算机的理解深度非常困难和困难。让我们看一下AMIS如何解决这个问题。首先看基本用法:

  从上面的示例可以看出,1、2和3的层相对固定和更好。最重要的是第四层,即文档的抽象描述,文档的描述是:

  

  让我们来看看。

  控制残疾状态并更新数据。

  好人,基本上是枚举,涵盖了所有常见的场景,可以说这是非常暴力的。对此作品的分析不多,只需要使用文档的文档。值得注意的是,使用如下:

  看起来很奇怪,看描述

  如果您还可以直接在JS中编写一个函数,则此功能可以接收3个参数,该参数是:

  在阅读了高级别部分的内容后,已知可以通过编写JS函数直接编写,但是配置文件必须为JS而不是JSON,因为JSON不能自然表示函数。JSON格式的局限性,只能以纯字符串的形式编写,因此它直接是功能主体的内容,这也是首先看起来很奇怪的原因。

  关键是其默认值的三个参数,它使能够自定义JS.SS的整个系统。使用自定义JS.S.实施该功能允许事件逻辑覆盖100%的场景。

  组件运动并不是说太多。原则是指定特定组件的ID,然后传递到指定的事件。您可以专门查看文档。

  案件的情况太长了。

  实际上,以这种方式解决自定义事件问题的主要理解更容易理解。从理论上讲,这意识到任何组件都可以响应任何事件。通过自定义动作,从理论上讲是100%的覆盖范围。

  文档说明

  通过配置或 /或或实施操作支持嵌套。

  这件作品也很暴力,基本上是为了再次强制使用JSON的分支机构逻辑。作者更困惑的是,既然有一个功能,为什么需要此设计?可能是因为字符串的可读性不好。

  其余的操作干预和事件干预相对简单,因此不会扩展,只需阅读文档即可。

  通过梳理AMIS核心概念,我们基本上可以理解其设计思想。从作者的当前技能中判断,我仍然无法暂时选择任何死胡同。实际上,AMIS还提供了许多高级功能,例如自定义组件,使用AMIS作为组件库,扩展现有组件,多语言和其他功能。您可以自定义组件以为您提供底线。您甚至可以完全编写带有代码的页面,这太棒了。

  由于JSON层的抽象,不难实现可视化。当然,它确实已经实现了它,也就是说,采取它是快速的。定义功能。

  最后,强行说出一个观点:

  最好将此层的JSON分析与UI层分开,例如 + +。在这种方式上,JSON解析层的语言无关。您可以连接任何框架,例如React,Vue或Angular,并为二级开发提供更多的粒度选择。

  但是,总的来说,AMIS的设计仍然非常全面。目前,它应该是一个可以覆盖近100%的场景,并且更多的内容必须更深入。

  原始:https://juejin.cn/post/709642837945640518