精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Alpine.js簡介:用于最小化列表的JavaScript框架?

譯文
開發(fā) 前端
Alpine.js是一個前端JavaScript框架,一個輕量級的軟件包,具有極簡的API和全面的功能。

譯者 | 李睿

審校 | 孫淑娟

前端JavaScript框架的創(chuàng)新是當今這個時代最偉大的技術(shù)文化現(xiàn)象之一。20多年來,人們見證了進化創(chuàng)造力的長尾。每一個新的想法都進行嘗試,在軟件開發(fā)過程和開發(fā)人員構(gòu)建的最終產(chǎn)品中都會促進改進。?

Alpine.js是近年來脫穎而出的框架之一。Alpine.js是一個極簡主義框架。顧名思義,用于克服大量的困難(在崎嶇的山地)進行輕操作。它在一個簡潔、易于掌握的軟件包中提供了很多的動力。本文將對Alpine.js進行介紹,這樣就可以理解它提供了什么,以及它在什么時候可能有用。?

Alpine的極簡API

正如Alpine.js文檔所描述的,Alpine的API是15個屬性、6個特性和2個方法的集合。這是一個非常小的API配置文件。其極簡主義的目的是以干凈的格式提供反應性,并輔以一些周圍的細節(jié),例如事件和中央商店。?

考慮清單1中非常簡單的Web頁面。 ?

清單1.一個用Alpine.js構(gòu)建的簡單網(wǎng)頁

<html>
<head>
<script src="https://unpkg.com/alpinejs@3.10.3/dist/cdn.min.js" defer></script>
</head>
<body>
<div x-data="">
<span x-text="'Text literal'"></span>
</div>
</body>
</html>

除了通過CDN包含Alpine包,這里僅有的兩個與Alpine相關(guān)的是指令x-data和x-text。

如果將其放入系統(tǒng)上的HTML頁面并在瀏覽器中查看,將會看到消息輸出“文本文字”。雖然這個應用程序不是特別令人印象深刻,但它演示了Alpine的兩個有趣方面。 ?

首先,為了使反應性發(fā)揮作用,必須將標記包含在x-data指令中。如果刪除該指令,則x-text將不會生效。本質(zhì)上,x-data指令創(chuàng)建了一個Alpine組件。在這個例子中,x-data指令是空的。在實際使用中,這里幾乎總是有數(shù)據(jù)。畢竟,正在編寫的組件的目的是響應數(shù)據(jù)。 ?

清單1中要注意的第二件事是,可以將任何有效的JavaScript放入x-text中。所有的Alpine指令都是如此。 ?

x-data和x-text元素

x-data內(nèi)容提供給所有包含的元素。要理解這個意思,可以查看清單2。 ?

清單2.x-data和x-text交互

<div x-data="{ message: 'When in the course of human events...' }">
<span x-text="message"></span>
</div>

現(xiàn)在該頁面將輸出美國《獨立宣言》的開頭部分??梢钥吹絰-data定義了一個簡單的老舊JavaScript對象,只有一個字段“message”,其中包含聲明的序言。x-text指向這個對象字段。 ?

在Alpine.js中的反應

接下來,將使用反應性來修復聲明中的錯誤??梢粤私馇鍐?。 ?

清單3.x- on:click和反應性

<div x-data="{ pronoun: 'men' }">
<button x-on:click="pronoun = 'people'">Fix It</button>
<span x-text="`all ${pronoun} are created equal`"></span>
</div>

x-text指令指的是由x-data指令公開的代詞變量。這里的新部件是按鈕,它有一個x-on:click指令。這個單擊事件的處理程序?qū)⑴f的默認代詞替換為中性代詞,反應性負責更新x-text中的引用。?

數(shù)據(jù)中的函數(shù)

Alpine中的數(shù)據(jù)屬性是功能齊全的JavaScript對象。考慮處理上述需求的另一種方法,如清單4所示。 ?

清單4.使用數(shù)據(jù)函數(shù)

<div x-data="{ 
pronoun: 'men',
fixIt: function(){
this.pronoun = 'people';
}
}">
<button x-on:click="fixIt()">Fix It</button>
<span x-text="`all ${pronoun} are created equal`"></span>
</div>

