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 相关文章推荐
Nodejs异步回调的优雅处理方法
Sep 25 NodeJs
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
nodejs中实现sleep功能实例
Mar 24 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 NodeJs
nodejs+mongodb aggregate级联查询操作示例
Mar 17 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
强烈推荐:php.ini中文版(1)
2006/10/09 PHP
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
js实现拖拽效果
2015/02/12 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
Python异常的检测和处理方法
2018/10/26 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
婚礼新郎父母答谢词
2014/01/16 职场文书
人力资源专员岗位职责
2014/01/30 职场文书
干部下基层实施方案
2014/03/14 职场文书
大学生求职自荐信
2015/03/24 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
社会实践心得体会范文
2016/01/14 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书