HTML5规范要求以<!DOCTYPE html>开头,严格遵循语义化结构(如唯一<main>、<section>需标题)、正确设置lang和charset,script需defer/async,fetch须处理加载/错误/空数据态,并用本地服务器替代file://开发。

用 html 文件开头就写对,别等浏览器报错才反应过来
HTML5 不是“新语言”,而是你手头那个 html 文件的规范升级——关键在文档类型声明和结构约束。漏掉 <!DOCTYPE html> 或乱套 <head>/<body>,Chrome 可能不报错,但 Safari 会静默降级到怪异模式,表单验证、flex 布局甚至 localStorage 行为都可能出偏。
- 必须以
<!DOCTYPE html>开头,独占第一行,前面不能有空格或注释 -
<html lang="zh-CN">的lang属性不是可选的:它影响屏幕阅读器、搜索引擎分词,也关系到某些 CSS 伪类(如:lang())是否生效 -
<meta charset="UTF-8">要放在<head>最靠前位置,否则中文可能乱码,且部分旧版 IE 会忽略后续meta - 别把
<script>直接塞<head>里又没加defer或async——它会阻塞 HTML 解析,白屏时间拉长
语义化标签不是“加分项”,是避免 JS 拼命补救的底线
用一堆 <div id="header"> + <div class="main-wrap"> 写页面,短期内能跑,但很快会卡在可访问性检测、SEO 抓取失败、或者某天想用 prefers-reduced-motion 做动效降级时发现根本没法精准选中“主内容区”。
-
<header>、<nav>、<main>、<article>、<aside>、<footer>是互斥容器,一个页面只该有一个<main>,多个<article>可以并列 -
<section>不等于“一个区块”,它必须有标题(<h2>~<h6>),否则语义断裂;纯样式分隔请继续用<div> - 表单控件必须配
<label for="xxx">,for值要严格匹配id;用<label>文本 <input></label>包裹写法虽可行,但动态插入 input 时容易漏绑定
fetch 加 async/await 读数据,但别忘了用户正在看空白页
静态 HTML 能直接渲染,但现代网页常要从 API 拉数据再填进 <main>。这时候光写对 fetch 不够,得处理加载态、错误态、空数据态——否则用户刷开页面,看到三秒白屏+突然跳内容,体验就是“卡”。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
- 发起请求前,先在 DOM 里放个
<div class="loading">加载中…</div>,而不是等 JS 执行完才 append -
fetch默认不带 cookie,登录态接口要加{ credentials: 'include' },否则 401 不是你代码写的错,是浏览器默默拦了 -
await fetch(url)成功只代表网络通,不代表 HTTP 状态码是 200:response.ok或response.status === 200必须显式判断 - JSON 解析失败(
response.json())会抛异常,得包在try/catch里,否则整个脚本中断,页面交互失灵
本地测试就用 file://?跨域和缓存会让你怀疑人生
双击打开 index.html 看起来最省事,但 fetch 请求本地 JSON 文件会触发 CORS 错误,localStorage 在某些浏览器里会被禁用,连 @import CSS 都可能因 MIME 类型被拒——这不是你代码问题,是协议限制。
立即学习“前端免费学习笔记(深入)”;
- 开发阶段务必起本地服务:VS Code 装 Live Server 插件,或命令行用
npx serve、python3 -m http.server - Chrome 启动时加
--unsafely-treat-insecure-origin-as-secure="http://localhost:8000" --user-data-dir=/tmp/chrome-test可临时绕过 HTTPS 限制(仅调试),但别写进文档 - 改完 CSS 刷新没变化?不是缓存没清,是
<link rel="stylesheet">默认不校验内容哈希,加个?v=1.0.1或用cache-control: no-cache响应头更可靠
真正麻烦的从来不是“怎么写出完整网页”,而是当 fetch 返回空数组、localStorage 突然变 null、或者盲人用户反馈“所有按钮都叫‘点击这里’”时,你有没有在第一步就埋好定位线索。

















