目录

一.http模块

二.创建Web服务器

1.导入http模块

2.创建Web服务器实例

3.绑定事件,监听请求

4.调用服务器实例的listen()方法,启动服务器

三.搭建 并运行

四.解决中文乱码问题

五.案例——根据不同URL来响应不同的内容

六.综合案例——请求页面


服务器和普通的电脑区别就在于服务器上安装了Web服务器软件,例如Apache这样的第三方Web服务器软件

Apache它世界使用排名第一的Web服务器软件,可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一,快速、可靠并且可通过简单的API扩充,将Python等解释器编译到服务器中

当然,我们本章使用Node.js搭建服务器,那么就需要用到Node.js为我们提供的http模块,利用JS来搭建一个服务器,非常的简单


一.http模块

http模块是Node专门提供用来创建Web服务器的一个模块,可以很简单很方便的把一台电脑变为一台服务器,从而对外提供Web资源


二.创建Web服务器

1.导入http模块

const http = require('http')

2.创建Web服务器实例

我们上一步已经导入了http模块,接下来我们可以调用http模块得createServer()方法,来创建一个Web服务器实例:

const server = http.createServer()

3.绑定事件,监听请求

接下来我们使用服务器实例的on()方法,为服务器绑定一个request事件,来监听客户端的请求:

server.on('request',(req,res) => {console.log("只要有客户端请求我们的服务器,就会触发request事件,从而调用处理函数")
})

req请求:它是一个请求对象,包含了客户端相关的属性和数据,可以通过req请求的俩个属性值:url和method来访问客户端相关的数据或者属性

req.url:客户端请求的URL地址

req.method:客户端的请求类型

res响应:res响应对象,包含了服务器相关的属性和数据,我们可以通过res.end()来将指定数据发送到客户端,并结束这次请求的处理过程

res.end("结束本次请求过程");

4.调用服务器实例的listen()方法,启动服务器

语法:server.listen(端口号,callback)

tips:我们可以使用Ctrl+C来关闭服务器 


三.搭建 并运行

const http = require('http');
const server = http.createServer();
server.on('request',(req,res) => {const Str =  `Your request url is req${req.url}_and request method is${req.method}`res.end(Str);
})
server.listen(80,() => {console.log('http server runing at http://127.0.0.1');
})

然后我们运行终端,发现弹出我们写的这段话,说明开启服务器成功:

然后我们打开浏览器输入:127.0.0.1或者localhost,就可以访问到服务器并获得到数据:

检测没问题,我们创建服务器成功,接下来回到终端关闭服务器,再次打开浏览器访问,已经访问不到了,因为服务器被我们关闭了:


四.解决中文乱码问题

我们上面发送的是英文字符串,但是让我们改为中文内容的时候,便会出现乱码的问题:

这个问题怎么解决呢?

那当然是设置编码格式了,将编码格式改为utf-8就可以了(设置响应头):

res.setHeader('Content-Type','text/html; charset=utf-8')

浏览器只能默认的发起GET请求,如果我们想要测试POST请求,可以使用类似Postman的测试工具来进行POST请求,我们可以看到下图的POST请求:



五.案例——根据不同URL来响应不同的内容

也就是我们要根据不同的地址来访问不同的页面,这里就需要加上一些简单的判断来确定用户访问的是哪个页面,然后对应做出操作:

const http = require('http')
const { url } = require('inspector')
const server = http.createServer()
server.on('request',(req,res) => {const Url = req.url//如果没有符合的页面,那么输出默认内容404(找不到内容或网页丢失)let Str = '<h1>404 Not Found</h1>'if(Url === '/' || Url === '/index.html'){Str = '<h1>这是主页面</h1>'}else if(Url === '/commodity.html'){Str = '<h1>这是商品页</h1>'}res.setHeader('Content-Type','text/html; charset=utf-8')res.end(Str)
})
server.listen(80,() => {console.log('http server runing at http://127.0.0.1')
})



六.综合案例——请求页面

这个案例主要是将我们磁盘中的网页内容,通过服务器这个媒介,传递给客户端浏览器

服务器主要的作用,就是把文件的实际存放路径作为每个资源请求的url地址,也就是说:把请求的URL地址当作读取文件的路径,将读取到的文件内容通过res响应end()方法传递给客户端

所以浏览器读取到的并不是具体的文件,而是文件中所存储的字符串

//fs.path.http模块导入
const fs = require('fs')
const path = require('path')
const http = require('http')const server = http.createServer()server.on('request',(req,res) => {//把请求的URL地址映射为具体的文件存放路径const Url = req.urllet fspath = path.join(__dirname,Url)if(Url === '/'){fspath = path.join(__dirname,Url,'file.html')}fs.readFile(fspath,'utf8',(err,path) => {if(err){res.end("<h1>404 Not Found</h1>")}else{res.end(path)}})
})
server.listen(80,() => {console.log('http server runing at http://127.0.0.1')
})



