Node.js创建HTTP文件服务器的使用示例

下面我将为您详细讲解如何使用Node.js创建HTTP文件服务器。

概述

Node.js是一个非常流行的JavaScript后端运行环境,它可以帮助我们轻松创建一个HTTP服务器并用于提供Web请求服务。本文将会介绍如何使用Node.js快速创建一个HTTP文件服务器。

步骤

步骤1:安装Node.js

首先我们需要安装Node.js,在官方网站 https://nodejs.org/zh-cn/ 下载安装包,并在本地安装。安装过程非常简单,只需按照指示操作即可。

步骤2:创建工作目录

在本地创建工作目录,并在其中新建一个JavaScript文件,例如 server.js

步骤3:编写代码

server.js 文件中编写以下代码:

const http = require('http');   // 引入 http 模块
const fs = require('fs');       // 引入文件系统模块

const server = http.createServer((req, res) => {
    fs.readFile(__dirname + req.url, (err, data) => {   // 读取请求的文件
        if (err) {                                      // 如果文件不存在
            res.writeHead(404, {'Content-Type': 'text/plain'});
            res.write('The file does not exist.');
            res.end();
        } else {                                        // 文件存在
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.write(data);
            res.end();
        }
    });
});

server.listen(3000, () => console.log('The server is running on http://localhost:3000'));  // 服务监听 3000 端口

上述代码中,我们使用Node.js的 http 模块创建了一个服务,并使用 fs 模块读取请求的文件。如果读取成功,将文件内容发送给客户端;否则发送404响应。

步骤4:启动服务

在终端中进入工作目录,执行以下命令启动服务:

node server.js

运行成功后,终端中会输出“The server is running on http://localhost:3000”,说明服务已经成功启动。

步骤5:访问

在浏览器中访问以下URL,即可访问到服务:

http://localhost:3000

至此,我们完成了使用Node.js创建HTTP文件服务器的全过程。

示例说明

下面是两个示例,帮助您更好地理解Node.js创建HTTP文件服务器的使用方法:

示例1:提供指定目录下的文件服务

如果您希望在服务中提供指定目录下的文件服务,可以在 server.js 中加入以下代码:

const path = require('path');   // 引入 path 模块

const server = http.createServer((req, res) => {
    const filepath = path.join(__dirname, 'public', req.url);   // 拼接文件路径
    fs.readFile(filepath, (err, data) => {                     // 读取请求的文件
        if (err) {                                              // 如果文件不存在
            res.writeHead(404, {'Content-Type': 'text/plain'});
            res.write('The file does not exist.');
            res.end();
        } else {                                                // 文件存在
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.write(data);
            res.end();
        }
    });
});

// 更改监听端口
server.listen(4000, () => console.log('The server is running on http://localhost:4000'));

上述代码将会在 public 目录下寻找请求的文件。

示例2:添加缓存控制

如果您希望添加缓存控制,可以在 server.js 中加入以下代码:

const maxAge = 3600 * 24 * 365;   // 缓存周期为一年

fs.readFile(filepath, (err, data) => {
    if (err) {                                              // 如果文件不存在
        res.writeHead(404, {'Content-Type': 'text/plain'});
        res.write('The file does not exist.');
        res.end();
    } else {                                                // 文件存在
        const stats = fs.statSync(filepath);
        const lastModified = stats.mtime.toUTCString();
        const etag = crypto.createHash('md5').update(data.toString()).digest('hex');
        const expires = new Date(Date.now() + maxAge * 1000).toUTCString();
        res.setHeader('Cache-Control', 'public, max-age=' + maxAge);
        res.setHeader('Expires', expires);
        res.setHeader('Last-Modified', lastModified);
        res.setHeader('ETag', etag);

        const ifModifiedSince = req.headers['if-modified-since'];
        const ifNoneMatch = req.headers['if-none-match'];
        if (ifModifiedSince === lastModified || ifNoneMatch === etag) {
            res.writeHead(304, {'Content-Type': 'text/plain'});
            res.end();
        } else {
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.write(data);
            res.end();
        }
    }
});

