<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>技术 on Somnia</title><link>https://kkbt0.github.io/Somnia/categories/%E6%8A%80%E6%9C%AF/</link><description>Recent content in 技术 on Somnia</description><generator>Hugo</generator><language>zh-CN</language><managingEditor>0@ftls.xyz (恐咖兵糖)</managingEditor><webMaster>0@ftls.xyz (恐咖兵糖)</webMaster><copyright>© 2026 恐咖兵糖.</copyright><lastBuildDate>Wed, 01 Jan 2025 12:00:00 +0800</lastBuildDate><atom:link href="https://kkbt0.github.io/Somnia/categories/%E6%8A%80%E6%9C%AF/index.xml" rel="self" type="application/rss+xml"/><item><title>Somnia</title><link>https://kkbt0.github.io/Somnia/posts/somnia/</link><pubDate>Wed, 01 Jan 2025 12:00:00 +0800</pubDate><author>0@ftls.xyz (恐咖兵糖)</author><guid>https://kkbt0.github.io/Somnia/posts/somnia/</guid><description>&lt;h2 id="简介"&gt;简介&lt;/h2&gt;
&lt;p&gt;一个现代化、优雅的 Hugo 主题，基于 Astro Theme Pure 移植而来。使用了 Alpine.js + UnoCSS 构建，支持现代化的网站开发体验。&lt;a href="https://www.ftls.xyz/posts/2026-03-22-hugo-theme-somnia/"
 rel="external nofollow noopener noreferrer" target="_blank"&gt;缘起&lt;span style="user-select:none"&gt; ↗&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="快速体验"&gt;快速体验&lt;/h2&gt;



&lt;div class="astro-code astro-code-themes chroma " style="overflow-x: auto;"
 data-language="bash"&gt;
 &lt;pre&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/kkbt0/Somnia
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; Somnia
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;just&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground rounded-bl"&gt;bash&lt;/span&gt;
 &lt;button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"
 data-code="git clone https://github.com/kkbt0/Somnia
cd Somnia
just" onclick="
 navigator.clipboard.writeText(this.dataset.code);
 this.classList.add('copied');
 setTimeout(() =&gt; this.classList.remove('copied'), 2000)
 "&gt;
 &lt;div class="ready"&gt;
 &lt;svg class="size-5"&gt;
 &lt;use href='https://kkbt0.github.io/Somnia/icons/main.svg#clipboard' /&gt;
 &lt;/svg&gt;
 &lt;/div&gt;
 &lt;div class="success hidden"&gt;
 &lt;svg class="size-5"&gt;
 &lt;use href='https://kkbt0.github.io/Somnia/icons/main.svg#file-check' /&gt;
 &lt;/svg&gt;
 &lt;/div&gt;
 &lt;/button&gt;
 
&lt;/div&gt;&lt;p&gt;参考 justfile 文件。如果你没有安装 just，也可以直接复制命令到命令行执行。&lt;/p&gt;</description></item><item><title>Components</title><link>https://kkbt0.github.io/Somnia/posts/components/</link><pubDate>Wed, 01 Jan 2025 11:30:00 +0800</pubDate><author>0@ftls.xyz (恐咖兵糖)</author><guid>https://kkbt0.github.io/Somnia/posts/components/</guid><description>&lt;h1 id="components"&gt;Components&lt;/h1&gt;
&lt;h2 id="containers"&gt;Containers&lt;/h2&gt;
&lt;h3 id="card"&gt;Card&lt;/h3&gt;











&lt;div
 class="not-prose block relative rounded-2xl border bg-muted px-5 py-3 transition-all hover:border-foreground/25 hover:shadow-sm"&gt;
 &lt;a href="#card"&gt;
 &lt;div class='flex flex-col gap-y-1.5'&gt;
 &lt;div class='flex flex-col gap-y-0.5'&gt;
 &lt;span class='text-lg font-medium font-bold'&gt;Lorem ipsum&lt;/span&gt;
 &lt;p class='text-muted-foreground'&gt;Lorem ipsum dolor sit amet, vidit suscipit at mei.&lt;/p&gt;
 &lt;p class='text-muted-foreground'&gt;August 2021 - July 2025&lt;/p&gt;
 &lt;/div&gt;
 
