@astrojs/ alpinejs
这个 Astro 集成 (EN) 将 Alpine.js 添加到你的项目中,这样你就可以在页面的任何位置使用 Alpine.js。
安装
Astro 包含了一个 astro add 命令,用于自动设置官方集成。如果你愿意,可以改为手动安装集成。
要安装 @astrojs/alpinejs,请从项目目录中运行以下命令并按照提示进行操作:
npx astro add alpinejs
pnpm astro add alpinejs
yarn astro add alpinejs
如果遇到任何问题,请随时在 GitHub 上向我们报告,并尝试以下手动安装步骤。
手动安装
首先,安装 @astrojs/alpinejs 包。
npm install @astrojs/alpinejs
pnpm add @astrojs/alpinejs
yarn add @astrojs/alpinejs
大多数包管理器会自动安装相关的 peer 依赖项。然而,如果在启动 Astro 时看到 Cannot find package 'alpinejs'(或者类似)的警告,则需要手动安装 Alpine.js:
npm install alpinejs @types/alpinejs
pnpm add alpinejs @types/alpinejs
yarn add alpinejs @types/alpinejs
然后,使用 integrations 属性将集成应用到你的 astro.config.* 文件中:
import { defineConfig } from 'astro/config';
import alpinejs from '@astrojs/alpinejs';
export default defineConfig({
// ...
integrations: [alpinejs()],
});配置选项
entrypoint
类型: string
@astrojs/alpinejs@0.4.0
你可以通过设置 entrypoint 选项为与根目录相关的的导入说明符(例如 entrypoint: "/src/entrypoint")来扩展 Alpine。
这个文件的默认导出应该是一个函数,该函数接收一个在应用启动前的 Alpine 实例作为参数。这样做可以在高级用例中允许使用自定义指令、插件以及其他自定义功能。
import { defineConfig } from 'astro/config';
import alpinejs from '@astrojs/alpinejs';
export default defineConfig({
// ...
integrations: [alpinejs({ entrypoint: '/src/entrypoint' })],
});import type { Alpine } from 'alpinejs'
import intersect from '@alpinejs/intersect'
export default (Alpine: Alpine) => {
Alpine.plugin(intersect)
}使用
集成安装完成后,你可以在任何 Astro 组件中使用 Alpine.js 的指令和语法。Alpine.js 的脚本将会自动被添加到你的网站,并在每个页面上激活,因此不需要客户端指令。你需要做的就是将插件脚本包含在页面的 <head> 部分。
以下示例将演示如何使用 Alpine 的 Collapse 插件 来实现段落文本的展开和折叠功能:
---
---
<html>
<head>
<!-- ... -->
<script defer src="https://cdn.jsdelivr.net/npm/@alpinejs/collapse@3.x.x/dist/cdn.min.js"></script>
</head>
<body>
<!-- ... -->
<div x-data="{ expanded: false }">
<button @click="expanded = ! expanded">切换内容</button>
<p id="foo" x-show="expanded" x-collapse>
Lorem ipsum
</p>
</div>
</body>
</html>TypeScript 的智能提示
@astrojs/alpine 集成会将 Alpine 对象添加到 全局的 window 对象 中。为了在你的开发环境中获得 Alpine 的自动完成提示,你需要在 src/env.d.ts 文件中添加如下代码:
interface Window {
Alpine: import('alpinejs').Alpine;
}示例
- Astro Alpine.js 示例 演示了如何在 Astro 项目中使用 Alpine.js。