一台电脑他可以部署很多个服务器

  • apache软件部署的服务器
  • 我们自己用http模块搭建的服务器
  • mysq|数据库服务器

那我们通过ip地址(本地回环地址127.0.0.1/localhost)找到这个电脑了通过端口来区分不同的服务器.

注意:

  • 默认的http端口是80端口,所以apache配置这个web服务器用的就是这个默认的80端口.
  • 默认的80端口可以省略不写.
  • 自己写的服务器端口也不要乱写,很多端口已经被其他的服务给占用了.

web服务器读取网页返回给用户

// 1. 导入模块
const fs = require("fs");
const http = require("http");
const path = require("path");
// 2. 创建web服务器
const server = http.createServer((request, response) => {// 3. 读文件返回// 3.1 拼接妖谱读取的文件路径const fullPath = path.join(__dirname, "web", "index.html");// 3.2 读取这个文件的内容fs.readFile(fullPath, "utf-8", (err, data) => {if (err == null) {response.end(data);} else {console.log("404");}});
});
// 4. 开启服务器
server.listen(4399, () => {console.log("success");
});

staticServer

// 1. 导入模块
const fs = require("fs");
const http = require("http");
const path = require("path");// 2. 创建服务器
const server = http.createServer((request, response) => {// 3. 设置返回给用户的内容// 3.1 首先你要知道用户请求的是那样一个页面(哪一个资源)console.log(request.url);// response.end("666");// 3.2 拼接要读取文件的路径const fullPath = path.join(__dirname, "web", request.url);// 3.3 读取这个文件// 服务器会有一个嗅探功能// 它根据你请求的资源名字,能够知道你请求的什么类型的资源// 知道了什么类型的资源后,就可以根据这种类型的资源返回内容fs.readFile(fullPath, (err, data) => {if (err == null) {response.end(data);} else {console.log("404");}});
});// 开启服务器
server.listen(4399, () => {console.log("服务器开启了...");
});

nodejs接收get传递过来的参数

前端传参

  • get传参:拼接在url上面

    http://127.0.0.1:4399/joke?id=8&username=admin

  • post传参:不是拼接在url上面

    请求体中传递

const fs = require("fs");
const path = require("path");
const http = require("http");
const url = require("url");const server = http.createServer((req, res) => {// console.log(req.url); // /?id=8&username=admin// 我们可以通过req.url拿到前端传递过来的参数// 但是要做字符串处理// 我们可以使用node.js的一个模块:url模块// 调用它的parse方法// 第一个参数:就是要处理的url// 第二个参数:如果给true的话就返回一个对象let urlObj = url.parse(req.url, true);//   console.log(urlObj);// 这个返回的对象里面有一个query属性,它也是一个对象,这个属性里面就youget传递过来的参数console.log(urlObj.query);// 那就可以在这里根据这个接收到的id,去数据库中获取这个id的英雄的所有详细信息// 返回给调用者// 如果在这里拿到了id对应的英雄的详细信息了,就可以返回,res.end(JSON.stringify(urlObj.query)); // 只能返回字符
});server.listen(4399, () => {console.log("服务器开启了...");
});

nodejs接收post传递过来的参数

const http = require("http");
const querystring = require("querystring");const server = http.createServer((req, res) => {// req是请求对象// 因为这里是post的方式传递过来的参数,不是在url中的,所以用req.url是拿不到的//   console.log(req.url)// 那如何拿呢?// 一小块一小块的拿// 1. 你得有一个容器let postData = "";// 2. 给req对象一个data事件// 事件处理程序,参数是当前这次传递过来的这一小块内容req.on("data", (chunk) => {postData += chunk;});// 3. 给req对象一个end事件// 表示数据传递完毕了req.on("end", () => {// 打印看看// console.log(postData); // username=admin&password=123456// 4. 解析这个传递过来的参数数据let postObj = querystring.parse(postData);console.log(postObj); // { username: 'admin', password: '123456' }// 5.//那在这里就可以根据这个传递过来的账号和密码,去数据库中判断是否是正确的//如果正确的那在这里就可以告诉用户,账号密码正确res.end("sb");});
});server.listen(4399, () => {console.log("服务器开启了...");
});