在清單4中,可以看到數(shù)據(jù)對象現(xiàn)在擁有一個由click處理程序調(diào)用的fixIt方法。 ?

另外,有時會看到應用程序代碼從x-data指令調(diào)用腳本標記中定義的函數(shù)——這是個人偏好,它的操作與內(nèi)聯(lián)x-data完全相同:?

<div x-data="myDataFunction()">...</div>
...
<script>
function myDataFunction() {
return {
foo: "bar"
}
}
</script>

獲取遠程數(shù)據(jù)

現(xiàn)在轉(zhuǎn)換話題,可以考慮一個更復雜的需求。假設(shè)想從外部API加載一個json格式的美國總統(tǒng)列表。我們要做的第一件事是在頁面加載時加載它。為此將使用x-init指令,例如清單5所示。 ?

清單5.從x-init預加載數(shù)據(jù)

<div x-data="{
presidents: []
}"
x-init="(
async () => {
const response = await fetch('https://raw.githubusercontent.com/hitch17/sample-data/master/presidents.json');
presidents = await response.json();
}
)">
<span x-text="presidents"></span>
</div>

在這里發(fā)生了什么?首先,x-data指令應該很清楚它只是有一個帶有空數(shù)組的總統(tǒng)(presidents)字段。span元素中的x-text輸出該字段的內(nèi)容。 ?

x-init代碼有點復雜。首先,注意它被包裝在一個自動執(zhí)行的函數(shù)中。這是因為Alpine需要函數(shù),而不是函數(shù)定義。(如果要使用fetch的非異步回調(diào)形式,則不需要像這樣包裝函數(shù)。) ?

一旦從端點獲得了presidents列表,將其插入到presidents變量中,Alpine將其作為x-data對象的一部分公開。 ?

重申一下:Alpine.js正在使a-data中的數(shù)據(jù)可用于同一場景中的其他指令函數(shù)(例如x-init)。 ?

使用Alpine.js迭代

此時,應用程序正在從遠程端點提取數(shù)據(jù)并將其保存到狀態(tài)中。需要注意,它輸出的內(nèi)容類似于[Object],[Object]....這不是想要的??梢粤私庖幌卤闅v數(shù)據(jù)的過程,例如清單6所示。 ?

清單6.使用Alpine.js迭代

<div x-data=...>
<ul>
<template x-for="pres in presidents">
<li><div x-text="pres.president"></div>
From: <span x-text="pres.took_office"></span> Until: <span x-text="pres.left_office"></span></li>
</template>
</ul>
</div>

清單6包含一個普通的無序列表,后面跟著一個HTML模板元素,其中包含一個x-for指令。這個指令的操作與在其他響應式框架中看到的類似。在本例中,它允許指定一個集合、總統(tǒng)(presidents)和一個標識符,該標識符將提供給表示該集合的每個實例的封閉標記,在本例中為pres。 ?

標記的其余部分使用pres變量通過x-text從對象中輸出數(shù)據(jù)。 ?

其應用程序現(xiàn)在看起來如圖1所示。 ?

圖1美國總統(tǒng)的名單?

顯示/隱藏和onClick

現(xiàn)在要設(shè)置應用程序,以便通過單擊總統(tǒng)的名稱來切換總統(tǒng)的數(shù)據(jù)。首先,將標記修改為清單7所示的內(nèi)容。 ?

清單7.顯示/隱藏元素

<template x-for="pres in presidents">
<li><div x-text="pres.president" x-on:click="pres.show = ! pres.show"></div>
<div x-show="pres.show">
From: <span x-text="pres.took_office"></span> Until: <span x-text="pres.left_office"></span></li>
</div>
</template>

現(xiàn)在,在清單7中,可以在包含總統(tǒng)詳細信息的div上使用x-show指令。x-show值的真實性決定內(nèi)容是否可見。在本例中,這是由pres.show字段決定的 (注意的是,在實際應用程序中,可能不希望使用實際業(yè)務(wù)數(shù)據(jù)來承載show/hide變量) 。 ?

為了改變press.show的值,在標頭文件中添加一個x-on:click處理程序。這個處理程序簡單地交換了press.show的true/false值:press.show=!pres.show。 ?

添加轉(zhuǎn)換動畫

