# 前端配置 **这里仅提供一套开箱即用的方案,如果是个人开发者可以根据 API 文档自行编写前端评论组件。** 当前前端部分主要由两块组成: - 评论组件(widget):以 UMD 库形式输出 `cwd-comments.js`,可在任意站点中直接通过 `
``` ### 管理后台(cwd-comments-admin) 管理后台用于审核评论、删除评论和管理评论设置。 ```bash cd cwd-comments-admin # 安装依赖 npm install # 开发环境启动(默认端口见 vite.config.ts,一般为 1226) npm run dev # 生产环境构建 npm run build # 本地预览生产构建结果 npm run preview ``` 将 `cwd-comments-admin/dist` 目录部署到任意静态站点托管服务(如 Cloudflare Pages、Vercel、Netlify 等),并确保浏览器可以访问到后端 API 地址。 ## 评论组件初始化 在初始化 `CWDComments` 实例时,可以传入以下配置参数: ```html
``` ### 参数说明 | 参数 | 类型 | 必填 | 默认值 | 说明 | | -------------- | ----------------------- | ---- | ----------------------------- | -------------------------- | | `el` | `string \| HTMLElement` | 是 | - | 挂载元素选择器或 DOM 元素 | | `apiBaseUrl` | `string` | 是 | - | API 基础地址 | | `postSlug` | `string` | 是 | - | 文章唯一标识符 | | `postTitle` | `string` | 否 | 页面标题或 `postSlug` | 文章标题,用于邮件通知 | | `postUrl` | `string` | 否 | 当前页面 URL | 文章 URL,用于邮件通知 | | `theme` | `'light' \| 'dark'` | 否 | `'light'` | 主题模式 | | `pageSize` | `number` | 否 | `20` | 每页显示评论数 | | `avatarPrefix` | `string` | 否 | `https://gravatar.com/avatar` | 头像服务前缀 | | `adminEmail` | `string` | 否 | - | 博主邮箱,用于显示博主标识 | | `adminBadge` | `string` | 否 | `博主` | 博主标识文字 | ## 跨域访问配置 前端评论组件与管理后台均通过 HTTP 与后端交互。当前后端在 `/api/*` 和 `/admin/*` 路径下统一开启了 CORS: - `Access-Control-Allow-Origin: *` - 允许方法:`GET, POST, PUT, DELETE, OPTIONS` - 允许请求头:`Content-Type, Authorization` - 不允许携带 Cookie 等凭证(`Access-Control-Allow-Credentials: false`) 因此在常见部署方式下,你只需要在前端将 `apiBaseUrl` 指向后端 Worker 地址即可,无需额外前端跨域配置,例如: ```javascript const comments = new CWDComments({ el: '#comments', apiBaseUrl: 'https://cwd-comments-api.example.com', postSlug: window.location.pathname }); comments.mount(); ``` 如果你在本地同时运行前端和后端,可以按以下方式联调: - 使用 `wrangler dev` 启动后端(默认端口一般为 8787,如有需要可使用 `wrangler dev --port 8788` 指定端口)。 - 在评论组件开发页面(`widget/index.html`)中,将 API 地址设置为对应本地端口,例如 `http://localhost:8787`。 后端关于 CORS 的更详细说明见:[后端配置](./backend-config.md#跨域配置与安全性)。 ## 静态资源部署规范 为了保证前端资源加载稳定,建议按如下规范部署静态资源: - 使用 HTTPS 域名托管 `cwd-comments.js` 以及管理后台构建产物。 - 将评论组件脚本放在具备缓存能力的静态资源域名或 CDN 上,例如: - `https://static.example.com/cwd-comments/v0.0.1/cwd-comments.js` - 当发布新版本时,建议通过路径或文件名中的版本号进行区分,避免缓存错乱。 - 页面中引入脚本时保持路径稳定,便于后续版本升级: ```html ``` 管理后台的构建结果同样建议部署到独立的静态站点域名下,例如: - `https://comments-admin.example.com` 部署 `cwd-comments-admin/dist` ## 头像服务前缀 常用的 Gravatar 镜像服务: | 服务 | 前缀地址 | | --------------- | -------------------------------- | | Gravatar 官方 | `https://gravatar.com/avatar` | | Cravatar (国内) | `https://cravatar.cn/avatar` | | 自定义镜像 | `https://your-mirror.com/avatar` | ## 实例方法 | 方法 | 说明 | | ---------------------- | ------------------------------ | | `mount()` | 挂载组件到 DOM | | `unmount()` | 卸载组件 | | `updateConfig(config)` | 更新配置(支持动态切换主题等) | | `getConfig()` | 获取当前配置 | ## 使用示例 ```javascript // 动态切换主题 comments.updateConfig({ theme: 'dark' }); // 切换文章 comments.updateConfig({ postSlug: 'another-post' }); ```