Node.js 蚕食计划(二)—— 使用 http 模块搭建 Web 服务器
Node.js 开发的目的就是为了用 JavaScript 编写 Web 服务器程序
这次就来介绍用 http 模块搭建服务器
一、项目构建
每个 Node 程序都可以看作一个模块,而每个模块都应该有一个 package.json 文件
package.json 用来定义模块的属性,还可以用来指明程序的依赖项。它可以手动创建,也可以通过 init 命令自动创建
npm init
如果还需要引入第三方模块,可以在 package.json 中手动配置,也可以通过 install 命令安装
比如安装一个第三方模块 mime
npm install mime -S
安装之后,会在项目根目录下创建一个 node_modules 文件夹,用来存放第三方依赖项
然后手动在根目录下创建一个 lib 文件夹和 public,分别用来存放服务端代码和客户端代码
aaarticlea/png;base64,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" alt="" />
二、创建基本服务
用 Node.js 创建服务非常简单,调用 http 模块的 createServer 方法就可以了
http 模块的完整 API 可以参考官方文档
在 lib 目录下创建 server.js
/* 如果使用 vscode 启服务,记得修改 launch.json 的入口文件路径 */
// 创建 http 服务
let http = require('http');
let server = http.createServer(function(req, res){
res.end('Wise Wrong');
});
// 绑定监听端口
server.listen(); // 创建完成后打开对应网页
let c = require('child_process');
c.exec('start http://localhost:4567');
响应数据的时候,必须有一个 res.end() 方法来结束响应
上面的 res.end('Wise Wrong') 是简写,对于大型的响应需要这么写:
res.write('Wise Wrong');
res.end();
然后调用了 child_process 模块,这也是 Node.js 自带的模块
这个模块可以用来创建子进程,它的 exec 命令可以执行 shell 命令
三、响应静态文件
将 html 文件放在 public 目录下
aaarticlea/png;base64,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" alt="" />
首先需要获取到文件的路径,可以手动拼一个
let filePath = false;
if(req.url == '/') {
filePath = 'public/index.html';
} else {
filePath = 'public' + req.url;
}
let absPath = './' + filePath;
如果引入了 path 和 url 模块,就更方便的获取到文件路径
path.resolve() 将路径或者路径片段解析为绝对路径
url.parse() 将字符串解析为一个 url 对象,可以用来处理 GET 请求
读取静态文件需要用到 Node 自带的 fs (文件系统)模块
// server.js let http = require('http');
let fs = require('fs');
let url = require('url');
let path = require('path');
let c = require('child_process'); let server = http.createServer(function(req, res) { // 获取根目录
let root = path.resolve('.');
// 获取请求路径
let filePath = url.parse(req.url).pathname;
if (filePath === '/') filePath = '/index.html';
// 生成文件路径
let absPath = path.join(root, '/public', filePath); // 从硬盘读取文件
fs.readFile(absPath, function (err, data) {
if (err) {
// 重写响应头,返回 404
res.writeHead(, {'Content-Type': 'text/plain'});
res.write("not found");
} else{
// 重写响应头,返回 200
res.writeHead(, {'Content-Type': 'text/html'});
// 响应文件内容
res.write(data);
}
// 结束响应,发送数据
res.end();
});
}); server.listen(, function() {
console.log('Server listening on port 4567');
// 服务启动成功后打开对应链接
c.exec('start http://localhost:4567');
});
Node 本身不会往客户端写任何响应,所以需要我们自己写响应事件,修改响应头
在 node 环境中打开 server.js 就会加载 index.html
aaarticlea/png;base64,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" alt="" />
四、处理 POST 请求
在 public 目录下再创建一个 form.html,用来提交 post 请求
aaarticlea/png;base64,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" alt="" />
服务端可以通过 req.method 来判断请求类型是 GET 还是 POST 或者其他
POST 请求会触发 data 事件,监听 data 事件就能获取数据
let postData = '';
// 监听 data 事件
req.on("data", function (chunk) {
// 拼接 post 过来的数据
postData += chunk;
});
这时获取到的还只是一个字符串,通常需要将它转为对象,这时就需要引入 querystring 模块
let queryData = querystring.parse(postData);
然后可以通过 fs.writeFile 将数据保存到文件里面
fs.writeFile(path.join(__dirname, 'wise.txt'), postData, function(){});
这里的 __dirname 是一个神奇的变量,它的值是该文件所在目录的路径
同一个程序中 __dirname 可以有不同的值
在 server.js 中它指向的就是 lib 目录的路径
继续完善 server.js
// server.js let http = require('http');
let fs = require('fs');
let url = require('url');
let path = require('path');
let qs = require('querystring');
let c = require('child_process'); let server = http.createServer(function (req, res) { // 获取根目录
let root = path.resolve('.');
// 获取请求路径
let filePath = url.parse(req.url).pathname;
if (filePath === '/') filePath = '/index.html';
// 生成文件路径
let absPath = path.join(root, '/public', filePath); switch (req.method) {
case 'GET':
// 从硬盘读取文件
fs.readFile(absPath, function (err, data) {
if (err) {
// 重写响应头,返回 404
res.writeHead(, { 'Content-Type': 'text/plain' });
// 响应文件内容
res.write("not found");
} else {
// 重写响应头,返回 200
res.writeHead(, { 'Content-Type': 'text/html' });
// 响应文件内容
res.write(data);
}
// 结束响应,发送数据
res.end();
});
break; case 'POST':
let postData = '';
// 监听 data 事件
req.on("data", function (chunk) {
// 拼接 post 过来的数据
postData += chunk;
});
// 监听 end 事件
req.on("end", function () {
// 使用 querystring 模块将字符串数据转为对象
let queryData = qs.parse(postData);
// 将数据以 json 字符串的形式保存到文件中
fs.writeFile(path.join(__dirname, 'wise.txt'), JSON.stringify(queryData), function (err) {
if (err) throw err;
console.log("Export Account Success!");
});
// 重写响应头
res.writeHead(, { "Content-Type": "text/plain" });
res.end("success");
});
break;
}
}); server.listen(, function () {
console.log('Server listening on port 4567');
// 服务启动成功后打开对应链接
c.exec('start http://localhost:4567/');
});
最终效果
Node.js 蚕食计划(二)—— 使用 http 模块搭建 Web 服务器的更多相关文章
- Node.js 蚕食计划(三)—— Express 启航
如果看过上一篇<Node.js 蚕食计划>,就会发现手动搭建一个 web 服务器还是比较繁琐 而 express 就是一个可以极大地提高开发效率的 web 开发框架 一.创建项目 在 ex ...
- Node.js 蚕食计划(一)—— 模块化编程
众所周知,Node.js 的出现造就了全栈工程师,因为它让 JavaScript 的舞台从浏览器扩大到了服务端 而 Node.js 的强大也得益于它庞大的模块库,所以学习 Node.js 第一步还得从 ...
- Node.js 蚕食计划(五)—— Koa 基础项目搭建
Koa 是由 Express 原班人马打造的超轻量服务端框架 与 Express 相比,除了自由度更高,可以自行引入中间件之外,更重要的是使用了 ES6 + async,从而避免了回调地狱 不过也是因 ...
- 使用node.js 文档里的方法写一个web服务器
刚刚看了node.js文档里的一个小例子,就是用 node.js 写一个web服务器的小例子 上代码 (*^▽^*) //helloworld.js// 使用node.js写一个服务器 const h ...
- eventlet 模块搭建 WEB 服务器
eventlet这个强悍的东东,看到我同事的一些整理.故贴出来,大家一起分享~ motivation 114.113.199.11服务器上nova服务中基于python eventlet实现的定时任务 ...
- Node.js 蚕食计划(四)—— Express + SQL Server 搭建电影网站
前段时间在慕课网上看了 scott 大神的<node+mongodb建站攻略>课程,按照自己的思路做了一遍,发博客记录一下 一.项目介绍 这个项目是一个简单的电影网站,由首页.详情页.评论 ...
- 进击Node.js基础(二)
一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...
- node.js 初学(二)—— 搭建注册/登录服务器
node.js 初学(二)—— 搭建注册/登录服务器 理论上来说,代码实现在理论和实际上是一样的.但实际上来说,他们不是 做一个最简单的用户注册登录功能 1.接口定义: 注册:/user?act=re ...
- 使用 Node.js 搭建 Web 服务器
使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块.文件系统.url解析模块.路径解析模块.以及301重定向技术等, ...
随机推荐
- linux使用mysql给一个用户赋予一个权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
- PhpStorm2017版激活方法、汉化方法以及界面配置
PhpStorm激活和汉化文件下载网址:http://pan.baidu.com/s/1nuHF1St(提取密码:62cg) PHPMailer的介绍 PhpStorm是一个轻量级且便捷的PHP ID ...
- .net多线程应用
昨天在部门分享.net多线程的一些内容,特此在博客记录下.内容如下: 进程与线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 ...
- 站在 Android 开发的角度,聊聊 Airbnb 的 Lottie!!!
一.前言 你有没有遇上一些设计师,对一些酷炫的动画着迷,喜欢根据场景设计出可爱而流畅的动画.但是在实际工作中,哪怕开发人员也觉得这些动画非常的棒,可我们知道,越是定制化的动画,实现起来将会越麻烦和耗时 ...
- Python的控制语句
1. 控制语句 控制语句是用来改变程序执行的顺序.程序利用控制语句有条件地执行语句,循环地执行语句或者跳转到程序中的其他部分执行语句. Python支持三种不同的控制语句:if,for和while, ...
- 单源最短路径 dijkstra算法实现
本文记录一下dijkstra算法的实现,图用邻接矩阵表示,假设图为无向图.而且连通,有向图,不连通图的做法相似. 算法简述: 首先确定"单源"的源.假设是第0个顶点. 维护三个数组 ...
- 游戏AI-行为树理论及实现
从上古卷轴中形形色色的人物,到NBA2K中挥洒汗水的球员,从使命召唤中诡计多端的敌人,到刺客信条中栩栩如生的人群.游戏AI几乎存在于游戏中的每个角落,默默构建出一个令人神往的庞大游戏世界. 那么这些复 ...
- 微信小程序使用场景延伸:扫码登录、扫码支付
微信小程序使用场景延伸:扫码登录.扫码支付 小程序最适合的使用场景有哪些?相比大家能列举出来很多,但这个场景,大家可能多数没想到_^ 笔者团队近期接到了一个PC项目:转转游戏租号PC官网,该项目要求在 ...
- Python学习日记:day4
列表 li=['alex',[1,2,3] ,'wusir','egon','女神','taibai']#列表 l1 = li[0] print(l1)#alex l2 = li[1] print ( ...
- go实例之轻量级线程goroutine、通道channel与select
1.goroutine线程 goroutine是一个轻量级的执行线程.假设有一个函数调用f(s),要在goroutine中调用此函数,请使用go f(s). 这个新的goroutine将与调用同时执行 ...