Some Text

 &lt;/div&gt;
 &lt;/a&gt;
&lt;/div&gt;
&lt;h3 id="collapse"&gt;Collapse&lt;/h3&gt;

&lt;collapse-component x-data="{contentExpanded: false}" :class="{'expanded':contentExpanded}" class='group/expand'&gt;
 &lt;div class="rounded-xl border px-3 my-4 sm:px-4 group-[.expanded]/expand:bg-muted"&gt;
 
 &lt;div @click="contentExpanded = !contentExpanded"
 class='group/highlight expand-title sticky top-0 z-20 flex cursor-pointer items-center justify-between py-1.5 group-[.expanded]/expand:bg-muted sm:py-2'&gt;
 &lt;p class='m-0 transition-colors group-hover/highlight:text-primary'&gt;Link History Book&lt;/p&gt;
 &lt;div class='expand-button'&gt;
 &lt;svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none'
 stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'
 class='my-1 stroke-muted-foreground transition-all duration-300 group-hover/highlight:stroke-primary group-[.expanded]/expand:-rotate-90'&gt;
 &lt;line x1='5' y1='12' x2='19' y2='12'
 class='translate-x-1 scale-x-100 duration-300 ease-in-out group-[.expanded]/expand:translate-x-4 group-[.expanded]/expand:scale-x-0'&gt;
 &lt;/line&gt;
 &lt;polyline points='12 5 19 12 12 19'
 class='translate-x-1 duration-300 ease-in-out group-[.expanded]/expand:translate-x-0'&gt;
 &lt;/polyline&gt;
 &lt;/svg&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div
 class='expand-content grid opacity-0 transition-all duration-300 ease-in-out group-[.expanded]/expand:mb-3 group-[.expanded]/expand:opacity-100 sm:group-[.expanded]/expand:mb-4'&gt;
 &lt;div class='overflow-hidden'&gt;
 
 
 