Alpine包含內(nèi)置轉(zhuǎn)換功能,可以應用于顯示/隱藏特性。清單8顯示了如何添加默認動畫。 ?

清單8.添加轉(zhuǎn)換功能來顯示/隱藏

<div x-show="pres.show" x-transition>
From: <span x-text="pres.took_office"></span> Until: <span x-text="pres.left_office"></span></li>
</div>

唯一改變的是,帶有x-show指令的元素現(xiàn)在也有一個x-transition指令。在默認情況下,Alpine應用合理的轉(zhuǎn)換。在這種情況下,轉(zhuǎn)換是一種滑動和漸變效果??梢詮V泛地自定義轉(zhuǎn)換,包括將自己的CSS類應用于動畫的各個階段。?

綁定到輸入

現(xiàn)在,將添加一個簡單的過濾器功能。這將需要添加一個綁定到數(shù)據(jù)的輸入,然后根據(jù)該值篩選返回的數(shù)據(jù)集。可以在清單9中看到更改。 ?

清單9.篩選presidents

<div x-data="{
filter: '',
presidents: [],
getPresidents: function(){
return this.presidents.filter(pres => pres.president.includes(this.filter) )
}
}"
...
<input x-model="filter" />
...
<ul>
<template x-for="pres in getPresidents">

注意,x-data對象現(xiàn)在有一個“filter”字段。這是通過指向“filter”的x-model指令雙向綁定到輸入元素的。 ?

已經(jīng)更改了模板x-for指令,以引用一個新的getPresidents()方法,該方法在x-data對象上實現(xiàn)。該方法使用標準JavaScript語法,根據(jù)總統(tǒng)是否在篩選字段中包含文本來篩選。 ?

結(jié)論

就像它的名字一樣,Alpine.js是一個輕量級的軟件包,里面有著基本的裝備,可以“穿越高山”。這是最小的軟件包,但已經(jīng)足夠了。 ?

該框架包括一些更高級的功能,特別是中央存儲和事件系統(tǒng),以及插件架構(gòu)和生態(tài)系統(tǒng)。?

總之,Alpine.js是符合人體工程學。如果有使用其他響應式框架的經(jīng)驗,那么Alpine應該會很快學會,在x-data指令中聲明組件及其數(shù)據(jù)的簡單性。 ?

可能想知道組件間的通信。Alpine.js避免了組件之間的顯式連接(例如,沒有父-子道具)。與其相反,它通過$dispatch指令使用瀏覽器環(huán)境(即窗口)作為事件總線。這符合Alpine的理念,即添加足夠的功能來增強現(xiàn)有的功能。它工作得很好。 ?

隨著應用程序的規(guī)模和復雜性的增長,所有這些元素都將受到考驗。所以它適用于選擇的任何堆棧。Alpine.js是下次進行代碼冒險的一個誘人選擇。?

原文標題:??Intro to Alpine.js: A JavaScript framework for minimalists??,作者:Matthew Tyson

責任編輯:華軒 來源: 51CTO
相關(guān)推薦

2021-04-13 16:00:54

加密貨幣數(shù)據(jù)貨幣

2009-08-14 10:35:25

C#最小化編寫

2009-07-02 17:59:51

2013-05-31 09:26:11

云宕機SLA云應用彈性

2015-09-18 09:23:34

云APIAPI升級云服務(wù)中斷

2022-06-01 08:00:00

開發(fā)成本功能

2011-01-19 14:40:45

Thunderbird

2015-10-29 10:09:57

混合云影子IT SaaS

2017-02-08 15:13:57

2011-03-07 10:12:02

GNOME SHELL

2017-01-19 09:57:18

APP開發(fā)JavaScript

2025-04-25 09:35:39

WinformWindows系統(tǒng)托盤

2011-04-13 11:11:36

VC++托盤程序

2011-10-31 10:21:05

2011-01-18 11:37:59

Linuxsocket性能

2016-12-14 14:08:23

移動APP開發(fā)JavaScript

2020-11-03 09:00:00

API微服務(wù)JavaScript框

2021-07-28 14:14:09

JavaScript開源框架

2011-01-18 10:35:02

Linuxsocket性能

2022-03-28 17:10:18

樹莓派服務(wù)器舊硬件
點贊
收藏

51CTO技術(shù)棧公眾號