第三方模块的使用

    1. 新建一个文件夹,文件夹名字非中文,名字也不要和模块名字一样
    2. npm init -y 初始化
    3. 下载模块,去npm官网搜索模块,用他的说明来下
    4. 使用模块,去模块的官网,或者模块说明中使用
var Crawler = require("crawler");
var fs = require("fs");var c = new Crawler({encoding: null,jQuery: false, // set false to suppress warning message.callback: function (err, res, done) {if (err) {console.error(err.stack);} else {fs.createWriteStream(res.options.filename).write(res.body);}done();},
});// 爬取数据
//爬一个b站中的视频
//不是什么样的数据都可以爬下来,有些网站做了反爬
//反爬的机制:
//      看你这个请求是不是服务器,如果是就不给你数据
//      我们这里是node.js是服务端,有时候有的数据就不给你.
//解决的办法 ,伪装:
//      把我们这个node.js后端服务器请求伪装成客户端(浏览器);
c.queue({uri:// "http://msn-img-nos.yiyouliao.com/inforec-20200703-f906b655a759e35e6ee1e7470184f66f.jpg?time=1593758869&signature=663062FDBD08E6A3E802F2055B3D5F2E","https://cn-sxty2-cu-v-04.bilivideo.com/upgcxcode/46/29/203472946/203472946-1-16.mp4?expires=1593766200&platform=html5&ssig=faGf3-U7N-hzj6U60zc8Xw&oi=1006738461&trid=33046ef58ce948ddb69f3f9978c397e0h&nfc=1&nfb=maPYqpoel5MI3qOUX6YpRA==&mid=241600263&logo=80000000",filename: "06-npmUse/temp/meinv.avi",header: { "User-Agent": "requests" }, // 让服务端伪装成客户端
});

paclkage.json与package-lock.json的区别

  1. 使用npm5之前的版本,是不会生成package-lockjson这个文件的。

  2. npm5以后,包括npm5这个版本, 才会生成package-lock.json文件

  3. 当使用npm安装包的时候,npm都会生成或者更新package-lock.json文件

  • npm5以后的版本,在安装包的时候,不需要加–save (-S) 参数, 也会自动在package.json中保存依赖项
  • 当安装包的时候,会自动创建或者更新package-lock json文件
  • package-lock json文件内保存了node_ _modules中所有包的信息,包含这些包的名称、版本号、下载地址。带来好处是,如果重新npm install的时候,就无需逐个分析包的依赖项,因此会大大加快安装速度。
  • 从package-lock.json文件名来看,lock代表的是“锁定”的意思。它用来锁定当前开发使用的版本号,防止npm instal的时候自动更新到了更新版本。因为新版本有可能会更新老的api,导致之前的代码出错。
    e-lock json文件内保存了node_ _modules中所有包的信息,包含这些包的名称、版本号、下载地址。带来好处是,如果重新npm install的时候,就无需逐个分析包的依赖项,因此会大大加快安装速度。
  • 从package-lock.json文件名来看,lock代表的是“锁定”的意思。它用来锁定当前开发使用的版本号,防止npm instal的时候自动更新到了更新版本。因为新版本有可能会更新老的api,导致之前的代码出错。
  • 原来的package json文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,你每次npm install都是拉取的该大版本下的最新的版本,为了稳定性考虑我们几乎是不敢随意升级依赖包的,这将导致多出来很多工作量,测试适配等,所以package-lockjson文件出来了, 当你每次安装-一个依赖的时候就锁定在你安装的这个版本。

