本篇文章给大家带来的内容是关于nodejs搭建web服务器的小白做法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
nodejs搭建简单的web服务器
1.1简介
node.js是基于chrome javascript运行时建立的一个平台,实际上它是对google chrome v8引擎进行了封装,它主要用于创建快速的、可扩展的网络应用。
也就是说,浏览器的javascript是浏览器js代码解析,而node.js则是服务器端js的代码解析器,存于服务器端的js代码由node.js来解析和应用。
注:虽然从某种意义上讲nodejs和js 是同一种产物,写法用法不尽相同,但是重点来了,nodejs在作用域服务端,js只是作用域浏览器端,js可以指向浏览器,nodejs指向不了浏览器,所以有些api是不同的。
同理:js为弱类型语言,那么nodejs也是弱类型语言在语言算法上有事会有偏差,如果开发银行系统,支付系统不要用nodejs。(nodejs 适合io密集型应用,不适合于cpu密集型应用。)
1.2node模块类型
模块类型有:
1)官方提供的原生模块
global、util、querystring、url、buffer、fs、http、
2)第三方模块
mysql、oracle、express
3)自定义模块
文件模块和目录模块
1.3常用的原生模块 -- 难点重点1)querystring模块用于处理http请求url中的查询字符串
var obj=qs.parse(str); 把查询字符串解析为js对象
var str=qs.parse(obj); 把js对象转换为查询字符串
2)url 模块用于解析一个http请求地址,获取其中各个不同的部分
var obj = url.parse(str) 把一个url字符串解析为一个对象
var obj = url.parse(str,true) 把一个url字符串解析为一个对象,并把其中的查询字符串也解析为对象
3)buffer 缓冲区,本质是一块内存区域,用于暂存以后要用到的数据(可能是数字,字符串,二进制图片、音视频等),
该区域就成为“缓存”。 ******全局对象无需require引用******
//创建一个大小为10字节的缓冲区var buf1 = buffer.alloc(10); //alloc:分配console.log(buf1);var buf2 = buffer.alloc(1024*3); //alloc:分配3kb大小的缓冲区console.log(buf2);var buf3=buffer.from(['a','b','c']);console.log(buf3);//使用一个字符串创建一个缓冲区var buf4=buffer.from('abcd');console.log(buf4);var buf5=buffer.from('一二三文');console.log(buf5);//把缓冲区的内容转换为字符串console.log(buf5.tostring());
4)fs 文件系统模块
fs模块提供了对文件系统中的文件/目录进行增删改查、读写的功能。
//同步读取文件中的内容var data=fs.readfilesync(file);//同步向文件中写出内容(删除已有内容)fs.writefilesync(file,str/buf);//同步向文件中追加写出内容(不删除已有内容)fs.appendfilesync(file,str.buf)例如fs异步读写文件 不需要等待直接往下走//异步读取文件中的内容fs.readfile(file,funcgtion(err,data){});//异步向文件中写出内容(删除已有内容)fs.writefile(file,str/buf,function(){});//异步向文件中追加写出内容(不删除已有内容)fs.appendfile(file,str.buf,function(){});
5)http 模块可用于编写基于http协议的客户端程序(即浏览器);
也可以编写基于http协议的服务器端程序(即web服务器)
用http模块编写web服务器:var server=http.createserver();
1)接收客户端的http请求消息
2)解析客户端请求消息
3)读取客户端请求的文件。
4)向客户端发送http响应消息,主体就是客户端请求的文件
1.4如何搭建一个web服务器
讲了上述内容,我们接下来可以讲一下如何用nodejs搭建一个小型的web服务器啦!(细看下面代码和注释哦!)
const http=require('http'); const url=require('url');const fs=require('fs'); //引用模块前面讲过啦每个模块都是干嘛的//创建一个http服务器var server=http.createserver();//让http服务器监听指定的端口server.listen(80);//当客户端请求到来时,处理请求消息server.on('request',function(req,res){ //处理消息 req请求消息,res响应消息 console.log('nodejs服务器接收到一个请求'); //解析客户端发来的请求消息 console.log('请求地址'+req.url); var objurl=url.parse(req.url); /*console.log(objurl);*/ res.setheader('content-type','text/html;charset=utf-8'); var path = objurl.pathname; if(path==='/login'){ /*res.write('<h1>欢迎访问登录页面</h1>');*/ fs.readfile('./public/login.html',(err,data)=>{ if(err){ res.write('<h1>报错了</h1>'); }else{ res.statuscode=200; res.write(data); res.end(); } }); }else if(path==='/index'){ fs.readfile('./public/index.html',(err,data)=>{ if(err)throw err;//若存在错误抛出错误,后面不执行 res.statuscode=200; res.write(data); res.end(); }); }else{ fs.readfile('./public/404.html',(err,data)=>{ if(err){ res.write('<h1>报错了</h1>'); }else{ res.statuscode=404; res.write(data); res.end(); } }); }});
本文适用初级者,如想搭建健全的web服务器,还需要中间件更多的知识点。
以上就是nodejs搭建web服务器的小白做法的详细内容。