本教程从 Starter 模板创建一个 Node.js 站点。结果使用 SQLite 和本地 媒体存储,因此你可以在没有云账户的情况下完成本教程。
前提条件
安装 Node.js 22.16 或更高版本以及 npm。继续之前检查已安装的 Node.js 版本:
node --version
命令必须报告 v22.16.0 或更高版本。
搭建站点
-
从 Node.js Starter 模板创建
my-emdash-site:npm create emdash@latest my-emdash-site -- --template node:starter --pm npm --yes明确选择
node:starter会创建一个包含 Posts 和 Pages 的通用站点。 脚手架工具安装依赖并将生成的EMDASH_ENCRYPTION_KEY写入 被 git 忽略的.env文件。如果依赖安装失败,项目文件会保留。继续之前运行脚手架工具打印的重试命令。
-
进入项目目录并启动开发服务器:
cd my-emdash-site npm run dev保持此终端打开。Astro 会打印本地站点 URL,通常是
http://localhost:4321/。
完成设置
打开 http://localhost:4321/_emdash/admin/。新站点会重定向到设置向导。
-
输入 Site Title 和可选的 Tagline。保持 Include sample content 选中,以便 教程从模板的 Welcome 文章和 About 页面开始,然后选择 Continue。
-
输入 Your Email 和可选的 Your Name,然后选择 Continue。
-
当浏览器打开凭证提示时注册通行密钥。注册后,选择 Open the dashboard。
仪表板打开,导航中显示 Posts 和 Pages。设置向导已将 Starter 模板的内容模型和示例内容应用到本地 SQLite 数据库。
发布编辑
-
打开 Posts,然后打开 Welcome。
-
将标题改为
Hello from EmDash,然后选择 Save。 -
选择 Publish changes,使保存的草稿成为向访客显示的版本。
-
在另一个标签页中打开
http://localhost:4321/。首页列出 Hello from EmDash。
Starter 模板在 Astro 渲染首页时调用 getEmDashCollection("posts")。重新加载
页面会在运行时从 EmDash 读取已发布的版本。
生成的站点如何工作
脚手架生成一个普通的 Astro 项目,EmDash 在三个地方连接。
astro.config.mjs 启用服务器渲染和 Node.js 适配器。它还注册 React 用于
管理面板,并为 EmDash 提供 SQLite 数据库和上传媒体的目录。
src/live.config.ts 文件将该数据库支持的内容连接到 Astro 的 Live Content Collections。
首页然后查询 posts 集合。其查询等同于生成页面的以下部分:
---
import { getEmDashCollection } from "emdash";
const { entries: posts, cacheHint } = await getEmDashCollection("posts", {
orderBy: { published_at: "desc" },
});
if (Astro.cache?.enabled) Astro.cache.set(cacheHint);
---
<ul>
{posts.map((post) => <li>{post.data.title}</li>)}
</ul>
seed/seed.json 定义了 Posts 和 Pages 集合、它们的字段以及设置向导应用的示例内容。
在本地开发期间,EmDash 读取该模型并刷新 emdash-env.d.ts,
使你的编辑器可以在查询代码中检查集合名称和字段。
生成的 .env 在运行时提供加密密钥。它与存储模型和内容的 SQLite 文件是分开的。
下一步
阅读架构了解这些部分如何协同工作。要将 EmDash 添加到 已有的站点,请遵循将 EmDash 添加到现有 Astro 项目。 内容查询指南涵盖过滤器、分页、草稿和错误处理。 当站点准备好离开你的机器时,将其部署到 Cloudflare Workers 或 Node.js。 媒体库指南解释了上传、媒体字段、替换和删除。