上述代码中,我们添加了缓存控制,避免重复读取同一个文件,提升服务器的性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js创建HTTP文件服务器的使用示例 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • node实现爬虫的几种简易方式

    Node实现爬虫的几种简易方式 在Node中,我们可以利用一些开源的爬虫框架或者自己编写代码来实现爬虫。 1. 使用开源爬虫框架 1.1 Cheerio + Request Cheerio是服务端的jQuery实现,可以将HTML文件转化为Dom对象。Request是一个可以搭建HTTP请求的库。这两个库结合起来可以实现简单的网页爬取。 以下代码实现了爬取百…

    node js 2023年6月8日
    00
  • 10个Node.js库帮助你优化代码和简化开发

    下面是对应的完整攻略: 10个Node.js库帮助你优化代码和简化开发 本文介绍10个可以帮助Node.js开发者提升开发效率并优化代码的库。 1. Lodash lodash是一个流行的 JavaScript 工具库,可以用于开发 Node.js 应用。这个库提供了很多通用函数,这些函数可以处理大量数据和各种不同数据类型。这个库的使用方法很简单,只需要通过…

    node js 2023年6月8日
    00
  • NodeJS 实现手机短信验证模块阿里大于功能

    下面按照标准的 Markdown 格式给出详细的讲解: NodeJS 实现手机短信验证模块阿里大于功能 1. 介绍 阿里大于是阿里云的短信服务,提供了丰富的短信发送功能,可以用于各种短信发送需求。在 NodeJS 中,我们可以使用 阿里大于的 NodeJS SDK 来进行开发。 2. 准备工作 在开始之前,需要确保已经申请了阿里大于的短信服务,并获取到了 A…

    node js 2023年6月8日
    00
  • Javascript JSQL,SQL无处不在,

    JavaScript JSQL是一种使用JavaScript语言实现的数据库访问接口。它通过封装SQL命令,提供了一种直接使用JavaScript语言进行数据库访问的方式。很多JavaScript的开发者已经在使用JSQL来处理数据库了,本文将讲解如何在项目中使用JSQL,包括连接数据库、创建表和查询数据库等操作。 连接数据库 要使用JSQL,首先需要连接你…

    node js 2023年6月8日
    00
  • 小心!AngularJS结合RequireJS做文件合并压缩的那些坑

    小心!AngularJS结合RequireJS做文件合并压缩的那些坑 背景简介 现在前端开发已经不仅仅是一些简单的HTML、CSS和JS代码堆砌了,对于一个成熟的前端项目我们必须考虑到一些比较高级的技术的应用,尤其是在文件打包合并等方面。本文主要讲解在使用AngularJS结合RequireJS做文件合并压缩时需要注意的一些“坑”。 正确的姿势 1. Req…

    node js 2023年6月8日
    00
  • electron原理,以及electron生成可执行文件的方法实例分析 原创

    Electron原理及生成可执行文件方法 Electron原理 Electron是一个基于Chromium和Node.js运行的开源框架,可以用于快速开发跨平台的桌面应用程序。它的工作原理如下: 程序开启时,Electron启动一个本地的Chromium实例。 Chromium实例加载程序的HTML、CSS和JavaScript,并运行它们。 Electro…

    node js 2023年6月8日
    00
  • 使用 NodeJS+Express 开发服务端的简单介绍

    下面就是使用 NodeJS+Express 开发服务端的简单攻略。 简介 NodeJS 是一种运行在服务器端的 JavaScript 运行环境,它允许开发者使用 JavaScript 编写后端服务。而 Express 是 NodeJS 应用最广泛的web应用程序框架之一,它提供了一些简洁的方法来处理 http 请求、路由等任务。使用 NodeJS+Expre…

    node js 2023年6月8日
    00
  • 实例详解Nodejs 保存 payload 发送过来的文件

    下面是关于“实例详解Nodejs 保存 payload 发送过来的文件”的完整攻略: 1. 背景说明 在开发web应用程序时,经常需要通过上传文件的方式与客户端进行交互。客户端可以通过表单提交文件数据,也可以通过使用JavaScript编写发送文件的客户端来向服务器发送文件。 本文主要介绍使用Node.js处理通过POST请求发送的文件上传数据。 2. 如何…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部