HTML5 页面需通过 HTTP/HTTPS 协议由服务器交付浏览器执行,不可双击打开;本地用 Live Server,内网用 nginx,上线优先选 GitHub Pages/Netlify/Vercel,自建云服务器时推荐 nginx;关键要确保路径、协议、MIME 类型正确。
HTML5 源码不是“运行在服务器上”,而是“由服务器提供给浏览器执行”——所以选服务器的核心标准只有一个:它能不能正确、稳定、低延迟地把 index.html 和配套的 .js、.css、.png 等静态文件发出去。
绝大多数现代 Web 服务器都支持纯静态 HTML5 页面,但适用场景差异极大:
http-server 或 VS Code 的 Live Server 插件就够了。它们不处理动态请求,只做文件分发,启动快、无配置、端口可调(如 http://localhost:5500)。nginx(轻量、高性能、配置直观)。Mac/Linux 可用 brew install nginx,Windows 下直接下 zip 解压即用;配置只需几行:server {
listen 8080;
root /path/to/your/html5-project;
index index.html;
}GitHub Pages(免费、自动 HTTPS、绑定自定义域名)、Netlify(支持预渲染、边缘缓存、表单后端集成)、Vercel(对前端框架友好,html 项目也能一键部署)。它们不用你管服务器运维,上传即生效。nginx 而非 Apache——前者内存占用低、静态文件吞吐高、配置更简洁。因为现代 HTML5 功能(比如 fetch() 请求本地 JSON、import ES 模块、localStorage 在某些上下文中的限制)在 file:// 协议下会被浏览器拦截,报错类似:Access to script at 'file:///xxx.js' from origin 'null' has been blocked。这不是代码写错了,是浏览器安全策略。
http:// 或 https:// 协议localhost —— 所以 Live Server、http-server、nginx 都是在帮你“伪造”一个合法的 HTTP 上下文很
多 HTML5 项目上线后白屏或资源 404,往往不是服务器问题,而是路径和结构没对齐:
立即学习“前端免费学习笔记(深入)”;
index.html 中所有 、 的路径,必须相对于该 HTML 文件的位置。如果部署后路径变了(比如从根目录变成子路径 /myapp/),就得改 base 标签或重写路径logo.PNG 和 logo.png 是两个文件.js 返回 Content-Type: application/javascript,否则 Chrome 会拒绝执行;nginx 默认配好,但自己写的简易 Python/Node 服务器容易漏掉真正卡住人的,从来不是选什么服务器,而是没意识到 HTML5 本质是“浏览器端执行 + 服务器端交付”。只要交付链路干净(路径对、协议对、MIME 对),哪怕用 Python 的 python -m http.server 8000 都能跑起来——关键是别让它跑在 file:// 上。