- 起步
- 核心概念
- 教程
- 基础内容
- 内置功能
- 集成
- 操作指南
- 使用指南
- 配置
- 参考
- 社区资源
- 其他
- 为文档做出贡献
- 手动安装 Astro
- 升级到 Astro v4
- 升级到 Astro v3
- 升级到 Astro v2
- Legacy v0.x Upgrade Guide
- 从 Create React App(CRA)迁移
- 关于本教程
- 第一单元:前期准备
- 准备开发环境
- 创建你的第一个 Astro 项目
- 你的第一行 Astro 代码
- 创建在线代码仓库
- 将你的网站部署到网络
- 第二单元:页面
- 创建你的第一个 Astro 页面
- 编写你的第一篇 Markdown 博客文章
- 添加「关于你」的动态内容
- 给你的「关于」页面添加样式
- 应用全局样式
- 第三单元:组件
- 创建一个可重复使用的导航组件
- 创建社交媒体 footer
- 自己动手搭建导航 Header
- 编写你的第一个浏览器脚本
- 第四单元:布局
- 编写你的第一个布局
- 创建并传递数据到博客布局
- 布局结合,两全其美
- 第五单元 - Astro API
- 创建文章存档页
- 生成标签页面
- 编写标签索引页面
- 添加 RSS 订阅源
- 第六单元 - Astro 群岛
- 搭建你的第一个 Astro 岛屿
- 回到干燥的陆地。让你的博客从白天到黑夜,无需岛屿!
- 恭喜你!
- @astrojs/mdx
- 添加阅读时间
- 创建开发者工具栏应用
- @astrojs/alpinejs
- @astrojs/lit
- @astrojs/preact
- @astrojs/react
- @astrojs/solid-js
- @astrojs/svelte
- @astrojs/vue
- @astrojs/cloudflare
- @astrojs/netlify
- @astrojs/node
- @astrojs/vercel
- @astrojs/db
- @astrojs/markdoc
- @astrojs/partytown
- @astrojs/sitemap
- @astrojs/tailwind
- 使用流式处理来提升页面性能
- 从 Gatsby 迁移
- 从 Next.js 迁移
- 从 NuxtJS 迁移
- 从 Docusaurus 迁移到 Astro
- 从 Eleventy 迁移到 Astro
- 从 GitBook 迁移到 Astro
- 从Gridsome迁移到Astro
- 从 Hugo 迁移
- 从 Jekyll 迁移
- 从 Pelican 迁移
- 从 SvelteKit 迁移
- 从VuePress迁移
- 从 WordPress 迁移
- 状态共享
- Storyblok 与 Astro
- Contentful 与 Astro
- ButterCMS & Astro
- Builder.io & Astro
- Cosmic 与 Astro
- DatoCMS 与 Astro
- Front Matter CMS 与 Astro
- Ghost & Astro
- Hashnode & Astro
- Hygraph 与 Astro
- Keystatic & Astro
- Kontent.ai 与 Astro
- 无头模式的 Statamic 与 Astro
- Strapi 与 Astro
- Tina CMS 与 Astro
- Umbraco & Astro
- 无头(headless)模式的 WordPress 与 Astro
- ApostropheCMS 与 Astro
- Caisy & Astro
- CloudCannon与Astro
- Crystallize 与 Astro
- Decap CMS 与 Astro
- Directus 与 Astro
- KeystoneJS 与 Astro
- microCMS & Astro
- Payload CMS 与 Astro
- Prepr CMS & Astro
- Prismic & Astro
- Sanity & Astro
- Sitecore 体验管理器 & Astro
- Spinal & Astro
- 创作内容
- Firebase 与 Astro
- Supabase 与 Astro
- Turso 和 Astro
- Xata 与 Astro
- Appwrite & Astro
- 部署你的 Astro 站点至 Netlify
- 部署你的 Astro 站点至 Vercel
- 如何将你的 Astro 网站部署到 Deno
- 部署你的 Astro 站点至 GitHub Pages
- 部署你的 Astro 站点至 GitLab Pages
- 部署你的 Astro 站点至 Cloudflare Pages
- 将你的 Astro 网站部署到 AWS
- 将你的 Astro 网站通过 Flightcontrol 部署到 AWS
- 将你的 Astro 网站通过 SST 部署到 AWS
- 将你的 Astro 网站部署至 Google Cloud
- 部署你的 Astro 站点至 Google Firebase 托管
- 将你的 Astro 网站部署到 Heroku
- 将你的 Astro 网站部署到 Microsoft Azure
- 部署你的 Astro 站点至 Buddy
- 将你的 Astro 网站部署到 Edgio
- 将你的 Astro 站点部署到 Fly.io
- 将你的 Astro 网站部署到 Render
- 将你的 Astro 网站部署到 Stormkit
- 将你的 Astro 网站部署到 Surge
- 通过 Cleavr 部署你的 Astro 网站
- 将你的 Astro 站点部署到 Kinsta 应用托管
- 将你的 Astro 网站部署到 Space
- 将你的 Astro 站点部署到 Zeabur
- 将你的 Astro 网站部署到 Zerops
- 添加 RSS 摘要
- 安装一个 Vite 或 Rollup 插件
- 构建自定义图像组件
- 使用 API 路由构建表单
- 在 Astro 页面中构建 HTML 表单
- 在 Astro 中使用 Bun
- 调用服务器端点
- 校验验证码
- 用 Docker 来构建你的 Astro 网站
- 动态导入图片
- 为链接添加图标
- 添加 i18n 功能
- 添加最后修改时间
- 在 Astro 组件中共享状态
- 使用 Tailwind Typography 美化渲染后的 Markdown
- Unknown compiler error.
- Astro.redirect is not available in static mode.
- Astro.clientAddress is not available in current adapter.
- Astro.clientAddress cannot be used inside prerendered routes.
- Astro.clientAddress is not available in static mode.
- No static path found for requested path.
- Invalid type returned by Astro page.
- Missing value for client:media directive.
- No matching renderer found.
- No client entrypoint specified in renderer.
- Missing hint on client:only directive.
- Invalid value returned by a getStaticPaths path.
- Invalid entry inside getStaticPath's return value
- Invalid value returned by getStaticPaths.
- getStaticPaths RSS helper is not available anymore.
- Missing params property on getStaticPaths route.
- Invalid value for getStaticPaths route parameter.
- getStaticPaths() function required for dynamic routes.
- Invalid slot name.
- Cannot use Server-side Rendering without an adapter.
- No import found for component.
- Invalid prerender export.
- Invalid component arguments.
- Page number param not found.
- Image missing required "alt" property.
- Error while loading image service.
- Missing image dimensions
- Failed to retrieve remote image dimensions
- Unsupported image format
- Unsupported image conversion
- Prerendered dynamic endpoint has path collision.
- Expected src to be an image.
- Expected image options.
- Cannot set both densities and widths
- Image not found.
- Could not process image metadata.
- Image not found.
- Could not transform image.
- Unable to set response.
- The middleware didn't return a Response.
- The middleware returned something that is not a Response object.
- The endpoint did not return a Response.
- Value assigned to locals is not accepted.
- Astro.response.headers must not be reassigned.
- Can't load the middleware.
- Local images must be imported.
- Astro.glob() used outside of an Astro file.
- Astro.glob() did not match any files.
- A redirect must be given a location with the Location header.
- Invalid dynamic route.
- Could not find Sharp.
- Unknown Vite Error.
- Could not import file.
- Invalid glob pattern.
- Astro couldn't find the correct page to render
- The provided locale does not exist.
- Index page not found.
- You can't use the current function with the current strategy
- Prerendered routes aren't supported when internationalization domains are enabled.
- 启用了手动国际化路由但没有提供中间件。
- Astro can't render the route.
- Unhandled rejection
- i18n Not Enabled
- Route not found.
- Unknown CSS Error
- CSS Syntax Error
- Unknown Markdown Error.
- Failed to parse Markdown frontmatter.
- Invalid frontmatter injection.
- MDX integration missing.
- Unknown configuration error.
- Specified configuration file not found.
- Legacy configuration detected.
- Unknown CLI Error.
- Failed to generate content types.
- Unknown Content Collection Error.
- Content entry frontmatter does not match schema.
- Invalid content entry slug.
- Content Schema should not contain slug.
- Collection does not exist
- Content and data cannot be in same collection.
- Collection contains entries of a different type.
- Data collection entry failed to parse.
- Duplicate content entry slug.
- Actions must be used with server output.
- Unsupported transform in content config.
电子商务
使用 Astro,你可以构建多种电子商务选项,从结账链接到托管支付页面,再到使用支付服务 API 构建整个商店前台。
支付处理叠加层
一些支付处理服务(例如 Lemon Squeezy、Paddle)添加了支付表单,允许你的客户在你的网站上进行购买。这些可以是托管的叠加层或嵌入在你网站的某个页面中。它们可能提供一些基本的自定义或网站品牌化,并且可以作为脚本、按钮或外部链接添加到你的 Astro 项目中。
Lemon Squeezy
Lemon Squeezy 是一个全能型的支付和订阅平台,支持多币种、全球税务合规、PayPal 集成等功能。它允许你通过账号仪表板创建和管理数字产品和服务,并提供用于结账过程的产品 URL。
基础的 Lemon.js JavaScript 库 允许你通过结账链接销售你的 Lemon Squeezy 产品。
基本用法
以下是在 Astro 页面中添加 Lemon Squeezy “立即购买”元素的示例。点击此链接将打开结账页面,并允许访客完成单次购买。
将以下
src/pages/my-product-page.astro<script>
标签添加到页面的head
或body
中:<script src="https://app.lemonsqueezy.com/js/lemon.js" defer></script>
在页面上创建一个锚点标签,链接到你的产品 URL。点击时包含类
src/pages/my-product-page.astrolemonsqueezy-button
以打开结账叠加层。<a class="lemonsqueezy-button" href="https://demo.lemonsqueezy.com/checkout/..."> 立即购买 </a>
Lemon.js
Lemon.js 还提供了额外的行为,例如以编程方式打开叠加层和处理叠加层事件。
阅读 Lemon Squeezy 开发者入门指南了解更多信息。Paddle
Paddle 是一种数字产品和服务的计费解决方案。它通过一个叠加层或内联结账处理支付、税务和订阅管理。
Paddle.js 是一个轻量级的 JavaScript 库,让你使用 Paddle 构建丰富、集成的订阅计费体验。
基本用法
以下是在 Astro 页面中添加 Paddle “立即购买”元素的示例。点击此链接将打开结账页面,并允许访客完成单次购买。
在 Paddle 批准你的默认支付链接域名(你自己的网站)之后,你可以将页面上的任何元素通过使用 HTML 数据属性转变为触发结账叠加层的触发器。
在你的页面
src/pages/my-product-page.astrohead
或body
中添加以下两个<script>
标签:<script src="https://cdn.paddle.com/paddle/v2/paddle.js"></script> <script type="text/javascript"> Paddle.Setup({ token: '7d279f61a3499fed520f7cd8c08' // 请替换为客户端 token }); </script>
通过添加
src/pages/my-product-page.astropaddle_button
类,将页面上的任何元素变成 Paddle 结账按钮:<a href="#" class="paddle_button">立即购买</a>
添加一个
src/pages/my-product-page.astrodata-items
属性来指定你的产品的 PaddlepriceId
和quantity
。你也可以选择性地传递额外的支持的 HTML 数据属性来预填充数据、处理结账成功,或者设置你的按钮和结账叠加层的样式:<a href="#" class="paddle_button" data-display-mode="overlay" data-theme="light" data-locale="en" data-success-url="https://example.com/thankyou" data-items='[ { "priceId": "pri_01gs59hve0hrz6nyybj56z04eq", "quantity": 1 } ]' > 立即购买 </a>
Paddle.js
与其通过 HTML 数据属性传递数据,不如使用 JavaScript 向结账叠加层发送数据,以便传递多个属性并实现更大的自定义化。你还可以使用内联结账创建升级工作流程。
阅读更多关于使用 Paddle.js 构建内联结账的信息。功能齐全的电子商务解决方案
为了让你的网站购物车和结账流程有更多自定义选项,你可以将更完整的金融服务提供商(例如 Snipcart)连接到你的 Astro 项目。这些电子商务平台还可能与其他第三方服务集成,用于用户账号管理、个性化、库存和分析。
Snipcart
Snipcart 是一个强大的,以开发者为优先的 HTML/JavaScript 购物车平台。
Snipcart 还允许你与第三方服务集成,例如运输提供商,启用 webhooks 以实现高级的电子商务集成,介于你的购物车和其他系统之间,从多个支付网关(例如 Stripe、Paypal 和 Square)中选择,自定义电子邮件模板,甚至提供现场测试环境。
基本用法
以下是在 Astro 页面上配置 Snipcart 结账和添加“添加到购物车”以及“立即结账”按钮元素的示例。这将允许你的访客将产品添加到购物车中,而不会立即被发送到结账页面。
完整的指导,包括设置你的 Snipcart 商店,请参见 Snipcart 安装文档。在页面的
src/pages/my-product-page.astro<body>
元素后添加脚本,如 Snipcart 安装说明中所示。<body></body> <script> window.SnipcartSettings = { publicApiKey: "YOUR_API_KEY", loadStrategy: "on-user-interaction", }; (function()...); // 可从 Snipcart 文档中获取 </script>
根据 可用的 Snipcart 设置自定义
src/pages/my-product-page.astrowindow.SnipcartSettings
,以控制购物车的行为和外观。<script> window.SnipcartSettings = { publicApiKey: "YOUR_API_KEY", loadStrategy: "manual", version: "3.7.1", addProductBehavior: "none", modalStyle: "side", }; (function()...); // 可从 Snipcart 文档中获取 </script>
在任何 HTML 元素上添加
src/pages/my-product-page.astroclass="snipcart-add-item"
属性,例如<button>
,点击时可以将商品添加到购物车。同时包括其他数据元素,用于 Snipcart 常见商品属性 如价格和描述,以及任何可选字段。
"><button class="snipcart-add-item" data-item-id="astro-print" data-item-price="39.99" data-item-description="一个装裱好的 Astro 标志印刷品。" data-item-image="/assets/images/astro-print.jpg" data-item-name="Astro 印刷品" data-item-custom1-name="框架颜色" data-item-custom1-options="棕色|银色[+10.00]|金色[+20.00]" data-item-custom2-name="配送说明" data-item-custom2-type="textarea" > 加入购物车 </button>
添加一个带有
src/pages/my-product-page.astrosnipcart-checkout
类的 Snipcart 结账按钮,以打开购物车并允许访客通过结账模态框完成购买。
"><button class="snipcart-checkout">点击这里结账</button>
Snipcart JavaScript SDK
Snipcart JavaScript SDK 允许你以编程方式配置、自定义和管理你的 Snipcart 购物车。
这使你能够执行如下操作:
- 检索当前 Snipcart 会话的相关信息,并对购物车执行特定操作。
- 监听即将到来的事件并动态触发回调。
- 监听状态变化并接收购物车状态的完整快照。
astro-snipcart
有两个 astro-snipcart
社区包可以简化使用 Snipcart 的过程。
@lloydjatkinson/astro-snipcart
Astro 模板:这个 Astro 模板包含了一个可选的设计系统,为你提供了一个开箱即用的完整电子商务解决方案。在其丰富的文档站点上了解更多信息,包括构建astro-snipcart
背后的动机,作为提供一个方便的、Astro 原生的方式,让你与 Snipcart API 交互。@Adammatthiesen/astro-snipcart
集成:这个集成深受astro-snipcart
主题的启发,提供了可以添加到现有 Astro 项目中的 Astro 组件(或 Vue 组件),用于创建产品、控制购物车等。查看完整教程了解更多信息。
社区资源
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论