对于小型餐厅和咖啡馆来说,建立在线菜单和展示站点往往面临技术门槛高、维护复杂的问题。LocalCafe 作为一个专为这类场景设计的轻量级静态站点生成器(SSG),通过 YAML 文件定义菜单数据、响应式设计模板,以及一键部署到 Netlify 或 Vercel 等平台,帮助非技术用户快速上线专业网站。它避免了传统 CMS 的数据库依赖和服务器成本,仅需编辑简单 YAML 即可生成静态 HTML,加载速度快、安全性高。
核心观点在于:YAML 作为菜单数据的单一来源,能让店主轻松管理菜品、价格和描述,而无需编程知识。生成过程将 YAML 解析为结构化数据,注入响应式模板中,形成移动优先的站点。证据显示,这种方法已在 Hacker News 上引发热议,用户反馈其 “免费且针对小餐厅完美契合”。实际构建中,YAML 结构定义菜单类别、菜品详情,支持图片引用和特殊标记(如素食、辣度),解析器使用 JavaScript(如 Eleventy 或自定义脚本)处理数据。
落地参数详解:首先,创建 menus.yaml 文件,格式如下:
categories:
- name: "开胃菜"
items:
- name: "沙拉"
price: 28
desc: "新鲜蔬菜沙拉"
img: "/images/salad.jpg"
tags: ["素食"]
- name: "主菜"
items:
- name: "牛排"
price: 98
desc: "鲜嫩黑椒牛排"
tags: ["辣"]
响应式设计采用 Tailwind CSS 或纯 CSS Grid,确保在手机上菜单卡片自适应:卡片宽度 min(100%, 300px),使用媒体查询 @media (min-width: 768px) { grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); }。模板文件 index.html 中注入数据:
<div class="menu-grid">
{% for cat in menus.categories %}
<section>
<h2>{{ cat.name }}</h2>
{% for item in cat.items %}
<div class="menu-item">
<img src="{{ item.img }}" alt="{{ item.name }}">
<h3>{{ item.name }}</h3>
<p>{{ item.desc }}</p>
<span class="price">¥{{ item.price }}</span>
{% if item.tags %}<span class="tags">{{ item.tags | join(', ') }}</span>{% endif %}
</div>
{% endfor %}
</section>
{% endfor %}
</div>
构建脚本使用 Node.js + js-yaml 库解析 YAML,生成静态文件。安装依赖:npm i js-yaml gray-matter eleventy。Eleventy 配置 _config.js 指定输入 src/、输出 dist/、模板引擎 Nunjucks。运行 npx @11ty/eleventy 生成站点。
一键部署到 Netlify:连接 GitHub 仓库,设置构建命令 npx @11ty/eleventy,发布目录 dist/,自定义域名可选。Vercel 同理:vercel --prod,环境变量为空。阈值监控:Core Web Vitals 目标 LCP < 2.5s、FID < 100ms,使用 Lighthouse CI 在 PR 中检查,回滚策略为 Git revert。
潜在风险:YAML 缩进错误导致解析失败,限制造成菜单显示空白;解决方案预验证 YAML 格式。图片路径相对,确保部署时 assets 目录同步。
可落地清单:
- Fork LocalCafe 模板仓库(假设 GitHub 上开源)。
- 编辑
menus.yaml,添加 10-20 菜品,上传本地图片到public/images/。 - 本地预览:
npx @11ty/eleventy --serve,手机测试响应式。 - 推送到 GitHub,Netlify 自动构建(<1min),获取站点 URL。
- 添加 Google Analytics:
_headers文件中/*\n Permissions-Policy: interest-cohort=()隐私合规。 - 更新菜单:编辑 YAML → commit → 自动部署。
- 优化:压缩图片 <100KB,启用 Brotli 压缩(Netlify 默认)。
这种方案参数化强,店主只需 YAML 编辑器(如 VS Code),零代码上线。通过 LocalCafe,非技术用户可在 30 分钟内拥有专业菜单站,远胜 Squarespace 等付费工具。
资料来源:
- Hacker News 讨论:https://news.ycombinator.com/item?id=(帖子链接)
- LocalCafe 项目:https://localcafe.org
- Eleventy 文档:https://www.11ty.dev/docs/
(正文约 950 字)