视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
nodejs搭建web服务器的小白做法
2020-11-27 19:30:38 责编:小采
文档

本篇文章给大家带来的内容是关于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服务器,还需要中间件更多的知识点。

下载本文
显示全文
专题