snipcart
@nuxtjs/snipcart

用于 Nuxt 的 Snipcart 集成模块

@nuxtjs/snipcart

npm versionnpm downloadsLicense 发行说明

如果您喜欢使用此模块,请考虑赞助

如果您正在寻找 Nuxt 2 版本,请使用 1.x 版本

功能

  • 基于 Snipcart 接口文档 的完整 TypeScript 支持
  • 开箱即用的 Snipcart 文档全面支持
  • 借助于 Nuxt 3 的强大功能实现高度定制

快速设置

  1. @nuxtjs/snipcart 依赖项添加到您的项目中
npx nuxi@latest module add snipcart
  1. @nuxtjs/snipcart 添加到 nuxt.config.tsmodules 部分
export default defineNuxtConfig({
  modules: [
    '@nuxtjs/snipcart'
  ],
  snipcart: {
    publicApiKey: "youkey"
  }
})

就是这样!您现在可以在 Nuxt 应用程序中使用 Snipcart 了 ✨

随时查看我们漂亮的 Playground 示例。

useSnipcart

我们尝试不为 Snipcart API 创建太多包装器,这样如果 Snipcart 发生变化,我们就不必维护太多。但您可能会发现其中一些很有用,例如:

  • 暴露 Snipcart 实例
  • isReady 将定义基本设置已准备好使用,但 Snipcart 尚未加载
  • 使用 watch 观察 Snipcart,确保它已准备就绪
  • 实时商店订阅
  • 实用函数,如 bindProductItem 或 bindProductItemCustom
  • 包装器实用函数,分别使用 setLanguagesetCurrency 更改语言或货币

由于我们有完整的 TypeScript 支持,请随意使用并阅读所暴露内容的描述。

加载

我们遵循 Snipcart 不同的加载方式。您可以使用 loadStrategy 配置属性控制 JS 的加载。您可以使用 loadCSS 配置属性告诉 Snipcart 不加载 CSS。

如果您异步加载,请注意在加载完成之前,您将无法访问 window.SnipcartuseSnipcart 暴露的 snipcart。因此,请调整您的逻辑。请查看 Playground,我们添加了一些注释。

定制

使用 Nuxt,定制 Snipcart 组件变得非常容易。除了自定义 HTML 外,您还可以使用自己的 CSS 类来覆盖 Snipcart 组件

为此,例如,像 playground 中一样创建 public/snipcart-custom.html。并确保使用 templatesUrl 属性在 Nuxt 配置中添加路径

 snipcart: {
    templatesUrl: '/snipcart-custom.html',

这之后会传递给 Snipcart,以便它了解要检索哪些文件才能访问它将用于构建 Snipcart 组件的所有模板

Snipcart SDK

正如我们之前提到的,我们默认通过 window.Snipcart 或可组合的 useSnipcart 暴露 Snipcart SDK。因此,您将拥有完全相同的 Snipcart SDK 访问权限。

开发

# Install dependencies
pnpm install

# Develop with the playground
pnpm dev

# Build the playground
pnpm dev:build

# Run ESLint
pnpm lint

# Run Vitest
pnpm test
pnpm test:watch

# Release new version
pnpm release