技术栈
SmartEdit AI 使用现代化的技术栈构建,确保性能、可维护性和开发体验。
🎯 技术选型原则
- 现代化 - 使用最新的技术和最佳实践
- 类型安全 - TypeScript 提供类型检查
- 高性能 - 优化加载速度和运行效率
- 易维护 - 清晰的代码结构和文档
- 开发体验 - 快速的构建和热更新
🏗️ 核心技术
Chrome Extension Manifest V3
版本: Manifest V3
选择原因:
- Chrome 官方推荐的最新标准
- 更好的性能和安全性
- 支持 Service Worker
- 支持 Side Panel API
主要特性:
- Service Worker 替代 Background Page
- 声明式网络请求
- 更严格的内容安全策略
- 改进的权限模型
相关文档:
React 18
版本: 18.2.0
选择原因:
- 组件化开发,代码复用性高
- 虚拟 DOM,性能优异
- 丰富的生态系统
- 优秀的开发体验
使用的特性:
- 函数式组件
- Hooks(useState, useEffect, useCallback 等)
- Context API
- Suspense(计划使用)
相关文档:
TypeScript
版本: 5.3.3
选择原因:
- 静态类型检查,减少错误
- 更好的 IDE 支持
- 代码可读性和可维护性高
- 重构更安全
配置:
json
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"lib": ["ES2020", "DOM"],
"jsx": "react-jsx",
"strict": true,
"moduleResolution": "bundler",
"resolveJsonModule": true,
"esModuleInterop": true
}
}相关文档:
🎨 样式方案
TailwindCSS
版本: 3.3.6
选择原因:
- 实用优先的 CSS 框架
- 快速开发,无需写 CSS
- 高度可定制
- 生产环境自动清除未使用的样式
配置:
javascript
// tailwind.config.js
module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
theme: {
extend: {
colors: {
primary: '#667eea',
secondary: '#764ba2',
}
},
},
plugins: [],
}相关文档:
PostCSS
版本: 8.4.32
用途:
- CSS 预处理
- 自动添加浏览器前缀
- CSS 优化和压缩
插件:
- autoprefixer - 自动添加浏览器前缀
- tailwindcss - TailwindCSS 支持
🔧 构建工具
Vite
版本: 5.0.8
选择原因:
- 极速的冷启动
- 即时的热模块替换(HMR)
- 真正的按需编译
- 优化的生产构建
配置:
typescript
// vite.config.ts
export default defineConfig({
plugins: [react()],
build: {
outDir: 'dist',
rollupOptions: {
input: {
popup: 'src/popup/index.html',
options: 'src/options/index.html',
sidepanel: 'src/sidepanel/index.html',
}
}
}
})相关文档:
插件
@vitejs/plugin-react
- React 支持
- Fast Refresh
- JSX 转换
vite-plugin-chrome-extension(计划使用)
- Chrome 扩展专用插件
- 自动处理 manifest.json
- 优化构建流程
📦 状态管理
Zustand
版本: 4.4.7
选择原因:
- 轻量级(~1KB)
- 简单易用的 API
- TypeScript 友好
- 无需 Provider 包裹
- 支持中间件
使用示例:
typescript
import create from 'zustand'
interface AppState {
apiKey: string
setApiKey: (key: string) => void
}
const useStore = create<AppState>((set) => ({
apiKey: '',
setApiKey: (key) => set({ apiKey: key }),
}))相关文档:
🔌 API 集成
AI 服务
OpenAI API
- GPT-3.5-Turbo
- GPT-4
- GPT-4o
DeepSeek API
- DeepSeek-V3
- DeepSeek-Chat
智谱 AI API
- GLM-4
- GLM-4-Flash
其他服务商
- 阿里云百炼
- 硅基流动
- 月之暗面
API 调用封装:
typescript
interface AIService {
generateTitle(content: string): Promise<string[]>
rewriteText(text: string, type: string): Promise<string>
summarize(text: string): Promise<string>
}
class OpenAIService implements AIService {
// 实现...
}图片服务
Unsplash API
- 搜索图片
- 获取图片详情
- 下载图片
Pixabay API
- 搜索图片
- 多种媒体类型
🗄️ 数据存储
Chrome Storage API
使用场景:
- 存储 API Key
- 保存用户设置
- 缓存数据
存储类型:
typescript
// chrome.storage.local - 本地存储
chrome.storage.local.set({ apiKey: 'xxx' })
// chrome.storage.sync - 同步存储(跨设备)
chrome.storage.sync.set({ theme: 'dark' })IndexedDB
版本: idb 7.1.1
使用场景:
- 存储大量数据
- 离线缓存
- 历史记录
封装库:
typescript
import { openDB } from 'idb'
const db = await openDB('smartedit', 1, {
upgrade(db) {
db.createObjectStore('history')
db.createObjectStore('favorites')
}
})🧪 开发工具
代码质量
ESLint
- 代码规范检查
- 自动修复问题
Prettier
- 代码格式化
- 统一代码风格
版本控制
Git
- 版本管理
- 协作开发
GitHub
- 代码托管
- Issue 跟踪
- CI/CD
包管理
npm
- 依赖管理
- 脚本运行
package.json 脚本:
json
{
"scripts": {
"dev": "vite build --watch",
"build": "tsc && vite build",
"preview": "vite preview",
"lint": "eslint src --ext ts,tsx",
"format": "prettier --write src"
}
}📚 依赖列表
生产依赖
json
{
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"zustand": "^4.4.7",
"idb": "^7.1.1",
"md5": "^2.3.0"
}
}开发依赖
json
{
"devDependencies": {
"@types/chrome": "^0.0.254",
"@types/react": "^18.2.43",
"@types/react-dom": "^18.2.17",
"@types/node": "^24.10.1",
"@types/md5": "^2.3.5",
"@vitejs/plugin-react": "^4.2.1",
"typescript": "^5.3.3",
"vite": "^5.0.8",
"tailwindcss": "^3.3.6",
"autoprefixer": "^10.4.16",
"postcss": "^8.4.32",
"concurrently": "^9.2.1",
"archiver": "^6.0.1",
"sharp": "^0.33.0",
"terser": "^5.44.1"
}
}🔄 技术演进
已完成
- ✅ Manifest V3 迁移
- ✅ TypeScript 重构
- ✅ React 18 升级
- ✅ Vite 构建优化
- ✅ TailwindCSS 集成
进行中
- 🔄 单元测试覆盖
- 🔄 E2E 测试
- 🔄 性能优化
- 🔄 代码分割
计划中
- 📋 PWA 支持
- 📋 WebAssembly 优化
- 📋 多语言支持
- 📋 主题系统
🎓 学习资源
官方文档
推荐阅读
社区资源
🔍 技术决策
为什么选择 React 而不是 Vue?
原因:
- 更成熟的生态系统
- 更好的 TypeScript 支持
- 更多的学习资源
- 团队更熟悉
为什么选择 Zustand 而不是 Redux?
原因:
- 更轻量(~1KB vs ~10KB)
- API 更简单
- 无需 Provider 包裹
- 对于小型项目足够用
为什么选择 Vite 而不是 Webpack?
原因:
- 开发服务器启动更快
- 热更新速度更快
- 配置更简单
- 生产构建优化更好
为什么选择 TailwindCSS?
原因:
- 快速开发
- 样式一致性
- 响应式设计简单
- 生产环境体积小
📊 性能指标
构建性能
- 开发模式启动:< 1s
- 热更新:< 100ms
- 生产构建:< 30s
运行性能
- 扩展加载:< 500ms
- 侧边栏打开:< 200ms
- AI 响应:2-5s(取决于网络)
- 内存占用:< 50MB
优化措施
- 代码分割
- 懒加载
- 资源压缩
- 缓存策略
技术选型建议
技术选型应该基于项目需求、团队能力和长期维护考虑。不要盲目追求新技术,选择最适合的才是最好的。