Node.js学习笔记-03

这篇具有很好参考价值的文章主要介绍了Node.js学习笔记-03。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

七、网络编程

1. 构建 TCP 服务

Node.js学习笔记-03,node学习笔记,node.js,学习,笔记
TCP 是面向连接的协议,显著特征 在传输之前需要3次握手形成会话。
客户端 ——请求连接——> 服务器端 ——响应——> 客户端 ——开始传输——> 服务器端。

2. 构建 UDP 服务

3. 构建 HTTP 服务

http模块

在node中HTTP服务继承自TCP服务器(net模块),它能够与多个客户端保持连接,由于其采用事件驱动的形式,并不为每一个连接创建额外的线程或进程,保持很低的内存占用,所以能实现高并发。
Node.js学习笔记-03,node学习笔记,node.js,学习,笔记

4. 构建 WebSocket 服务

WebSocket协议主要分为两个部分:握手 和 数据传输。
(握手部分由HTTP完成,握手顺利完成后当前连接将不再进行HTTP的交互,而是开始WebSocket的数据帧协议)

5. 网络服务与安全

Node在网络安全上提供了3个模块,分别为 crypto、tls、https。

TLS / SSL
1、密钥

TLS / SSL 是一对公钥/私钥 的结构,非对称结构。
Node.js学习笔记-03,node学习笔记,node.js,学习,笔记
Node 在底层采用的是 openssl 实现TLS/SSL 。

2、数字证书
TLS 服务
HTTPS 服务

6. 总结

Node基于事件驱动和非阻塞设计,在分布式环境中尤其能发挥出它的特长,基于事件驱动可以实现与大量的客户端进行连接,非阻塞设计则让它可以更好地提升网络的响应吞吐。Node提供了相对底层的网络调用,以及基于事件的编接口,使得开发者在这些模块上十分轻松地构建网络应用。

八、构建web应用(重点)

8.1 基础功能

// 经典案例 Hello World
var http = require('http')
http.createServer( function (req , res){
    res.writeHead(200,{'Content-Type':'text/plain'});
    res.end('Hello World\n');
} ).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/')
// 使用 node .\helloWorld.js  运行服务,输入地址即可访问。

要实现更丰富的需求,一切都从如下这个函数展开:

function (req , res){
    res.writeHead(200,{'Content-Type':'text/plain'});
    res.end();
}
8.1.1 请求方法

在Web应用中最常见的请求方法是 GET 和 POST,除此之外,还有HEAD、DELETE、PUT、CONNECT等方法。
请求方法存在于报文的第一行的第一个单词,通常大写。如下为一个报文头的示例:
Node.js学习笔记-03,node学习笔记,node.js,学习,笔记

8.1.2 路径解析

路径部分存在于报文的第一行的第二部分,参考上图。

8.1.3 查询字符串

跟在路径后面的字符串就是查询字符串(如 ?name=nb)

Node提供了 querystring模块用于处理这部分数据:

var querystring = require('querystring');
var query = querystring.parse( url.parse(req.url).query ); 
// 更简介的方法是 给 url.parse()传递第二个参数,如下
var query2 = url.parse(req.url, true).query; 
// 它会将 name=nb&age=120 解析为一个JSON对象 {name:'nb',age:120}
// 如果键多次出现,那么它的值将会是一个数组 name=nb1&name=nb2 => {name:['nb1','nb2']}
8.1.4 Cookie

HTTP是一个无状态的协议,而现实业务中却是需要一定的状态的,否者无法区分用户之间的身份。如何标识和认证一个用户,最早的方案就是Cookie。

Cookie的处理分为如下几步:服务器向客户端发送Cookie => 浏览器将Cookie保存 => 之后每次请求都会将Cookie发向服务器;

HTTP_Parser 会将所有的报文字段解析到 req.headers上,那么 Cookie 就是 req.headers.cookie
根据规范中定义 Cookie 值的格式是 key=value;key2=value2 形式的。

8.1.5 Session

问题1:Cookie可能会体积过大;问题2:Cookie可以在前后端进行修改,Cookie对敏感数据的保护可以说是无效的。Session 应运而生。

Session的数据只保留在服务器端,客户端无法修改。这样数据安全性得到一定保障,数据也无需在协议中每次都被传递。

虽然在服务器端存储数据十分方便,如何将每个客户和服务器中的数据一一对应呢?这里有两种常见的实现方式:

  1. 基于 Cookie 来实现用户和数据的映射;P195
  2. 通过查询字符串来实现浏览器端和服务器端数据的对应;P195(风险大于1)
1.Session 与内存
  • Session 弊端:
  • 增加内存消耗,会引起性能问题;
  • 我们为了利用 多核CPU启动多个进程时,用户请求的连接将可能随意分配到各个进程中,Node的进程与进程之间是不能直接共享内存的,用户的Session可能会引起错乱。
  • 为解决性能问题和Session数据无法跨进程共享的问题,常用的方案是将Session集中化,如常用的工具 Redis、Memcached等。P198
  • 尽管采用第三方缓存会引起网络访问,理论上比本地慢,但还是利大于弊。
2.Session 与安全

主要是指如何让这个口令更加安全。

  1. 加密 / 解密
  2. 将客户端的某些独有信息与口令作为原始值然后签名。这样攻击者一旦不在原始的客户端上进行访问就会导致签名失败。
8.1.6 缓存

如何节省不必要的传输,提高性能。

