nodejs创建简易web服务器与文件读写的实例


Posted in NodeJs onSeptember 07, 2017

web服务器至少有以下几个特点:

1、24小时不停止的工作,也就是说这个进程要常驻在内存中

2、24小时在某一端口监听,如: http://localhost:8080, www服务器默认端口80

3、要能够处理基本的请求:如get, post

在node js中创建一台服务器非常的简单,因为node自带http模块,该模块可以帮助我们非常快速搭建一台web服务器,来处理一个简单的请求.

const http = require("http");
 var server = http.createServer(function(){
  console.log( '有人访问ghostwu的服务器' );
 });
 server.listen( 8080 );

第1行:导入node js内置的http模块

第2行: 利用http模块自带的createServer方法,创建一台服务器

第5行: 服务器在8080端口监听

然后切换到文件所在的路径,用node 运行这个文件( node + 文件名 ),然后在浏览器中输入( http://localhost:8080 )就可以看见控制台 打印出 '有人访问ghostwu的服务器'

nodejs创建简易web服务器与文件读写的实例

nodejs创建简易web服务器与文件读写的实例

但是这个服务器有个问题,只能在控制台输出信息,一般的服务器都会向浏览器输出信息,怎么做呢?

const http = require("http");
var server = http.createServer(function( req, res ){
 res.write( 'http://www.cnblogs.com/ghostwu/' );
 res.end();
});
server.listen( 6060 );

createServer的时候,为回调函数传递2个参数,第一个参数是处理请求的, 第二个参数是处理响应的,而我们要想把服务器的信息输出到浏览器,就需要调用res对象的write方法,然后调用end方法结束输出。在浏览器输入: localhost:6060,就能看到 http://www.cnblogs.com/ghostwu/

但是这台服务器,还是有个问题,只能处理http://localhost:6060 这样一个固定的端口和网址的请求, 其他的请求输出都是 看到同样的东西,而实际的请求却是:

http://localhost:8080 访问首页

http://localhost/404.html 访问404页面

http://localhost/1.html 访问1.html

。。。。

等等,不同的url请求,应该把对应的文件信息读出来,再输出到浏览器,我们先来做这个功能,不同的url显示不同的信息:

const http = require("http");
var server = http.createServer(function( req, res ){
 switch( req.url ){
  case '/1.html' :
   res.write( '1.html' );
   break;
  case '/2.html':
   res.write( '2.html' );
   break;
  default: 
   res.write( '404' );
 }
 res.end();
});

server.listen( 8080 );

这样就能处理 http://localhost:8080/1.html --> 显示1.html http://localhost:8080/2.html ---> 显示2.html 其他的请求都是显示404

最后,我们只需要,在对应的分支,把对应的文件内容读取出来就可以了,那么node js怎么读取文件呢?

var fs =require('fs');
fs.readFile("1.txt", function( err, data ){
 if( err ){
  console.log( err )
 }else {
  console.log( data.toString() );
 }
});

需要包含fs模块,这个模块就是处理文件的

readFile, 第一个参数,具体的文件路径和名称, 第二个参数回调函数有2个参数,一个是错误结果,一个是文件中的数据, 数据需要用toString方法转一下,否则就是字节数据,还有1.txt这个文件要确实存在.

写文件用writeFile这个api,b.txt如果不存在会自动创建一个,往b.txt文件中插入内容' this is b.txt'

const fs = require("fs");
fs.writeFile( "b.txt", "this is b.txt", function( err ){
 console.log( err );
} );

有了文件读写功能,我们就可以结合上面的代码,实现一个简易的get请求服务器

文件结构:

nodejs创建简易web服务器与文件读写的实例

server.js:

var http = require("http");
var fs = require("fs");
var server = http.createServer(function( req, res ){
 var fileName = './www' + req.url;
 fs.readFile( fileName, function( err, data ){
  if( err ){
   res.write( '404' );
  }else {
   res.write( data );
  }
  res.end();
 } );
}).listen( 8080 );

然后,在浏览器输入:

http://localhost:8080/index.html 就能读出www目录下面index.html的内容

http://localhost:8080/category.html 就能读出www目录下面category.html的内容

其他请求,输出404

以上这篇nodejs创建简易web服务器与文件读写的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
nodeJS代码实现计算交社保是否合适
Mar 09 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 #NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 #NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 #NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 #NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 #NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 #NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 #NodeJs
You might like
解析PHP工厂模式的好处
2013/06/18 PHP
php获取apk包信息的方法
2014/08/15 PHP
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
javascript事件模型介绍
2016/05/31 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
python遍历类中所有成员的方法
2015/03/18 Python
Django中几种重定向方法
2015/04/28 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
python操作mysql代码总结
2018/06/01 Python
python format 格式化输出方法
2018/07/16 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
python socket 聊天室实例代码详解
2019/11/14 Python
python 实现生成均匀分布的点
2019/12/05 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
python 制作网站小说下载器
2021/02/20 Python
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
Julep官网:美容产品和指甲油
2017/02/25 全球购物
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
Java面试题及答案
2012/09/08 面试题
房产转让协议书
2014/04/11 职场文书
简单租房协议书
2014/10/21 职场文书
2016年国陪研修感言
2015/11/18 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python