&lt;div&gt;
 &lt;ul class='ps-0 sm:ps-2'&gt;
 &lt;li class='group relative flex list-none gap-x-3 rounded-full ps-0 sm:gap-x-2'&gt;
 
 &lt;span
 class='z-10 my-2 ms-2 h-3 w-3 min-w-3 rounded-full border-2 border-muted-foreground transition-transform group-hover:scale-125'&gt;&lt;/span&gt;
 
 
 &lt;span class="absolute start-[12px] top-[20px] w-1 bg-border" style="height:calc(100% - 4px)"&gt; &lt;/span&gt;
 
 &lt;div class='flex gap-2 max-sm:flex-col'&gt;
 &lt;samp
 class='w-fit grow-0 rounded-md py-1 text-sm max-sm:bg-card max-sm:px-2 sm:min-w-[82px] sm:text-right'&gt;
 2025-03-16
 &lt;/samp&gt;
 &lt;div&gt;
 Is there a leakage?
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/li&gt;
 &lt;li class='group relative flex list-none gap-x-3 rounded-full ps-0 sm:gap-x-2'&gt;
 
 &lt;span
 class='z-10 my-2 ms-2 h-3 w-3 min-w-3 rounded-full border-2 border-muted-foreground transition-transform group-hover:scale-125'&gt;&lt;/span&gt;
 
 
 &lt;span class="absolute start-[12px] top-[20px] w-1 bg-border" style="height:calc(100% - 4px)"&gt; &lt;/span&gt;
 
 &lt;div class='flex gap-2 max-sm:flex-col'&gt;
 &lt;samp
 class='w-fit grow-0 rounded-md py-1 text-sm max-sm:bg-card max-sm:px-2 sm:min-w-[82px] sm:text-right'&gt;
 2025-03-16
 &lt;/samp&gt;
 &lt;div&gt;
 A leakage of what?
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/li&gt;
 &lt;li class='group relative flex list-none gap-x-3 rounded-full ps-0 sm:gap-x-2'&gt;
 
 &lt;span
 class='z-10 my-2 ms-2 h-3 w-3 min-w-3 rounded-full border-2 border-muted-foreground transition-transform group-hover:scale-125'&gt;&lt;/span&gt;
 
 
 &lt;span class="absolute start-[12px] top-[20px] w-1 bg-border" style="height:calc(100% - 4px)"&gt; &lt;/span&gt;
 
 &lt;div class='flex gap-2 max-sm:flex-col'&gt;
 &lt;samp
 class='w-fit grow-0 rounded-md py-1 text-sm max-sm:bg-card max-sm:px-2 sm:min-w-[82px] sm:text-right'&gt;
 2025-03-16
 &lt;/samp&gt;
 &lt;div&gt;
 I have a full seat of water, like, full of water!
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/li&gt;
 &lt;li class='group relative flex list-none gap-x-3 rounded-full ps-0 sm:gap-x-2'&gt;
 
 &lt;span
 class='z-10 my-2 ms-2 h-3 w-3 min-w-3 rounded-full border-2 border-muted-foreground transition-transform group-hover:scale-125'&gt;&lt;/span&gt;
 
 
 &lt;span class="absolute start-[12px] top-[20px] w-1 bg-border" style="height:calc(100% - 4px)"&gt; &lt;/span&gt;
 
 &lt;div class='flex gap-2 max-sm:flex-col'&gt;
 &lt;samp
 class='w-fit grow-0 rounded-md py-1 text-sm max-sm:bg-card max-sm:px-2 sm:min-w-[82px] sm:text-right'&gt;
 2025-03-16
 &lt;/samp&gt;
 &lt;div&gt;
 Must be the water.
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/li&gt;
 &lt;li class='group relative flex list-none gap-x-3 rounded-full ps-0 sm:gap-x-2'&gt;
 
 &lt;span
 class='z-10 my-2 ms-2 h-3 w-3 min-w-3 rounded-full border-2 border-muted-foreground transition-transform group-hover:scale-125'&gt;&lt;/span&gt;
 
 
 &lt;div class='flex gap-2 max-sm:flex-col'&gt;
 &lt;samp
 class='w-fit grow-0 rounded-md py-1 text-sm max-sm:bg-card max-sm:px-2 sm:min-w-[82px] sm:text-right'&gt;
 2025-03-16
 &lt;/samp&gt;
 &lt;div&gt;
 Let&amp;rsquo;s add that to the words of wisdom.
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/li&gt;
 
 &lt;/ul&gt;
&lt;/div&gt;

 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/collapse-component&gt;
&lt;style&gt;
 .expand-content {
 grid-template-rows: 0fr;
 }

 .expanded .expand-content {
 grid-template-rows: 1fr;
 }
&lt;/style&gt;
&lt;h3 id="callout"&gt;Callout&lt;/h3&gt;



&lt;div aria-label="Lorem ipsum" class='callout my-3 overflow-hidden rounded-xl border'&gt;
 &lt;div class="callout-container border-l-8 border-primary px-4 py-3 bg-primary callout-note"&gt;
 &lt;p class='not-prose flex items-center gap-x-2 font-medium text-primary' aria-hidden='true'&gt;
 
 &lt;svg aria-hidden="true" class="" width="22" height="22" viewBox="0 0 24 24" fill="currentColor"
 style="--sl-icon-size: 1em;"&gt;
 &lt;g fill="none"&gt;
 &lt;path fill="currentColor"
 d="M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2m0 2a8 8 0 1 0 0 16a8 8 0 0 0 0-16m-.01 6c.558 0 1.01.452 1.01 1.01v5.124A1 1 0 0 1 12.5 18h-.49A1.01 1.01 0 0 1 11 16.99V12a1 1 0 1 1 0-2zM12 7a1 1 0 1 1 0 2a1 1 0 0 1 0-2"&gt;
 &lt;/path&gt;
 &lt;/g&gt;
 &lt;/svg&gt;
 
 Lorem ipsum
 &lt;/p&gt;</description></item><item><title>Custom Components</title><link>https://kkbt0.github.io/Somnia/posts/custom-components/</link><pubDate>Wed, 01 Jan 2025 11:00:00 +0800</pubDate><author>0@ftls.xyz (恐咖兵糖)</author><guid>https://kkbt0.github.io/Somnia/posts/custom-components/</guid><description>&lt;h3 id="custom-components"&gt;Custom Components&lt;/h3&gt;
