实现说明
当前代码结构
text
news-base/
├── .vitepress/
│ ├── config.mts
│ └── theme/
│ ├── custom.css
│ └── components/
├── config/
│ ├── categories.json
│ └── news_sources.json
├── docs/
│ ├── index.md
│ ├── today.md
│ ├── admin/
│ └── {category}/index.md
├── public/api/
└── scripts/
├── crawl_news.js
├── quick-crawl.js
├── quick-deploy.js
└── crawlers/main.js脚本职责
scripts/crawl_news.js负责读取配置、生成结构化新闻数据、写入public/api/和data/daily/。scripts/quick-crawl.js兼容“快速生成数据”的旧入口,现在直接复用主脚本。scripts/quick-deploy.js用脚本方式串起npm run site:prepare和npm run build。scripts/crawlers/main.js兼容旧命令入口,避免历史脚本调用直接失效。
页面层实现
NewsMetrics.vue首页站点概览卡片,消费overview.json。NewsDashboard.vue今日总览页,消费latest.json并提供筛选、搜索和排序。NewsBoard.vue分类专区页,消费categories/{id}.json。
为什么这是“可替换实现”
只要未来的真实抓取器继续输出相同字段:
- 页面层不需要重写。
- 文档里的 API 契约不需要重写。
- Cloudflare Pages 构建链路不需要重写。
也就是说,后续变化只会集中在数据生产层,而不会波及整个站点。