hexo 学习 0023:hexo 服务器

在 Hexo 3.0 之后,内置的服务器功能被独立成了一个单独的模块。这意味着如果你想使用 hexo server 命令在本地预览博客,必须先手动安装这个模块。你可以把 hexo-server 想象成博客的“本地试衣间”,让你在衣服(网站)正式上架(部署到公网)之前,先在自己电脑上看看效果。

安装步骤

在使用服务器功能前,你需要通过 npm 安装 hexo-server 模块。这是使用本地预览功能的前提。

命令示例:

1
npm install hexo-server --save

参数说明:

  • hexo-server:要安装的模块名称。
  • --save:将该模块添加到你的 package.json 依赖列表中。这样当你把博客代码分享给别人或在另一台电脑上克隆时,只需运行 npm install 就能自动安装此模块,无需手动再次输入安装命令。

启动服务器

安装完成后,你就可以启动本地服务器了。Hexo 会监视你源文件的变化,一旦你保存了文章或修改了配置,它会自动重新编译并刷新页面,无需手动重启。

命令示例:

1
hexo server

默认行为:

  • 访问地址http://localhost:4000
  • 监听状态:动态模式。监视 sourcetheme 等目录的文件变动,自动更新。
  • 适用场景:日常写作、主题开发、调试代码。

常用参数与配置

在实际使用中,你可能会遇到端口冲突,或者需要在特定网络环境下测试,这时就需要用到以下参数。

1. 更改端口 (-p)

默认端口是 4000。如果这个端口被其他程序占用(你会看到 EADDRINUSE 错误),或者你习惯使用其他端口,可以通过 -p 选项指定。

命令示例:

1
hexo server -p 5000

参数说明:

  • -p--port:指定服务器监听的端口号。
  • 5000:示例端口号。设置后,你需要通过 http://localhost:5000 访问博客。

2. 静态模式 (-s)

静态模式下的服务器行为与默认的动态模式完全不同。它不会监视文件变化,也不会自动重新生成网页。它仅仅是一个简单的静态文件服务器,直接服务于 public 文件夹中的内容。

命令示例:

1
hexo server -s

(等价于 hexo server --static)

重要注意事项:

  • 前置操作:在运行此命令前,你必须先手动执行 hexo generate (或 hexo g) 生成静态文件。如果 public 文件夹是空的或过期的,你看到的将是旧内容或空页面。
  • 性能特点:因为没有文件监视和实时编译的开销,响应速度极快。
  • 适用场景:模拟生产环境。当你想要测试最终生成的静态网页效果,或者在资源受限的服务器上运行时使用。这就像是在正式演出前的“带妆彩排”,展示的是最终定稿的效果,而不是排练过程。

概念辨析:动态模式 vs 静态模式

特性 动态模式 (默认) 静态模式 (-s)
文件监视 开启,自动检测变动并刷新 关闭,不检测变动
自动生成 是,修改保存即更新 否,必须预先运行 hexo generate
CPU/内存占用 相对较高 (需运行编译逻辑) 极低 (仅分发文件)
主要用途 写作、开发、调试 生产环境模拟、最终效果验收

3. 自定义 IP 地址 (-i)

默认情况下,Hexo 服务器监听 0.0.0.0,这意味着它不仅允许本机访问,还允许局域网内的其他设备通过你的电脑 IP 访问。如果你只想让本机访问,或者需要指定特定的网络接口,可以使用 -i 选项。

命令示例:

1
hexo server -i 192.168.1.1

参数说明:

  • -i--ip:指定服务器绑定的 IP 地址。
  • 192.168.1.1:示例 IP。
    • 如果设置为 127.0.0.1,则只有你自己能访问。
    • 如果设置为 0.0.0.0 (默认),局域网内的手机或其他电脑都能通过你的 IP 访问预览。
    • 如果设置为具体的局域网 IP (如 192.168.1.105),则仅通过该特定接口监听。

综合使用场景示例

假设你正在开发一个新主题,并且想用手机查看效果,同时发现 4000 端口被占用了:

  1. 首先确保已安装模块。
  2. 运行命令指定端口为 5000,并监听局域网 IP(假设你的电脑局域网 IP 是 192.168.1.5):
    1
    hexo server -p 5000 -i 192.168.1.5
  3. 此时,你可以在电脑浏览器访问 http://192.168.1.5:5000,也可以在同一 WiFi 下的手机浏览器输入该地址进行预览。当你修改文章保存时,手机页面也会自动刷新。

如果你完成了所有修改,准备检查最终生成的静态文件是否无误:

  1. 先生成文件:
    1
    hexo generate
  2. 以静态模式启动:
    1
    hexo server -s
  3. 此时任何对源文件的修改都不会反映在页面上,直到你再次运行 hexo generate。这能确保你看到的是用户最终会看到的真实版本。