HTML 中的文本
本课属于 Coddy Node.js 学习旅程的“Express 基础”单元。第 9 课,共 23 课。
访客可能会输入 HTML 会当作标记的字符。如果标题中包含 <b>,直接将它放入页面会创建一个标签。转义会将这些字符转换为浏览器显示的文本。
escapeHtml('<b>Lunch</b>');
// <b>Lunch</b>这个辅助函数会将 & 转换为 &,浏览器会将其显示为和号。双引号会变成 ";撇号保持不变。无论插入的文本值由谁编写,都要先转义,再用你自己的 HTML 将它包起来。如果转义整个页面,标题标签也会显示为文本。你不需要编写这个辅助函数,关键是决定在哪里使用它。
在 URL 中,空格写作 %20,和号写作 %26,尖括号写作 %3C 和 %3E。这些编码可以将标题文本与查询语法区分开来。
挑战
简单编辑 exercise.js。将标题放入你自己的标题标签之前,先使用提供的辅助函数处理标题。将完成后的标题放入 html 中返回。
试试运行:GET /result?title=Fish%20%26%20Chips 会返回 {"html":"<h1>Fish & Chips</h1>"}。试试 /result?title=%3Cb%3ELunch%3C%2Fb%3E:插入的标题必须是文本,而你的标题仍应是标记。
亲手试试
import { escapeHtml } from './html.js';
export function exercise({ title }) {
return { html: `<h1>${title}</h1>` };
}
Express 基础中的所有课
自己练习: Express 在线编辑器