Nodejs 了解web服务器相关推荐

  1. 用nodejs搭建web服务器

    转自:微点阅读 https://www.weidianyuedu.com Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动. ...

  2. 利用Nodejs 构建 WEB服务器

    前言 Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以_向浏览器等 Web 客户端提供文档_,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的 ...

  3. Nodejs搭建web服务器

    使用Nodejs + http 创建web服务器 1.首先创建一个server.js文件,创建服务器,以及对应css和js文件的引入和判断 var http=require('http'); var ...

  4. 应用Nodejs创建web服务器

    //创建web服务器,设置端口,根据浏览器的URL做出响应 /index    响应'<h2>这是首页</h2>'              /list         响应文 ...

  5. 使用node.js作为简单的Web服务器

    我想运行一个非常简单的HTTP服务器. 对example.com每个GET请求都应该将index.html提供给它,但是作为常规HTML页面(即,与阅读普通网页时相同的体验). 使用下面的代码,我可以 ...

  6. nodejs创建http服务器

    之前有简单介绍nodejs的一篇文章(http://www.cnblogs.com/fangsmile/p/6226044.html) HTTP服务器 Node内建有一个模块,利用它可以很容易创建基本 ...

  7. nodejs php web,nodejs实现的简单web服务器功能示例

    本文实例讲述了nodejs实现的简单web服务器功能.分享给大家供大家参考,具体如下: 前端js代码: $.ajax({ url:'http://192.168.0.114:3000',//服务器地址 ...

  8. nodejs没有net模块_Node.js实战16:用http模块创建web服务器

    Nodejs的http模块,是基于net.server,经过c++二次封装,也是nodejs的核心模块. 功能比net.server更强,可解析和操作更多细节内容,如值.content-length. ...

  9. Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型

    场景 Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件让全世界浏览,还可以放置数据文件,让全世界下载.目前最主流的Web服务 ...

最新文章

  1. matlab人脸追踪,求大神帮助我这个菜鸟解决一下人脸跟踪这个程序的一些问题啊!!...
  2. 编写一段代码,实现在控制台输入一组数据后,排序后再控制台输出
  3. c/c++如何正确使用结构体?
  4. IS-IS路由协议 总结
  5. 将阿里云上的nodejs应用配置成SAP云平台上destination的目的地之后
  6. 浙大月赛C题(2012/8)Cinema in Akiba(线段树)
  7. java class api 中文乱码_SpringMVC之springmvc原始api,请求中文乱码问题
  8. vue 在 html 中自定义 tag
  9. 苹果2021年WWDC大会可能继续采用线上方式举办
  10. linux基础练习,Linux基础指令练习
  11. 百度:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序
  12. win10电脑找不到xps查看器的详细解决步骤
  13. Visual Studio Community 2017安装步骤(只装C++)
  14. Is your Tecplot 360 EX liense valid?
  15. 计算器存储功能怎么用_数控车床加工刀具补偿功能怎么用?
  16. 数字版权保护(Digital Right Management,DRM)
  17. 支付宝对账数据下载及解析
  18. css3 实现星空动画 -- 星星闪烁 - 流星划过 - 月亮上升
  19. 【迁移学习】STL(Stratified Transfer Learning)小结
  20. 整顿风暴后网址导航将何去何从 如何孕育重生

热门文章

  1. as3 与 java_每天学一点Flash(48) As3.0 与 java 通信(1)
  2. .interface文件怎么看啊_【干货】Java关键字合集,看这篇就够了!
  3. 计算机机房的安全等级分,计算机机房安全等级的划分标准是什么
  4. WAMPServer使用
  5. Android开发杂谈更新中
  6. CSS--背景样式---伪类选择器---高级选择器---盒子模型---浮动
  7. 小汤学编程之JavaScript学习day03——对象、Array数组、String字符、Date日期、JSON
  8. 「 Luogu P2574 」 XOR的艺术——线段树
  9. Winrunner与QTP
  10. SAP 学习笔记 --- 04-26 02.Material Master