如何用 Node.js 和 Express 创建一个简单的静态文件服务器?

阅读时长 4 分钟读完

在 Web 开发中,静态文件服务器是一个非常常见的需求。这种服务器不处理动态请求,而是仅回应客户端请求的静态文件。在 Node.js 中,可以用 Express 框架很方便地实现一个简单的静态文件服务器。本文将介绍如何使用 Node.js 和 Express 创建一个静态文件服务器。

准备工作

在开始之前,需要先安装 Node.js 和 Express 。如果还没有安装,可以去官方网站下载安装包并按照提示进行安装:

安装完成后,可以打开终端或命令行窗口,输入以下命令来检查是否安装成功:

如果输出了相应的版本号,则表示安装成功。

创建项目

在终端或命令行窗口中,进入要创建项目的目录,执行以下命令来创建一个名为 static-server 的新项目:

第一行命令创建了一个名为 static-server 的新目录,并进入该目录;第二行命令执行了 npm init 命令,并通过 -y 参数自动填写默认值,创建新的 package.json 文件。

接下来,需要安装 Express 和其他几个必要的模块。在终端或命令行窗口中,执行以下命令来安装:

以上命令会安装 Express 框架及其核心依赖模块 serve-staticmorgan,然后把这些模块添加到 package.json 文件的 dependencies 字段中。

编写代码

创建完成项目并安装好必要的模块后,就可以开始编写代码了。首先需要在项目根目录下创建一个名为 app.js(或其他任意名称)的文件,并输入以下代码:

-- -------------------- ---- -------
----- ------- - -------------------
----- ----------- - ------------------------
----- ------ - ------------------

----- --- - ----------
----- ---- - ---------------- -- -----

-----------------------
----------------------------- - ------------

---------------- -- -- -
  ------------------- -- --------- -- ---- ----------
---

以上代码创建了一个 Express 应用对象 app,并安装了 morgan 中间件和 serve-static 中间件。其中,morgan 中间件用于记录访问日志,serve-static 中间件用于处理静态文件请求。

然后通过 app.listen() 方法启动 Express 应用,并监听指定的端口。这里使用了 process.env.PORT || 3000 的方式,是为了方便在环境变量中指定端口号。如果环境变量中没有指定端口号,则默认使用 3000 端口。

最后,将静态文件存放在 public 目录下。如果没有该目录,需要手动创建。

测试应用

完成代码编写后,可以通过以下命令启动应用,并在浏览器中访问:

在浏览器中输入 http://localhost:3000,即可看到 public 目录下的静态文件。

总结

本文介绍了如何使用 Node.js 和 Express 创建一个简单的静态文件服务器。该服务器可以处理静态文件请求,并通过 morgan 中间件记录访问日志。通过本文的学习,可以对 Node.js 和 Express 框架有更深入的理解,同时也可以掌握如何创建一个静态文件服务器。

完整代码如下:

-- -------------------- ---- -------
----- ------- - -------------------
----- ----------- - ------------------------
----- ------ - ------------------

----- --- - ----------
----- ---- - ---------------- -- -----

-----------------------
----------------------------- - ------------

---------------- -- -- -
  ------------------- -- --------- -- ---- ----------
---

希望本文能对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64cd2ecd1519ea946c106f32

纠错
反馈