前端JavaScript框架的创新是我们这个时代最伟大的技术文化现象之一。20多年来,我们见证了进化创造力的长尾展开。每一个新的想法都进入了公共的罐子,在开发软件的过程和开发人员构建的最终产品中激起了改进。
其中一个出名的框架是Alpine.js。Alpine是一种极简主义框架,顾名思义,适合在崎岖的地形上进行轻操作。它在一个精简的、易于掌握的包中提供了很多动力。本文将让您初步了解Alpine.js,这样您就可以理解它提供了什么,以及它在什么时候可能对您有用。
Alpine的极简API
随着Alpine.js文档Alpine的API是一个包含15个属性、6个属性和2个方法的集合。这是一个非常小的API配置文件。其极简主义的目的是以干净的格式提供反应性,并增加了一些周边的细节,如事件和中央商店。
考虑清单1中非常简单的web页面。
清单1。一个用Alpine.js构建的简单网页
除了通过CDN包含Alpine包(您可以了解推迟
语义在这里),这里只有两个与阿尔卑斯山相关的东西是指令x数据
而且x-text
.
如果将其放入系统上的HTML页面并在浏览器中查看,将看到消息输出“文本文字”。虽然这个应用程序不是特别令人印象深刻,但它演示了Alpine的两个有趣方面。
首先,为了使响应性生效,必须将标记包含在x数据
指令。如果删除该指令,则x-text
不生效。本质上,x数据
指令创建一个Alpine组件。在本例中,x数据
指令是空的。在实际使用中,这里几乎总是有数据;毕竟,您正在编写的组件的目的是响应数据。
清单1中要注意的第二点是,可以将任何有效的JavaScript放入x-text
.所有的Alpine指令都是如此。
x-data和x-text元素
的x数据
内容提供给所有包含的元素。要理解我的意思,请查看清单2。
清单2。x数据和x文本交互
.
现在该页面将输出《独立宣言》的开头部分。你们可以看到x数据
定义了一个简单的JavaScript对象,只有一个字段,“消息”
,其中载有《宣言》的序言。的x-text
引用该对象字段。
在Alpine.js中的反应
接下来,我们将使用反应性来修复声明中的错误。看一下清单3。
清单3。X-on:点击和反应
的x-text
指令现在应该不言自明了。它指的是代词
变量。x数据
指令。这里的新部件是按钮,它有一个x:点击
指令。此单击事件的处理程序将旧的默认代词替换为中性代词,而响应性负责更新x-text。
数据中的函数
Alpine中的数据属性是功能齐全的JavaScript对象。让我们考虑处理上述需求的另一种方法,如清单4所示。
清单4。使用数据函数
在清单4中,您可以看到数据对象现在托管了一个搞定
由单击处理程序调用的方法。
顺便说一句,请注意,您有时会看到从x数据
在脚本标记中定义的函数的指令-这是个人偏好,它的操作与内联完全相同x数据
:
< div x数据= " myDataFunction() " >…< / div >… . 0
获取远程数据
现在让我们转换话题,考虑一个更复杂的需求。假设我们想从外部API加载一个json格式的美国总统列表。我们要做的第一件事是在页面加载时加载它。为此,我们将使用x-init
指令,如清单5所示。
清单5。从x-init预加载数据
.
这里发生了什么?首先,这个x数据
指令应该是明确的:它只是有一个总统
字段,使用空数组。的x-text
在跨度
元素输出此字段的内容。
的x-init
代码更复杂一些。首先,请注意它被包装在一个自动执行的函数中。这是因为Alpine期望的是函数,而不是函数定义。的非异步回调形式获取
,你不需要像这样包装函数。)
一旦我们从端点获得了总统列表,我们将其插入总统
变量的一部分x数据
对象。
重申一下:Alpine.js正在生成来自一个数据
可用于其他指令函数(如x-init
)。
使用Alpine.js迭代
此时,我们的应用程序正在从远程端点提取数据并将其保存到状态中。但是请注意,它输出类似于【对象】,【对象】……
.这不是我们想要的。让我们看一下遍历数据的过程,如清单6所示。
清单6。使用Alpine.js迭代
< div x数据=…>< ul> From: 直到: < / span > < / > < /模板> < / ul > < / div >
清单6包含一个普通的无序列表,后面跟一个HTML模板元素,其中包含x
指令。这个指令的操作与你在其他响应式框架中看到的类似。在这种情况下,它允许我们指定一个集合,总统
,以及一个标识符,该标识符将提供给表示该集合的每个实例的所附标记,在本例中,总统
.
标记的其余部分使用总统
变量从对象中输出数据x-text
.
应用程序现在看起来类似于图1所示。
IDG
图1所示。美国总统的名单。
显示/隐藏和onClick
现在我们要设置应用程序,以便通过单击总统的名称来切换总统的数据。首先,我们将标记修改为清单7所示的内容。
清单7。显示/隐藏元素
From: 直到: .
现在,在清单7中,可以使用展示会
指示div
包含总统的细节。的真实性展示会
Value决定内容是否可见。在我们的例子中,这是由pres.show
字段。(注意,在实际应用程序中,您可能不希望使用实际业务数据来承载show/hide变量。)
改变…的值pres.show
我们加上一个x:点击
处理程序。的true/false值进行交换pres.show
:show = !pres.show
.
添加过渡动画
Alpine包含内置转换,可以应用于显示/隐藏特性。清单8显示了如何添加默认动画。
清单8。添加一个过渡来显示/隐藏
< div展示会= "总统。show" x-transition> From: 直到: < / span > < / > < / div >
唯一改变的是元素展示会
指令现在也有一个x-transition
指令。默认情况下,Alpine应用合理的转换。在本例中,过渡是滑动-淡出效果。您可以广泛地自定义转换,包括将您自己的CSS类应用到动画的各个阶段。看到js转换文档有关此功能的更多信息。
绑定到输入
现在,我们将添加一个简单的过滤器功能。这将需要添加一个绑定到数据的输入,然后根据该值筛选返回的数据集。您可以在清单9中看到更改。
清单9所示。筛选总统
pre .president.includes(this.filter))}}"……
注意x数据
对象现在有一个“filter”字段。元素双向绑定到输入元素x模型
指令指向"过滤器
."
我们已经更改了模板x
指令引用一个新的getPresidents ()
方法上实现的x数据
对象。该方法使用标准JavaScript语法根据总统是否在筛选字段中包含文本来筛选。
结论
就像它的名字一样,Alpine.js是一个轻量级的背包,里面装着基本的装备,可以让你穿越山脉。这是最小的,但已经足够了。
该框架包括一些高级特性,特别是一个中央存储和事件系统,以及一个插件架构和生态系统。
总之,Alpine.js是符合人体工程学的。如果您有使用其他响应式框架的经验,那么Alpine应该足够熟悉,您将很快掌握它。控件中声明组件及其数据的简单性x数据
指令有天才的味道。
您可能想知道组件间的通信。js避免了组件之间的显式连接(例如,没有父-子道具)。相反,它使用浏览器环境(即窗口)作为事件总线通过美元分派
指令。这符合Alpine的理念,即添加足够的功能来增强现有的功能。它工作得很好。
随着应用程序的规模和复杂性的增长,所有这些元素都将受到考验。所以它适用于你选择的任何堆栈。Alpine.js是你下次进行代码冒险的一个诱人选择。
版权所有©2022 金宝搏体育下载IDG通信有限公司