CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Node.js 框架与 ORM/课时/模板引擎
RawBlame
课时目录12 节

Node.js 框架与 ORM

  1. 01Node 框架生态
  2. 02Fastify
  3. 03Hono
  4. 04fetch 与 HTTP 客户端
  5. 05Drizzle ORM
  6. 06Knex 查询构建
  7. 07Sequelize
  8. 08模板引擎
  9. 09Vitest 测试
  10. 10日志
  11. 11生产运行
  12. 12综合练习

模板引擎

ejs、pug、marko。

25 分钟

模板引擎

纯 JSON API 之外,Node 仍常 服务端渲染 HTML:管理后台、邮件预览、旧站迁移。Express/Fastify 通过适配器挂载 EJS、Pug、Marko 等模板引擎。

学习目标

  • 在 Fastify 中渲染 EJS 页面
  • 了解 Pug 缩进语法与 Marko 组件化
  • 判断 SSR 模板 vs 前端 SPA 的边界

EJS + Fastify

import Fastify from "fastify";
import fastifyView from "@fastify/view";
import ejs from "ejs";

const app = Fastify();

await app.register(fastifyView, {
  engine: { ejs },
  root: "views",
});

app.get("/tracks", async (req, reply) => {
  return reply.view("tracks.ejs", {
    tracks: [{ slug: "nodejs-essentials", title: "Node 基础" }],
  });
});
<!-- views/tracks.ejs -->
<ul>
  <% tracks.forEach(t => { %>
    <li><%= t.title %> (<%= t.slug %>)</li>
  <% }) %>
</ul>

EJS 语法接近 HTML + <% %>,Java 开发者可类比 JSP。

引擎对比

引擎语法特点
EJSHTML + JS 片段直白、易混用逻辑
Pug缩进 DSL简洁,需适应无尖括号
Marko组件 + 流式偏性能与组件复用

本站 platform 以 React/Next 为主前端(nextjs-essentials);模板课面向 遗留 SSR、邮件、内网工具页。

与 API 分层

公开站点 → Next SSR/SSG
管理/API  → Fastify JSON + Drizzle
内网报表 → EJS/Pug 快速出页

避免在模板里写复杂业务;数据在 handler 查好再传入 view。

练习

  • 用 EJS 渲染 tracks 列表页
  • 读一段 Pug 官方 Quick Start,对照 EJS 差异
  • 讨论:何种页面你会选 Next 而非 EJS

小结

模板引擎适合快出 HTML;现代对外站点优先 Next。 下一课 Vitest:Node 里的测试选型。

加载本节练习…
← 上一课
Sequelize
下一课 →Vitest 测试