使用Node.js搭建静态资源服务是非常常见的需求,下面我将详细讲解搭建静态资源服务的完整攻略,并提供两条示例说明。
环境准备
在开始之前,确保你已经安装了Node.js和npm包管理工具,同时你需要创建一个空的目录做为工作目录。
安装依赖
在工作目录中执行以下命令,安装Express和serve-static两个依赖。
npm install express serve-static --save
创建服务器
在工作目录中创建一个名为server.js
的文件,编写以下代码:
const express = require('express');
const serveStatic = require('serve-static');
const app = express();
app.use('/', serveStatic(__dirname));
const port = process.env.PORT || 8080;
app.listen(port);
console.log(`Static source server started on port ${port}...`);
代码解释:
- 第1行导入依赖的express和serve-static模块;
- 第3行创建一个express的应用实例;
- 第5行将静态资源目录指定为当前工作目录(__dirname);
- 第7行定义服务监听的端口号,这里默认为8080;
- 第8行启动服务,并在控制台输出提示信息。
启动服务
在工作目录中执行以下命令,启动服务。
node server.js
在浏览器输入http://localhost:8080
即可访问当前工作目录中的静态资源。
示例说明
示例一:使用Node.js搭建简单的博客系统
博客系统通常需要静态资源服务,我们可以使用Node.js来搭建一个简单的博客系统。
首先创建一个名为blog-server.js
的文件,编写以下代码:
const express = require('express');
const serveStatic = require('serve-static');
const path = require('path');
const app = express();
const staticPath = path.join(__dirname, 'public');
app.use('/', serveStatic(staticPath));
app.get('/', (req, res) => {
res.sendFile(path.join(staticPath, 'index.html'));
});
app.get('/post.html', (req, res) => {
res.sendFile(path.join(staticPath, 'post.html'));
});
const port = process.env.PORT || 3000;
app.listen(port);
console.log(`Blog server started on port ${port}...`);
代码解释:
- 第1行导入依赖的express、serve-static和path模块;
- 第3-4行创建一个express的应用实例,同时将静态资源目录指定为当前目录下的
public
目录; - 第6-7行配置请求静态资源时使用
serve-static
中间件; - 第8-9行配置访问首页和文章页时的路由;
- 第11行定义服务监听的端口号,这里默认为3000;
- 第12行启动服务,并在控制台输出提示信息。
在当前目录下创建public
目录,并在其中创建index.html
和post.html
两个文件,这里分别简单编写一下示例代码。
index.html
文件内容如下:
博客首页
欢迎来到我的博客首页!
post.html
文件内容如下:
博客文章
我的第一篇博客文章
欢迎来访问我的新博客!
最后在当前目录下执行以下命令,启动服务:
node blog-server.js
在浏览器输入http://localhost:3000
即可访问博客首页,点击页面中的“阅读全文”链接即可访问文章页。
示例二:使用Node.js搭建简单的网盘系统
网盘系统通常需要静态资源服务,我们可以使用Node.js来搭建一个简单的网盘系统。
首先创建一个名为disk-server.js
的文件,编写以下代码:
const express = require('express');
const serveStatic = require('serve-static');
const path = require('path');
const app = express();
const staticPath = path.join(__dirname, 'public');
app.use('/', serveStatic(staticPath));
app.get('/', (req, res) => {
res.sendFile(path.join(staticPath, 'index.html'));
});
const port = process.env.PORT || 4000;
app.listen(port);
console.log(`Disk server started on port ${port}...`);
代码解释:
- 第1行导入依赖的express、serve-static和path模块;
- 第3-4行创建一个express的应用实例,同时将静态资源目录指定为当前目录下的
public
目录; - 第6-7行配置请求静态资源时使用
serve-static
中间件; - 第8-9行配置访问首页的路由;
- 第11行定义服务监听的端口号,这里默认为4000;
- 第12行启动服务,并在控制台输出提示信息。
在当前目录下创建public
目录,并在其中创建以下子目录:
video
:用于存放视频文件;music
:用于存放音乐文件;doc
:用于存放文档文件。
在public
目录下创建index.html
文件,内容如下:
网盘首页
欢迎来到我的网盘!
最后在当前目录下执行以下命令,启动服务:
node disk-server.js
在浏览器输入http://localhost:4000
即可访问网盘首页,点击页面中的链接即可访问相应的文件夹。