&lt;p&gt;Somnia 使用了 UnoCSS + Alpine.js 。因此可以使用一些 &lt;code&gt;Alpine + Tailwind&lt;/code&gt; 的 UI 组件库。例如&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://devdojo.com/pines/"
 rel="external nofollow noopener noreferrer" target="_blank"&gt;https://devdojo.com/pines/&lt;span style="user-select:none"&gt; ↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedevdojo/pines"
 rel="external nofollow noopener noreferrer" target="_blank"&gt;https://github.com/thedevdojo/pines&lt;span style="user-select:none"&gt; ↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pinemix.com/"
 rel="external nofollow noopener noreferrer" target="_blank"&gt;https://pinemix.com/&lt;span style="user-select:none"&gt; ↗&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;: 由于 Swup.js 的原因，使用 &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; 标签在 Swup 切换页面后不会自动执行。解决方法&lt;/p&gt;</description></item><item><title>Markdown</title><link>https://kkbt0.github.io/Somnia/posts/markdown/</link><pubDate>Wed, 01 Jan 2025 10:00:00 +0800</pubDate><author>0@ftls.xyz (恐咖兵糖)</author><guid>https://kkbt0.github.io/Somnia/posts/markdown/</guid><description>&lt;h2 id="基本语法"&gt;基本语法&lt;/h2&gt;
&lt;p&gt;Markdown 是一种轻量级且易于使用的语法，用于为您的写作设计风格。&lt;/p&gt;
&lt;h3 id="标题"&gt;标题&lt;/h3&gt;
&lt;p&gt;文章内容较多时，可以用标题分段：&lt;/p&gt;



&lt;div class="astro-code astro-code-themes chroma " style="overflow-x: auto;"
 data-language="markdown"&gt;
 &lt;pre&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# 标题 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 标题 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 大标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;### 小标题&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground rounded-bl"&gt;markdown&lt;/span&gt;
 &lt;button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"
 data-code="# 标题 1

## 标题 2

## 大标题

### 小标题" onclick="
 navigator.clipboard.writeText(this.dataset.code);
 this.classList.add('copied');
 setTimeout(() =&gt; this.classList.remove('copied'), 2000)
 "&gt;
 &lt;div class="ready"&gt;
 &lt;svg class="size-5"&gt;
 &lt;use href='https://kkbt0.github.io/Somnia/icons/main.svg#clipboard' /&gt;
 &lt;/svg&gt;
 &lt;/div&gt;
 &lt;div class="success hidden"&gt;
 &lt;svg class="size-5"&gt;
 &lt;use href='https://kkbt0.github.io/Somnia/icons/main.svg#file-check' /&gt;
 &lt;/svg&gt;
 &lt;/div&gt;
 &lt;/button&gt;
 