8.1.7 Basic认证

P204 --不太重要文章来源地址https://www.toymoban.com/news/detail-639653.html

8.2 数据上传

8.3 路由解析

8.4 中间件

8.5 页面渲染

8.6 总结

  • 本章涉及的内容较为丰富,在Web应用的整个构建过程中,从处理请求到响应请求的整个过程都有原理性阐述,整理本章细节就可以完成一个功能完备的Web开发框架。过去的各种Web技术,随着框架和库的成型,开发者往往迷糊地知道应用框架和库,却不知道细节的实现,这好比没有地图却在野地里行进。本章的内容希望能为Node开发者带来地图似的启发,在开发Web应用时能够心有轮廓,明了细微。
  • 现在知名和成熟的Web框架有Connect、Express等,本章中的内容在这些框架中都有实现因为行文的原因,本章中的代码实现得较为粗糙,实际使用请使用这些成熟的框架。
    P245

到了这里,关于Node.js学习笔记-03的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web学习笔记(四十五)Node.js

    目录 1. Node.js 1.1 什么是Node.js 1.2 为什么要学node.js 1.3  node.js的使用场景 1.4 Node.js 环境的安装 1.5 如何查看自己安装的node.js的版本 1.6 常用终端命令 2. fs 文件系统模块 2.1引入fs核心模块 2.2 读取指定文件的内容 2.3  向文件写入指定内容 2.4 创建文件夹  2.5 判断文件夹是否存

    2024年04月16日
    浏览(23)
  • 尚硅谷最新Node.js 学习笔记(一)

    目录 一、Nodejs入门 1.1、为什么要学习Nodejs? 1.2、Nodejs是什么? 1.3、Nodejs的作用 1.4、Nodejs安装 1.5、Nodejs初体验 1.6、编码注意事项 二、Buffer(缓冲器) 2.1、概念 2.2、特点 2.3、使用 创建Buffer Buffer与字符串的转化 Buffer的读写 三、fs模块 3.1、文件写入 异步写入 同步写入 app

    2024年02月19日
    浏览(29)
  • 【node.js】03-http模块

    目录 一、什么是http模块 二、创建基本的WEB服务器 三、req请求对象 四、res响应对象 五、根据不同的url响应不同的JSON内容         http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一

    2024年02月15日
    浏览(34)
  • 小白的Node.js学习笔记大全---不定期更新

    Node. js 是一个基于 Chrome v8 引擎的服务器端 JavaScript 运行环境 Node. js 是一个事件驱动、非阻塞式I/O 的模型,轻量而又高效 Node. js 的包管理器 npm 是全球最大的开源库生态系统 单一线程 Node.js 沿用了 JavaScript 单一线程的执行特性。即在 Node.js 中,JavaScript 的执行线程与其他线程

    2024年02月12日
    浏览(31)
  • Node.js 学习笔记 fs、path、http模块;模块化;包;npm

    教学视频 BV1MN411y7pw , P83-97的笔记 Node.js是一个跨平台JavaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序。 作用:使用 Node.js 编写服务器端程序 ✓ 编写数据接口,提供网页资源浏览功能等等 ✓ 前端工程化:为后续学习 Vue 和 React 等框架做铺垫 1.前端工程化 前

    2024年04月08日
    浏览(69)
  • Node.js+vue多用户个人博客网站i03nz

    基于nodejs语言设计并实现了个人博客。该系统基于B/S即所谓浏览器/服务器模式,应用Vue框架,选择MySQL作为后台数据库。系统主要包括首页、个人中心、用户管理、文章分类管理、博客文章管理、留言板管理、系统管理等功能模块。要循序渐进,心急吃不了热豆腐,任何事情

    2024年02月08日
    浏览(35)
  • Vue-Element-Admin项目学习笔记(7)用Node.js写一个简单后端接口

    前情回顾: vue-element-admin项目学习笔记(1)安装、配置、启动项目 vue-element-admin项目学习笔记(2)main.js 文件分析 vue-element-admin项目学习笔记(3)路由分析一:静态路由 vue-element-admin项目学习笔记(4)路由分析二:动态路由及permission.js vue-element-admin项目学习笔记(5)路由分析

    2024年02月09日
    浏览(36)
  • node.js笔记(2)

    fs模块是node.js官方提供的,用来操作文件的模块,提供了一系列的方法和属性,用来满足用户对文件的操作需求。 在使用之前,需要导入,使用require方法来导入 读取指定文件的内容 fs.readFile(path,[options],callback) 其中,path代表文件路径, options是可选参数,表示以什么编码格

    2024年01月17日
    浏览(34)
  • node.js笔记(3)

    在使用fs模块操作文件是,如果使用./或../开头的相对路径时,很容易出现路径动态拼接错误。原因是在代码运行的时候,会执行node命令所处的目录,动态拼接出被操作的完整路径。 出现路径拼接是因为是相对路径,采用绝对路径则不会。 采用绝对路径,移植性特别差,不利

    2024年01月19日
    浏览(33)
  • Node.js笔记

    node下载地址:Node.js (nodejs.org) 查看node版本: 运行js文件: 按住shift+鼠标右键:打开Power Shell,PS是新的cmd npm类似maven包管理工具 npm设置阿里镜像: 文件模块 文件的读取: 文件的写入: __dirname:当前文件所在目录 __filename:__dirname本文件全名 路径拼接 path里面可以用../回退

    2024年02月10日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包