可以成功使用客户端访问到服务器请求本地的内容,哈哈,有点绕啊,本质就是使用客户端请求服务器,服务器再去请求本地磁盘,磁盘响应服务器,服务器再去响应给客户端

当然我们也可以继续改进一下,使404页面更加的好看:

好吧,并不是太好看,大家可以自己设计,考验CSS功底的时候了

在Node环境中使用JS搭建一个基础服务器相关推荐

  1. 在开发环境中,自己搭建一个ssl环境(小例子)

    做项目的时候自己总结的一些小例子 public class Test { public static void setSSLProperty() { Security.addProvider(new  ...

  2. Node.js搭建一个简单的服务器

    文章目录 Node.js的安装 了解Node.js模块系统 服务器的搭建 一.创建一个Web服务器 注意 程序代码 运行 二.静态资源托管 静态资源 注意 程序代码 运行 三.简单接口的实现(简单服务 ...

  3. [译] Node.js, Express.js 搭建 HTTP/2 服务器

    原文:Easy HTTP/2 Server with Node.js and Express.js 作者:Azat Mardan 代码:http2-express 什么是 HTTP/2 现代互联网的 ...

  4. 使用webgl(three.js)搭建一个3D建筑,3D消防模拟——第三课

    使用webgl(three.js)搭建一个3D建筑,3D消防模拟--第三课 项目背景 消防安全一直是各大都市关注的重要课题,在消防体系中,特别是高楼消防体系中,消防系统整体布控与监控,火情有效准确定位 ...

  5. Node.js搭建本地HTTP服务器(微信小程序)

    Node.js搭建本地HTTP服务器(微信小程序) Node.js简易搭建本地HTTP服务器 1. 首先关闭微信开发者工具中的验证 单击工具栏中的详情按钮,选中图中所示选项即可. 2. 将Node.j ...

  6. node.js搭建简易Web服务器

    node.js搭建简易Web服务器 node.js简介 Node.js 是一个基于V8引擎的JavaScript 运行环境. V8 是为Google Chrome 提供支持的 JavaScript 引 ...

  7. 在Linux中搭建一个FTP服务器

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...

  8. php开发ftp服务器搭建教程,在Linux中搭建一个FTP服务器

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...

  9. Linux中搭建一个ftp服务器详解

    来源:Linux社区  作者:luzhi1024 详解Linux中搭建一个ftp服务器. ftp工作是会启动两个通道: 控制通道 , 数据通道 在ftp协议中,控制连接均是由客户端发起的,而数据连接有 ...

最新文章

  1. iOS 11开发教程(十六)iOS11应用视图之删除空白视图
  2. Appium环境安装
  3. ios 设备获取idfa_超4成用户选择升级iOS 14,35%苹果设备已无法获取IDFA
  4. python 分析两组数据的差异_R语言limma包差异基因分析(两组或两组以上)
  5. [Qt入门] QPushButton创建
  6. 带可变参数的宏函数和普通函数实现
  7. ubuntu12.04平台下a80编译环境搭建
  8. DBUtils使用详细示例(转载)
  9. 图像目标检测(Object Detection)原理与实现(一)
  10. 82-Spark的StandLone模式调试
  11. 实体店如何做好门店引流
  12. 13 张图彻底搞懂分布式系统服务注册与发现原理
  13. Zabbix 优缺点分别有哪些?
  14. 1500802035王叔文
  15. 遥感数字图像处理 初体验
  16. 多用户网络日记本php,[日记人]超漂亮的多用户网络日记 v3.8
  17. Win8.1 ext-ms-win-ntuser-uicontext-ext-l1-1-0.dll等缺失
  18. RANSAC算法与原理(二)
  19. 设置程序在Windows开机后自动运行的方式
  20. [OpenGL] 延迟渲染 - 多个点光源

热门文章

  1. c语言面试笔试题及答案,C语言面试题(含答案)
  2. jdbc与德鲁伊的简单学习;
  3. OpenCV学习(四)之播放一个AVI视频
  4. BGP概述及基础配置
  5. shellexecute启动程序出错
  6. shell 免杀aspx_避开eval关键字,打造免杀一句话木马
  7. 前端利用XMLHttpRequest读取本地文本文件
  8. apollo 配置中心 支持php,Apollo配置中心搭建过程
  9. oracle所有转义字符,Oracle 转义字符
  10. 树莓派更换清华源方法