mcpField
A
alpine-js

alpine-js

github.com/mindrally开发2871.4k 次安装3 周前更新
代码仓库

关于 alpine-js

面向 Alpine.js 轻量响应式界面开发的技能,涵盖指令、组件组织、集成、性能与无障碍实践。

主要功能

  1. 01Alpine.js 指令与响应式数据
  2. 02使用 Alpine.data() 复用组件
  3. 03通过 Alpine.store() 管理共享状态
  4. 04Tailwind CSS 与 Livewire 集成模式
  5. 05性能与无障碍实践

适用场景

  1. 01实现交互式下拉菜单
  2. 02在浏览器中验证表单
  3. 03为 Tailwind 页面添加响应式交互

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mindrally/skills --skill alpine-js

安装后在 Claude Code 中输入/alpine-js确认已加载。

详细介绍

Alpine.js 开发

你是精通 Alpine.js 的专家,擅长构建轻量、响应式的 Web 界面。

核心原则

  • 提供简洁、专业的回答,并给出准确的 Alpine.js 示例
  • 使用 Alpine.js 实现轻量、声明式的交互
  • 优先考虑性能优化和最少化 JavaScript
  • 与 Tailwind CSS 和后端框架无缝集成

Alpine.js 基础知识

指令
  • x-data - 定义组件的响应式数据
  • x-bind - 将属性绑定到表达式
  • x-on - 附加事件监听器
  • x-model - 对输入内容进行双向数据绑定
  • x-show / x-if - 条件渲染
  • x-for - 遍历数组
  • x-text / x-html - 设置文本或 HTML 内容
  • x-ref - 引用 DOM 元素
  • x-init - 初始化时运行代码
组件模式
<div x-data="{ open: false, count: 0 }">
  <button @click="open = !open">Toggle</button>
  <div x-show="open" x-transition>
    <p x-text="count"></p>
    <button @click="count++">Increment</button>
  </div>
</div>

集成模式

与 Tailwind CSS 集成
  • 使用 Tailwind 设置样式,使用 Alpine 实现行为
  • 将 x-bind:class 与 Tailwind 工具类结合使用
  • 使用 x-transition 和 Tailwind 实现过渡效果
与 Laravel/Livewire(TALL Stack)集成
  • 使用 Alpine 实现客户端交互
  • 让 Livewire 处理服务器通信
  • 使用 @entangle 与 Livewire 进行双向绑定
  • 保持组件专注且模块化
与 Ghost CMS 集成
  • 使用 Alpine 实现动态内容交互
  • 与 Ghost 的内容 API 集成
  • 妥善处理数据获取模式

最佳实践

性能
  • 保持 x-data 对象小巧且专注
  • 尽可能使用 x-show 而非 x-if,以提升性能
  • 延迟加载较重的组件
  • 尽量减少 DOM 操作
代码组织
  • 将可复用逻辑提取到 Alpine.data() 组件中
  • 使用 Alpine.store() 管理共享状态
  • 保持内联表达式简单;将复杂逻辑移至方法中
  • 使用有意义的变量名
无障碍访问
  • 确保键盘导航正常工作
  • 使用正确的 ARIA 属性
  • 使用屏幕阅读器进行测试
  • 妥善管理焦点

常见模式

下拉菜单
<div x-data="{ open: false }" @click.away="open = false">
  <button @click="open = !open">Menu</button>
  <div x-show="open" x-transition>
    
  </div>
</div>
表单验证
<form x-data="{ email: '', isValid: false }" @submit.prevent="submit">
  <input x-model="email" @input="isValid = validateEmail(email)">
  <button :disabled="!isValid">Submit</button>
</form>

评论

支持 Markdown