CMS系统 活跃维护

nextjs-woocommerce

w3bdesign/nextjs-woocommerce

🔥 使用 Typescript、WordPress(WooCommerce)后端和 Algolia 搜索的 Next.js(React)无头电商网站

611
Stars 标星
158
Forks 分支
6
Watchers 关注
14
Open Issues
TypeScript
主要语言
AGPL-3.0
开源协议
12.5 MB
仓库大小
11 小时前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:w3bdesign/nextjs-woocommerce
git clone https://github.com/w3bdesign/nextjs-woocommerce.git
git clone git@github.com:w3bdesign/nextjs-woocommerce.git
README.md master

英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。

📷 原文此处有图片,请前往 GitHub 仓库查看完整内容。

使用 WooCommerce 后端的 Next.js 电子商务网站

实时网址:

目录(TOC)

安装

  1. 在您的 WordPress 插件目录中安装并激活以下必需插件:

可选插件:

当前版本已测试并确认与以下版本兼容:

  • WordPress 版本 7.0.2
  • WooCommerce 版本 10.9.4
  • WP GraphQL 版本 2.18.0
  • WooGraphQL 版本 1.0.3
  • WPGraphQL CORS 版本 2.1
  1. 用于调试和测试,请安装以下任一浏览器插件:

    (Firefox)

    (Chrome)

  2. 确保 WooCommerce 已有一些产品。

  3. 克隆或分支此仓库,修改 .env.example 并重命名为 .env。

    然后在 Vercel 或您首选的托管解决方案中相应设置环境变量。

    请参见

  4. 根据您的设置修改数值

  5. 使用 pnpm run dev 启动服务器

  6. 在 WooCommerce 中启用 COD(货到付款)支付方式

  7. 将产品添加到购物车

  8. 前往结账(Gå til kasse)

  9. 填写您的信息并下单

功能

  • Next.js 版本 16.1.6
  • React 版本 19.2.4
  • Typescript
  • 使用 Playwright 进行测试
  • 连接到 WooCommerce GraphQL API 并列出产品的名称、价格和展示图片
  • 支持简单产品和可变产品
  • 使用 Zustand 进行状态管理的 WooCommerce 购物车处理和结账
    • 使用 localStorage 同步持久化购物车状态
    • 通过选择性订阅实现高效更新
    • 类型安全的购物车操作
    • 货到付款支付方式
  • Algolia 搜索(需要 algolia-woo-indexer)
  • 在可能的情况下符合 WCAG 可访问性标准
  • 无图片产品的占位符
  • 状态管理:
    • Zustand 用于全局状态管理
    • Apollo 客户端与 GraphQL
  • React Hook 表单
  • 原生 HTML5 表单验证
  • 使用 Framer motion、Styled components 和 Animate.css 的动画
  • 使用 Styled Components 创建的加载旋转器
  • 在导航过程中使用 Nprogress 显示页面加载进度
  • 完全响应式设计
  • 分类和产品列表
  • 显示库存状态
  • 使用内置 Next.js 功能的漂亮网址
  • 使用 Tailwind 3 进行样式设计
  • JSDoc 注释
  • 自动化 Lighthouse 性能监控
    • 持续进行性能、可访问性和最佳实践检查
    • 对每个拉取请求生成自动报告
    • 性能指标跟踪:
    • 性能评分
    • 可访问性合规性
    • 最佳实践遵循情况
    • 搜索引擎优化
    • 渐进式 Web 应用准备情况
  • 产品筛选:
    • 使用 Tailwind 的颜色系统进行动态颜色筛选
    • 移动优化的筛选布局
    • 具有ARIA标签的可访问表单控件
    • 价格范围滑块
    • 尺寸和颜色筛选
    • 产品类型分类
    • 排序选项(热度、价格、最新)

设计系统

此项目使用自定义设计系统,该系统基于 Tailwind CSS 设计令牌构建。该系统定义在 tailwind.config.js 和 globals.css 中。

颜色调色板

该调色板使用柔和的石板蓝作为主色,搭配温暖的中性色表面——选择这种搭配是为了营造平静、北欧风格,并且适合家居用品商店。

令牌 十六进制色 使用场景
primary #3B6B8A 按钮、链接、聚焦环、活动状态
primary-light #5A8BA8 悬停高亮、信息状态
primary-dark #254D6B 移动导航、按钮悬停、深色高亮
accent #4A8F8F 次要高亮(青色)
surface #FAF9F7 页面背景、卡片、输入框(暖米白色)
surface-alt #F3F1ED 图片占位符、交替表面
border #E5E2DC 所有边框和分隔线
text #2C2C2C 主要正文文本(暖近黑色)
text-muted #6B6862 次要文本、描述
text-light #9C9890 第三级文本、删除线价格
success #2D8A5E 库存状态、成功消息
warning #C4882A 警告状态
error #B83B2A 销售价格、错误、破坏性操作

