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(); //alloc:分配
console.log(buf1);
var buf2 = Buffer.alloc(*); //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();
//当客户端请求到来时,处理请求消息
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=;
res.write(data);
res.end();
}
}); }else if(path==='/index'){ fs.readFile('./public/index.html',(err,data)=>{
if(err)throw err;//若存在错误抛出错误,后面不执行
res.statusCode=;
res.write(data);
res.end(); });
}else{ fs.readFile('./public/404.html',(err,data)=>{
if(err){
res.write('<h1>报错了</h1>');
}else{
res.statusCode=;
res.write(data);
res.end();
}
});
}
});

本文适用初级者,如想搭建健全的web服务器,还需要中间件更多的知识点,以后博文会更新,敬请期待。

本文为原创,如有不足之处请指正。

nodejs搭建web服务器初级的更多相关文章

  1. 巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器

    容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作.SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与N ...

  2. nodejs搭建web服务器

    一.代码结构 //1.引入相关模块 var http=require("http") var url=require("url") var fs=require ...

  3. 记录一些服务端术语和搭建web服务器

    菜单快捷导航 服务端常用术语 搭建web服务器和配置虚拟主机 记录一些服务端方面的常用术语 1.CS架构和BS架构 1.1 CS架构 CS(Client/Server),基于安装包类型的桌面或手机软件 ...

  4. NodeJS搭建HTTPS服务器

    [NodeJS搭建HTTPS服务器] http://cnodejs.org/topic/54745ac22804a0997d38b32d

  5. 在Win7系统中搭建Web服务器

    局 域网Web服务器的主要功能是实现资源共享,同时借助于局域网服务器访问页面可有效的实现信息的同步.利用Web服务器,我们随时随地都可以将自己的信息 上传到服务器端,让其它关注你的用户能在第一时间内了 ...

  6. 轻松使用Nginx搭建web服务器

    如果读者以前做过web开发的话,就应该知道如何去搭建一个web服务器来跑你的web站点,在windows下你可能会选择去用IIS,十分的快捷,在linux下,你可能首先会想到apache,“一哥”( ...

  7. 用tomcat搭建web服务器

    链接地址:http://www.blogjava.net/qingshow/archive/2010/01/17/309846.html qingshow “不积跬步无以至千里,不积小流无以成江海”. ...

  8. NodeMCU入门(4):搭建Web服务器,配置网络连接

    准备工作 1.NodeMCU模块 2.ESPlorer v0.2.0-rc6 3.NodeMCU-HTTP-Server 搭建web服务器 下载https://github.com/wangzexi/ ...

  9. CentOS 6.2下搭建Web服务器

    1Centos 6.2下搭建web服务器 如今,Linux在Web应用越来越广,许多企业都采用Linux来搭建Web服务器,这样即节省了购买正版软件的费用,而且还能够提高服务器的安全性. 之前我们介绍 ...

随机推荐

  1. miniblast_hash算法c语言实现

    对于一组基因文件中的基因序列,选取一段基因片段,作为索引,利用hash表,查找固定的基因片段.有一定的并且容忍错误. 简单讲就是自己实现一个hashtable,将选出特定字符串建立索引,便于查询.输出 ...

  2. 浅析VS2010反汇编

    第一篇 1. 怎样进行反汇编 在调试的环境下,我们能够很方便地通过反汇编窗体查看程序生成的反汇编信息. 例如以下图所看到的. 记得中断程序的运行,不然看不到反汇编的指令 看一个简单的程序及其生成的汇编 ...

  3. 如何去掉android的标题栏

    利用eclipse创建一个android工程向导后默认的会给app加上一个标题栏,如下图如何去掉红色的标题栏呢?从网上找的有下面的几种方法.1.通过代码去掉在Activity的onCreate中加入如 ...

  4. lvs安装文档

    安装lvs应用模块 1.安装依赖包: [root@client lvs]# yum -y install ipvs* 2.验证本机ip_vs模块是否加载 [root@client lvs]# -.el ...

  5. JavaScript浏览器检测之navigator 对象

    一.使用客户端检测的原因 由于每个浏览器都具有自己独到的扩展,所以在开发阶段来判断浏览器是一个非常重要的步骤. 虽然浏览器开发商在公共接口方面投入了很多精力,努力的去支持最常用的公共功能: 但在现实中 ...

  6. Tomcat是如何将请求一步步传递到我们编写的HttpServlet类中的

    我们平常编写好的HttpServlet类后,就可以处理请求了,但是服务器在接收到请求信息以后是如何将这些请求传递到我们编写的Servlet类中的???这个疑问在我心中的已经很久了,现在要来解决它. 我 ...

  7. Java反序列化之Jackson-databind

    这个洞的cve编号:CVE-2017-17485,漏洞环境就如第一个链接那样,jdk需要在jdk 1.8以上. 先看一下Jackson-databind的用法,说白了就是将json转换成对象. tes ...

  8. [19/04/25-星期四] GOF23_结构型模式(适配器模式、代理模式)

    一.引言 结构模式:核心作用就是从程序的结构上实现松耦合,从而扩大整体的类结构,用来解决更大的问题. 二.适配器模式(adapter) 生活中假设笔记本是标准的USB接口但是外置键盘是圆形接口,这时候 ...

  9. [Python 多线程] RLock可重入锁 (九)

    RLock 可重复锁,是线程相关的锁.同样是线程相关的还有threading.local. 线程A获得可重用锁,并可以多次成功获取,不会阻塞.最后要再线程A中和acquire次数相同的release. ...

  10. 对极几何(Epipolar Geometry)

    基本概念 对极几何(Epipolar Geometry)是Structure from Motion问题中,在两个相机位置产生的两幅图像的之间存在的一种特殊几何关系,是sfm问题中2D-2D求解两帧间 ...