&lt;/div&gt;&lt;p&gt;标题预览会打乱文章的结构，所以在此不展示。&lt;/p&gt;</description></item><item><title>Alpine.js 从入门到精通 3 全局与其他</title><link>https://kkbt0.github.io/Somnia/docs/alpine.js/alpinejs3/</link><pubDate>Wed, 01 Jan 2025 09:00:00 +0800</pubDate><author>0@ftls.xyz (恐咖兵糖)</author><guid>https://kkbt0.github.io/Somnia/docs/alpine.js/alpinejs3/</guid><description>&lt;h2 id="三全局-globals"&gt;三、全局 Globals&lt;/h2&gt;
&lt;p&gt;Alpine.js 提供了一些全局方法和对象，可以在任何地方使用。&lt;/p&gt;
&lt;h3 id="1-alpinedata-可复用数据逻辑"&gt;1. Alpine.data() 可复用数据逻辑&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;解读&lt;/strong&gt;：&lt;code&gt;Alpine.data()&lt;/code&gt; 用于定义可复用的数据逻辑，类似于 Vue 的 &lt;code&gt;setup()&lt;/code&gt; 或 React 的自定义 Hook。&lt;/p&gt;</description></item><item><title>Alpine.js 从入门到精通 2 魔法属性</title><link>https://kkbt0.github.io/Somnia/docs/alpine.js/alpinejs2/</link><pubDate>Wed, 01 Jan 2025 08:00:00 +0800</pubDate><author>0@ftls.xyz (恐咖兵糖)</author><guid>https://kkbt0.github.io/Somnia/docs/alpine.js/alpinejs2/</guid><description>&lt;h2 id="二魔法属性-magic-properties"&gt;二、魔法属性 Magic Properties&lt;/h2&gt;
&lt;p&gt;Alpine.js 提供了一些以 &lt;code&gt;$&lt;/code&gt; 开头的魔法属性，可以在组件中直接访问。&lt;/p&gt;
&lt;h3 id="1-el-当前元素"&gt;1. $el 当前元素&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;解读&lt;/strong&gt;：&lt;code&gt;$el&lt;/code&gt; 指向当前 Alpine 组件的根 DOM 元素。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例代码&lt;/strong&gt;：&lt;/p&gt;



&lt;div class="astro-code astro-code-themes chroma " style="overflow-x: auto;"
 data-language="html"&gt;
 &lt;pre&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;x-data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;console.log($el)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;查看根元素&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;$el.style.backgroundColor = &amp;#39;yellow&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;改变背景&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground rounded-bl"&gt;html&lt;/span&gt;
 &lt;button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"
 data-code="&amp;lt;div x-data=&amp;#34;{}&amp;#34;&amp;gt;
 &amp;lt;button @click=&amp;#34;console.log($el)&amp;#34;&amp;gt;查看根元素&amp;lt;/button&amp;gt;
 &amp;lt;button @click=&amp;#34;$el.style.backgroundColor = &amp;#39;yellow&amp;#39;&amp;#34;&amp;gt;改变背景&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;" onclick="
 navigator.clipboard.writeText(this.dataset.code);
 this.classList.add('copied');
 setTimeout(() =&gt; this.classList.remove('copied'), 2000)
 "&gt;
 &lt;div class="ready"&gt;
 &lt;svg class="size-5"&gt;
 &lt;use href='https://kkbt0.github.io/Somnia/icons/main.svg#clipboard' /&gt;
 &lt;/svg&gt;
 &lt;/div&gt;
 &lt;div class="success hidden"&gt;
 &lt;svg class="size-5"&gt;
 &lt;use href='https://kkbt0.github.io/Somnia/icons/main.svg#file-check' /&gt;
 &lt;/svg&gt;
 &lt;/div&gt;
 &lt;/button&gt;
 
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;适用范围&lt;/strong&gt;：&lt;/p&gt;</description></item><item><title>Alpine.js 从入门到精通 1 指令</title><link>https://kkbt0.github.io/Somnia/docs/alpine.js/alpinejs1/</link><pubDate>Wed, 01 Jan 2025 07:00:00 +0800</pubDate><author>0@ftls.xyz (恐咖兵糖)</author><guid>https://kkbt0.github.io/Somnia/docs/alpine.js/alpinejs1/</guid><description>&lt;p&gt;Alpine.js 是一个轻量级的 JavaScript 框架，它借鉴了 Vue.js 和 Angular 的思想，但更加精简，可以直接在 HTML 中通过指令来管理状态和行为，非常适合需要少量交互的静态网站或增强渐进式应用。&lt;/p&gt;</description></item></channel></rss>