排版

  • 使用 Tailwind 的默认系统字体堆栈
  • 字体比例从 text-xs (0.75rem) 到 text-5xl (3rem) 定义
  • 层级规则:产品卡片标题 text-xl font-bold > 价格 text-lg、详情页 h1 text-2xl md:text-3xl font-light > 卡片标题

无障碍

  • 全局 focus-visible 环(2px solid primary)应用于所有交互元素
  • prefers-reduced-motion: reduce 禁用所有动画和过渡
  • 表单输入显示内联错误信息,使用 role="alert" 和 aria-invalid
  • 必填字段用星号标记
  • 结账输入框具有正确的 type (email, tel) 和 autocomplete 属性
  • 图片使用描述性 alt 文本
  • 按钮使用 disabled:cursor-not-allowed
  • 整个页面采用语义化 HTML (<nav>, <main>, <section>, <label htmlFor>)

按钮变体

变体 外观 使用场景
primary 实心蓝色 (bg-primary) 主要操作按钮 — KJØP, GÅ TIL KASSE, BESTILL
secondary 实心红色 (bg-error) 破坏性操作 — Fjern
hero 深色叠加上的白色 主要部分 CTA
filter 带边框,可切换 尺寸筛选按钮
reset 浅灰色表面 重置筛选

所有按钮都包含 hover、active:scale-[0.98]、focus-visible 和 disabled 状态,并带有 duration-200 过渡。

CSS 自定义属性

设计令牌也可作为 CSS 自定义属性在 globals.css 中使用,以便在 Tailwind 以外使用:

var(--color-primary)      /* #3B6B8A */
var(--color-surface)      /* #FAF9F7 */
var(--color-text)         /* #2C2C2C */
var(--color-error)        /* #B83B2A */

Lighthouse 性能监控

该项目通过 GitHub Actions 使用自动化 Lighthouse 测试,以确保高质量的网页性能。在每次拉取请求时:

  • 性能、可访问性、最佳实践和 SEO 会被自动评估
  • 结果会直接发布到拉取请求中
  • 强制执行最低分数阈值以:
    • 性能:分析加载性能、交互性和视觉稳定性
    • 可访问性:确保符合 WCAG 标准和包容性设计
    • 最佳实践:验证现代网页开发标准
    • SEO:检查搜索引擎优化基础
    • PWA:评估渐进式网页应用功能

在 GitHub Actions 选项卡的“Lighthouse Check”工作流程下查看最新的 Lighthouse 结果。

安全性

该项目通过 GitHub Actions 在每次推送和拉取请求时运行自动化的 OWASP 安全扫描:

扫描 工具 捕捉到的内容
🔑 秘密检测 gitleaks 硬编码的 API 密钥、密码、令牌、私钥
🔍 静态应用安全测试 (SAST) Semgrep OWASP 前十的 React/Next.js 特定漏洞
📦 依赖性检测 Trivy npm 包中已知的 CVE(严重/高风险)

自定义 Semgrep 规则覆盖 OWASP 分类 A01–A10,包括 XSS 预防、注入检测、认证检查、SSRF 保护和安全配置错误。在 GitHub Actions 标签下的“OWASP 安全扫描”工作流中查看结果。

故障排除

我收到购物车未定义错误或其他 GraphQL 错误

检查你是否使用了最新版本的 wp-graphql-woocommerce 插件

产品页面无法加载

检查产品的属性。目前应用程序需要尺寸和颜色。

问题

总体而言,该应用程序按预期工作,但尚未在生产环境中进行广泛测试。
在部署到生产环境之前,需要进行更多的测试和调试。

话虽如此,请注意以下事项:

  • 目前只有简单产品和可变产品可以正常使用。其他产品类型是否可用尚不清楚。
  • 目前仅支持货到付款(COD)。以后可能会添加更多支付方式。

该项目已通过 BrowserStack 进行测试。

待办事项

  • 在注册页面中实现 UserRegistration.component.tsx
  • 添加包含订单历史的用户仪表板
  • 在注册页面上添加 Cloudflare Turnstile
  • 确保注册页面上的邮箱真实有效
  • 在购物车/结账页面显示总计
  • 将账单地址复制到收货地址
  • 隐藏缺货产品
本站来源与版权声明
  • 本文标题:nextjs-woocommerce - 🔥 使用 Typescript
  • 本文链接:https://www.cn121.com/cms/w3bdesign-nextjs-woocommerce.html
  • 原项目:w3bdesign/nextjs-woocommerce 版权归原作者 w3bdesign 及贡献者所有
  • 收录信息:本站于 2026-10-09 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 AGPL-3.0(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。基于本页内容形成的衍生作品, 须同样以该协议发布。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 w3bdesign/nextjs-woocommerce。
  • 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。