精心整理Node.js入门---原理篇

咱们前端这么多技术,上手容易,但是搞清楚原理不太简单呀,而我偏偏强迫症,不喜欢一头雾水的使用某个技术,某行代码,所以在之前学习node的时候研究了一点东西,梳理了一下趁着这次整理,一齐放上来

先来段入门的文件读写练练手再开讲

  • 读取文件(fs)
    1、fs模块是系统模块,叫文件系统, FileSystem用来操作本地文件,原生js做不到。
    2、文件系统的写读nodejs/js都有一个异步的回调机制。
    3、nodejs 错误优先机制,在nodejs 中大部分模块的回调函数中,第一个参数为异常信
    息。
    4、二进制流转换成字符串toString。
    在这里插入图片描述
  • 文件夹操作—自己创模块

注意路径问题:
如果没有加相对路径默认Mnodejs系统模块中查找,然后查找当前项目中的node_ modules眼然后报错

//dufile.js
const t = require('./tools');
const { add } = require('./tools');
console.log(t.add(3,2))
console.log(add(3,4))

//tool.js
function add(a,b){
	return a+b
}
module.exports={add}
  • 文件夹操作–创建文件夹
  1. existsSync判断是否存在目录,然后返回bool值。
  2. 循环创建 recursive:true,如果父级不存在会自动创建
const fs = require("fs");
// existsSync判断是否存在目录,然后返回bool值。
if (!fs.existsSync("./data")) {
    fs.mkdirSync("./data");
}

fs.mkdirSync("./data/20191111", {
    recursive: true
});

fs.mkdirSync("./books/20191111", {
    recursive: true //循环创建,如果父级不存在会自动创建
});

/* 文件夹操作
!判断是否存在 existsSync
?循环创建 recursive:true
*/
  • 如何安装第三方模块来使用
  • 1. 网络请求axios
    直接npm安装就能用,安装后可以发送各种网络请求数据然后放在某个地方直接用。axios使一 个http可以用在浏览器端和nodejs端,如果在浏览器里使用,可以根据当前使用环境调用浏览器里发网络请求的底层插件(底层API)叫XmlHttpRequest模块,如果在nodejs使用, 会调用nodejs 里的http模块,这个是插件自己封装好的。
    1、axios发起网络请求,发完之后把数据存在一个文件里
    2、get取数据然后直接展示出来或者存在文件里
  • 2. 数据截取cheerio
    如何抓取网页里面的详细内容,目的是做- -些假数据,让网站看起来不太假,手写太累,用爬虫,数据采集。
    cheerio可以在nodejs中使用,用来解析htmL 内容–做爬虫
// *1、引入这个值
const axios = require('axios').default;
// *3、
const fs = require("fs");
// *5、cheerio 可以在nodejs中使用,用来解析html内容---做爬虫
const cheerio = require("cheerio");
// *2、发请求
// *发送一个get请求,.then表示成功之后回调函数
// axios.get("http://www.baidu.com").then(res => {
//     // ?console.log(res.data);
//     // *3、把这个返回结果放在db.html
//     fs.writeFileSync("./data/bd.html", res.data)
// });
/*  
*4、
!axios发起网络请求,发完之后把数据存在一个文件里
!get 取数据 然后直接展示出来或者存在文件里
*/
// *6、其元素选择方式和jqery一模一样,此处截取的是当前网络的标题
/* axios.get("http://www.baidu.com").then(res => {
    const $ = cheerio.load(res.data);
    console.log($("title").text());
}); */

// *1、向这个网址发起一个get请求,请求成功之后获取一个数据放在jq对象$里
axios.get('https://www.readnovel.com/book/13360954903153104#Catalog').then(res => {
    const $ = cheerio.load(res.data);
    const books = [] 7
        // *2、jq操作 元素选择
    $(".volume-wrap .volume .cf li").each(function() {
        const book = {}
        book.title = $(this).find('a').text()
        book.url = $(this).find('a').attr("href")
        books.push(book)
    })
    fs.writeFileSync("./books/text1.json", JSON.stringify(books));
    console.log("抓取数据完成!");
    console.log(res.data);
})

说到node,必须来说下,如何通过express快速搭建一个服务器

  1. 安装npm install express ---- 引入模块 const express = require(“express”)
  2. 启动并监听它的运行端口express.listen(端口号,()=>{})
    搭建完成,已经可以通过输入网址发出get请求, post请求了, 要知道(请求地址,回调函数)。

那么客户端如何向服务器调接口发请求的呢

我自己总结的

延伸原理来咯
  • Part 1
    通信协议(TCP/IP HTTP等),计算机里看得见的看不见的都有协议

    》 ISO 国际标准化组织,分成不同层次,七层模型,OSI/RM 开放系统互联/参考模型
    物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
    》TCP/IP 四层模型
    网络接口层、网络层、传输层、应用层
    》利用下一层为上一层提供服务
    》IP TCP 传输控制协议 HTTP 超文本传输协议
    》TCP三次握手,保证端到端的可靠连接,UDP用户数据报协议,不可卡片的链接
    》HTTP 无状态协议,有请求来了就去响应就完事了

  • Part 2
  1. TCP传输控制协议传输层协议,定义数据传输和连接方式的规范。三次握手完毕后,客户端与服
    务器才正式开始传送数据。
  2. HTTP超文本传输协议应用层协议,定义传输数据的内容的规范。
  3. HTTP协议中的数据是利用TCP协议传输的,特点是客户端每次发送的请求都需要服务器回送响应,它
    是TCP协议族中的一种,默认使用TCP 80端口
  4. HTTPS协议和HTTP协议不一样,http是明文传输,https则是 更具有安全性的ssl加密传输协议,铵
    全,需要到ca申请证书,需要一定费用,以安全为目标。
  5. SSH为Secure Shell的缩写,SSH 是建立在应用层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
  6. (FTP)文件传输协议是一种客户端/服务器协议,用于将文件传输到主机或与主机交换文件。它可以使用用户名和密码进行身份验证。匿名FTP允许用户从Internet访问文件和数据。
  • Part 3

既然说到端口了,那就来说下常用端口号
IIS (HTTP) : 80
SQL Server: 1433
Oracle: 1521
MySQL: 3306
FTP: 20/21
MongoDB: 27017
SSH: 22
Tomcat: 8080
https: 443

发请求的方法都啥呢、其中get和post啥区别呢

当时我也查了查,打下的江山在此截图奉上

在这里插入图片描述

小问题,向服务器发起请求都有啥常见情形呢

当然还有好多

继续我们的node入门之客户端渲染和服务端渲染的区别

SSR 和 B( C )SR

  • SSR
    Server side Render服务器渲染,所有的页面生成都在服务器端实现。
  • B( C )SR
    Browser(Client) Side Render 浏览器(客户端)渲染,客户端向服务器发起请求,服务器端返回数据给客户端,客户端实现页面拼接显示。
  • 哪一个更好?
    没有哪个更好,服务器只负责给数据,服务器端的压力分担给客户端,这是优点,缺点是客户端会多次请求

想了想还是简单介绍下路由吧,毕竟咱是个完整的入门介绍

在这里插入图片描述

没看懂上面一段?往下看,看完下面的白话,再回去品上面的这段,你品,你细品~

haola
OVER~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值