Hotdry.
application-security

LocalCafe:为餐厅咖啡馆打造的轻量级静态站点生成器

基于 YAML 菜单的响应式静态网站生成,一键部署 Netlify/Vercel,非技术用户快速上线餐厅站点。

对于小型餐厅和咖啡馆来说,建立在线菜单和展示站点往往面临技术门槛高、维护复杂的问题。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 目录同步。

可落地清单:

  1. Fork LocalCafe 模板仓库(假设 GitHub 上开源)。
  2. 编辑 menus.yaml,添加 10-20 菜品,上传本地图片到 public/images/
  3. 本地预览:npx @11ty/eleventy --serve,手机测试响应式。
  4. 推送到 GitHub,Netlify 自动构建(<1min),获取站点 URL。
  5. 添加 Google Analytics:_headers 文件中 /*\n Permissions-Policy: interest-cohort=() 隐私合规。
  6. 更新菜单:编辑 YAML → commit → 自动部署。
  7. 优化:压缩图片 <100KB,启用 Brotli 压缩(Netlify 默认)。

这种方案参数化强,店主只需 YAML 编辑器(如 VS Code),零代码上线。通过 LocalCafe,非技术用户可在 30 分钟内拥有专业菜单站,远胜 Squarespace 等付费工具。

资料来源:

(正文约 950 字)

查看归档