秋霞午夜理伦电影在线观看| 久久久久99精品成人片我成大片| 国产精品亚洲一区二区在线观看| 亚洲欧美激情视频在线观看一区二区三区 | 欧美剧情电影在线观看完整版免费励志电影 | 裸体xxxx视频在线| 久久国产精品露脸对白| 国语自产精品视频在线看| 国产精品视频在| 精品三级av| 欧美狂野另类xxxxoooo| 亚洲国产精品久久久久婷蜜芽| 在线观看的av| 91丨九色丨国产丨porny| 成人做爰www免费看视频网站| 在线观看日韩中文字幕| 欧美成人国产| 中文字幕在线成人| 中文字幕免费高清| 精品视频自拍| 欧美一卡2卡3卡4卡| caopor在线视频| 2001个疯子在线观看| 亚洲天堂av一区| 视频一区二区在线观看| 香蕉视频成人在线| 成人av电影在线播放| 91在线|亚洲| 伊人网综合在线| 欧美专区在线| 国产91成人在在线播放| 久热精品在线观看| 911精品美国片911久久久| 一区二区三区高清国产| 成人乱码一区二区三区av| 加勒比久久高清| 欧美va在线播放| 亚洲女人在线观看| 日本成人一区二区| 欧美午夜电影网| 一本久道中文无码字幕av| 婷婷电影在线观看| 性做久久久久久| 国内精品在线观看视频| 久草在线新免费首页资源站| 一区二区高清在线| 免费高清一区二区三区| 欧美另类tv| 亚洲一区二区三区爽爽爽爽爽| 黄色免费高清视频| а√中文在线8| 亚洲免费电影在线| 久久福利一区二区| 国产蜜臀在线| 欧美日韩美女视频| av网址在线观看免费| 亚洲播播91| 欧美日韩一区二区在线观看视频 | www.91精品| 欧美一区三区二区| 中文字幕一二三区| jizz久久精品永久免费| 精品av综合导航| 丰满少妇在线观看资源站| 亚洲精品进入| 自拍偷拍亚洲在线| 夫妻性生活毛片| 亚洲午夜极品| 日本91av在线播放| 在线中文字幕网站| 国产福利一区二区三区视频| 国产成人精品一区二区三区福利| 蜜桃久久一区二区三区| 91影院在线观看| 日韩中文一区| caoporm免费视频在线| 亚洲最大成人综合| 亚洲午夜精品久久久久久人妖| 欧美日韩视频免费观看| 欧美剧情电影在线观看完整版免费励志电影| 一区二区三区国产好的精华液| 91久久偷偷做嫩草影院电| 亚洲第一av网站| 日本乱子伦xxxx| 亚洲国产成人精品女人| 91精品国产乱码久久久久久久久 | 国产一区二区精品久久99| 国产超碰91| 久久久资源网| 亚洲蜜臀av乱码久久精品| 日本中文字幕网址| 六九午夜精品视频| 亚洲国产成人91精品| 五月天精品视频| 综合国产在线| 国产mv久久久| 亚洲大尺度网站| 欧美国产视频在线| 99热久久这里只有精品| 成人一区视频| 亚洲国产精品高清久久久| 女人黄色一级片| 亚洲人妖在线| 成人欧美一区二区三区在线湿哒哒 | 影音先锋在线国产| 国产精品66部| 亚洲巨乳在线观看| 成人三级高清视频在线看| 欧美群妇大交群中文字幕| 朝桐光av一区二区三区| 在线观看免费一区二区| 国产成人综合av| 无码国产精品96久久久久| 一色桃子久久精品亚洲| 日韩av一二三四| 女一区二区三区| 欧美—级a级欧美特级ar全黄| 中文字幕在线观看欧美| 2020国产精品自拍| 美女日批免费视频| 深夜激情久久| 久久国产色av| 91资源在线视频| 国产欧美日韩三级| 男人用嘴添女人下身免费视频| 高清不卡一区| www.亚洲一区| 91一区二区视频| 国产精品情趣视频| 韩国视频一区二区三区| 九九热精品视频在线观看| 91国产美女视频| 人妻少妇一区二区三区| 亚洲国产精品人人做人人爽| 亚洲AV成人精品| 正在播放日韩欧美一页| 成人精品在线观看| 视频免费一区| 欧美日韩和欧美的一区二区| 999久久久国产| 久久激情综合网| 一区二区三区日韩视频| 24小时成人在线视频| 日韩性生活视频| 国产人妖一区二区| 亚洲精品国产一区二区精华液| 黄色片免费网址| 欧美aa国产视频| yy111111少妇影院日韩夜片| 日本天码aⅴ片在线电影网站| 日韩欧美国产高清| 日韩av片在线播放| 91视频一区二区| 久热免费在线观看| 成人vr资源| 91精品中文在线| 亚洲小说区图片| 亚洲国产精彩中文乱码av| 亚洲精品1区2区3区| 久久免费美女视频| 精品999在线| 91tv官网精品成人亚洲| julia一区二区中文久久94| av中文资源在线资源免费观看| 日韩精品视频在线观看网址| 伊人中文字幕在线观看| 国产精品第13页| 中文字幕制服丝袜| 新狼窝色av性久久久久久| 亚洲春色在线视频| 亚洲超碰在线观看| 欧美怡春院一区二区三区| a黄色在线观看| 日韩色视频在线观看| 日本亚洲色大成网站www久久| 久久久三级国产网站| 亚洲黄色av片| 亚洲激情欧美| 天堂社区 天堂综合网 天堂资源最新版| 韩国精品视频在线观看| 欧美黑人又粗大| 国产乱子伦三级在线播放| 欧美一区二区视频在线观看2020| 久久精品国产亚洲av高清色欲 | 亚洲在线播放电影| 香蕉大人久久国产成人av| 欧美亚洲第一区| 国产激情在线视频| 精品视频久久久| 国产精品一区二区三区在线免费观看| 亚洲一区二区精品3399| www.黄色在线| 粉嫩蜜臀av国产精品网站| 激情综合网俺也去| 午夜精品久久久久久久四虎美女版| 国产伦精品一区二区三区高清| 国产v综合v| 91国内精品久久| 欧美性猛交xxx乱大交3蜜桃| 亚洲精品电影在线| 国产女人18毛片水真多| 色偷偷久久人人79超碰人人澡| 国产免费无码一区二区视频 | 日本成人三级电影网站| 伊人www22综合色| 国产精品网站入口| 涩涩涩视频在线观看| 欧美插天视频在线播放| 成人高清在线| 亚洲精品在线不卡| 丰满少妇一级片| 欧美日韩国产片| 无码人妻精品一区二区三区9厂| 亚洲一区二区综合| 免费看特级毛片| 中文字幕欧美区| 88久久精品无码一区二区毛片| 成人av资源站| 女教师高潮黄又色视频| 久久精品国产免费| 天堂在线资源视频| 久久激情中文| 91视频最新入口| 在线午夜精品| 欧美午夜小视频| 欧美特黄a级高清免费大片a级| 一本色道久久综合亚洲二区三区| 国产成人精品三级高清久久91| 国产综合18久久久久久| 亚洲视频三区| 超碰国产精品久久国产精品99| 亚洲午夜剧场| 国产中文日韩欧美| 台湾天天综合人成在线| 国产精品久久久久福利| 偷拍中文亚洲欧美动漫| 热久久这里只有精品| 中文字幕人成乱码在线观看| 97欧美精品一区二区三区| xxx.xxx欧美| 国模精品系列视频| 鲁鲁在线中文| 青青草成人在线| 搜成人激情视频| 国产精品美女主播| 欧美激情三区| 91久久精品一区| 国产美女视频一区二区 | 亚洲警察之高压线| 久久久一本精品99久久精品| 亚洲成在人线免费观看| 日本不卡一二三区| 欧美电影三区| 国产奶头好大揉着好爽视频| 欧美在线看片| 久久久亚洲国产精品| 国产欧美综合一区二区三区| 粗暴91大变态调教| 精品一区二区三区视频 | 国产日产精品1区| 国产99在线 | 亚洲| 综合久久给合久久狠狠狠97色| 国产高潮国产高潮久久久91 | 开心激情综合| 日韩黄色影视| 亚洲电影影音先锋| a在线视频观看| 日韩电影在线观看一区| 亚洲午夜激情影院| 成人免费av资源| 中文字幕网站在线观看| 日韩一区中文字幕| 亚洲精品在线观看av| 色哟哟国产精品| 国产精品福利电影| 亚洲国产成人精品久久久国产成人一区| 天堂av网在线| 久久精品免费电影| 久草在线中文最新视频| 国产精品免费在线免费| 香蕉成人app| 日韩精品一线二线三线| 欧美不卡视频| 天美星空大象mv在线观看视频| 国产v综合v亚洲欧| 精品视频第一页| 亚洲成人午夜影院| 91一区二区视频| 亚洲欧美日韩一区二区三区在线| 操你啦视频在线| 国产精品福利在线观看网址| 91麻豆精品激情在线观看最新 | 久久久噜噜噜| 日日夜夜精品视频免费观看| 久久久久久夜精品精品免费| 91插插插插插插| 日本韩国精品在线| 性欧美8khd高清极品| 怡红院精品视频| 国产拍在线视频| 91久久久久久久| 国产成人一区二区三区影院| 欧美一级爱爱视频| 久久精品理论片| 久久精品国产亚洲av麻豆| 亚洲精品日日夜夜| 伊人久久一区二区| 亚洲欧美日韩第一区| 手机av免费在线| 成人中文字幕+乱码+中文字幕| 国产一区网站| 国产性xxxx18免费观看视频| 粉嫩蜜臀av国产精品网站| 天天色影综合网| 欧美主播一区二区三区美女| 天堂av在线免费观看| 久久人人爽人人爽人人片av高请 | 青娱乐国产在线视频| 欧美性感一区二区三区| 日韩电影免费| 97精品欧美一区二区三区| 日韩综合一区二区三区| 黄色高清视频网站| 美女视频一区在线观看| 免费看黄色三级| 欧美视频在线免费| 亚洲人妻一区二区三区| 亚州欧美日韩中文视频| 国产精品任我爽爆在线播放| 9色视频在线观看| 国产一区二区三区日韩| 三级黄色在线观看| 欧美美女视频在线观看| 激情成人四房播| 成人免费在线视频网站| 91国语精品自产拍| 91大神免费观看| 亚洲三级在线免费观看| 国产精品一区二区人人爽| 久久精品视频99| 日韩有吗在线观看| 中文精品无码中文字幕无码专区| 国产麻豆视频精品| 欧美三级免费看| 精品剧情v国产在线观看在线| 国产后进白嫩翘臀在线观看视频| 成人动漫视频在线观看免费| 亚洲黄网站黄| 五月婷婷综合在线观看| 日本道免费精品一区二区三区| 黄色在线免费观看大全| 国产精品精品久久久久久| 日韩啪啪电影网| 日本黄色一级网站| 亚洲一区视频在线| 奇米影视888狠狠狠777不卡| 国产z一区二区三区| 欧美精选一区二区三区| 亚洲欧美日韩综合网| 亚洲三级视频在线观看| 亚洲国产精品欧美久久| 欧美性受xxxx白人性爽| 国产一区二区电影在线观看| 蜜桃福利午夜精品一区| 夜夜夜精品看看| 青青青免费视频在线2| 国产精品午夜视频| 中文一区一区三区免费在线观看| 亚洲成人精品在线播放| 激情成人在线视频| 亚洲欧美视频一区二区| 国产精品视频500部| 久久久久久久波多野高潮日日| 天天爽天天爽天天爽| 精品欧美一区二区在线观看 | 91福利区一区二区三区| 午夜激情视频在线| 国产99午夜精品一区二区三区 | 国产精品69久久| 偷拍欧美精品| 黄色性生活一级片| 欧美精品丝袜久久久中文字幕| 婷婷色在线资源| 欧美视频小说| 国产成人亚洲综合a∨婷婷| 毛片基地在线观看| 久久国产精品久久久久久| 一本色道久久综合亚洲精品酒店| 久久精品国产露脸对白| 狠狠色香婷婷久久亚洲精品| 欧美性天天影视| 久久婷婷人人澡人人喊人人爽| 久久电影网站中文字幕| 日韩 欧美 综合| 久久综合久久88| 成人黄色小视频| 黄色网址在线视频| 91精品蜜臀在线一区尤物| 成人性生活av| 欧美在线一区视频|