咱们前端这么多技术,上手容易,但是搞清楚原理不太简单呀,而我偏偏强迫症,不喜欢一头雾水的使用某个技术,某行代码,所以在之前学习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}
- 文件夹操作–创建文件夹
- existsSync判断是否存在目录,然后返回bool值。
- 循环创建 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快速搭建一个服务器
- 安装npm install express ---- 引入模块 const express = require(“express”)
- 启动并监听它的运行端口express.listen(端口号,()=>{})
搭建完成,已经可以通过输入网址发出get请求, post请求了, 要知道(请求地址,回调函数)。
那么客户端如何向服务器调接口发请求的呢
延伸原理来咯
- Part 1
通信协议(TCP/IP HTTP等),计算机里看得见的看不见的都有协议》 ISO 国际标准化组织,分成不同层次,七层模型,OSI/RM 开放系统互联/参考模型
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
》TCP/IP 四层模型
网络接口层、网络层、传输层、应用层
》利用下一层为上一层提供服务
》IP TCP 传输控制协议 HTTP 超文本传输协议
》TCP三次握手,保证端到端的可靠连接,UDP用户数据报协议,不可卡片的链接
》HTTP 无状态协议,有请求来了就去响应就完事了 - Part 2
- TCP传输控制协议,传输层协议,定义数据传输和连接方式的规范。三次握手完毕后,客户端与服
务器才正式开始传送数据。 - HTTP超文本传输协议,应用层协议,定义传输数据的内容的规范。
- HTTP协议中的数据是利用TCP协议传输的,特点是客户端每次发送的请求都需要服务器回送响应,它
是TCP协议族中的一种,默认使用TCP 80端口。 - HTTPS协议和HTTP协议不一样,http是明文传输,https则是 更具有安全性的ssl加密传输协议,铵
全,需要到ca申请证书,需要一定费用,以安全为目标。 - SSH为Secure Shell的缩写,SSH 是建立在应用层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
- (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 浏览器(客户端)渲染,客户端向服务器发起请求,服务器端返回数据给客户端,客户端实现页面拼接显示。 - 哪一个更好?
没有哪个更好,服务器只负责给数据,服务器端的压力分担给客户端,这是优点,缺点是客户端会多次请求
想了想还是简单介绍下路由吧,毕竟咱是个完整的入门介绍
没看懂上面一段?往下看,看完下面的白话,再回去品上面的这段,你品,你细品~
OVER~