samp标签仅用于标记程序执行后在终端/控制台/GUI中真实可见的原始文本输出,且需同时满足:是程序运行结果、用户肉眼可见、上下文明确为输出。

samp 标签只在一种情况下必须用:你正在标记**用户实际看到的、程序运行后直接吐出来的原始文本**,且这段文本出现在终端、控制台或命令行界面中——不是代码、不是输入、不是模拟数据,就是“它打印出来长这样”。
哪些输出必须用 samp?看三个硬性条件
缺一不可:
- 内容是程序(bash / Python / Node.js / 浏览器 JS 引擎等)执行后生成的纯文本
- 这段文本真实出现在终端/控制台/GUI 提示框里,用户肉眼可见
- 上下文明确表示这是“输出”,比如前面刚写了
npm run dev,后面紧跟的就是它的回显
✅ 合法示例:sampCompiled successfully./samp(webpack 构建完成提示)
✅ 合法示例:sampError: Cannot find module 'express'/samp(Node.js 报错第一行)
✅ 合法示例:sampOn branch main
nothing to commit, working tree clean/samp(但必须配合 pre,否则换行失效)
哪些看似像输出,但其实不能用 samp
常见误用,本质是语义错位:
-
samp{"status":"ok","data":[]}/samp→ 这是 API 响应体,属于结构化数据,该用pre+code class="json" -
sampfetch('/api/users')/samp→ 这是代码调用,该用code -
samp$ ls -l/samp→ 这是用户输入,该用kbd或code -
sampResponse: 200 OK/samp→ “Response:” 是人工添加的说明文字,污染语义;只保留200 OK部分才合法
多行输出怎么写?别只靠 samp
samp 是内联元素,不保留换行符和多余空格。直接写:
立即学习“前端免费学习笔记(深入)”;
<samp>TypeError: Cannot read property 'x' of undefined<br> at script.js:5:12</samp>
会被浏览器压成一行,且 br 在 samp 内部也不被推荐(W3C 不鼓励)。正确做法是:
- 用
pre包裹samp,利用pre的空白符保留能力 - 显式设置
samp { font-family: monospace; white-space: pre; }(部分旧版 Safari 对继承不稳定) - 避免在
samp内写 HTML 实体未转义的内容,比如后端返回的<div>Error</div>必须先转义为<div>Error</div>
最难的从来不是怎么写标签,而是判断“这到底算不算程序输出”。同一段文本,在调试文档里是 samp,在接口文档里就得是 code —— 语义边界模糊,但浏览器和屏幕阅读器认得非常死。



















