Nodejs

fs 模块

---- fs.readFile(‘路径’,‘格式’,callback(err,dataStr)) 读取文件
---- fs.writeFile('路径',‘要写入的数据’,‘格式(可选填),callback(err)’) 写入文件

path 模块

__dirname 被执行 js 文件的绝对路径

---- path.join(__dirname,'/a/b/c') 拼接路径
---- path.basename('路径',‘文件后缀名’) 可获取最后一段文件名+文件后缀名,如果填入‘文件后缀名’,则只返回文件名
---- path.extname(‘路径’) 获取文件后缀名

http 模块
const server = http.createServer( (req, res) => {} )  创建服务

server.listen('端口号',() => {} ) 监听访问

npm
npm i 包名称 -D ( -D 是 --save-dev 的缩写, 包只在开发环境使用)
npm i 包名称 -g ( -g 全局包 )
image.png
Express

Express 是基于 node 内置 http 模块封装的。

最常见的可以做
Web 网站服务器,专门对外提供网站资源的服务器
API 接口服务器, 专门对外提供 API 接口的服务器

使用Express , 可以更高效快速的创建 web服务器 或者 API 服务器

const express = require('express')
const app = express() // 创建服务器 app

app.use(express.static('资源路径文件夹')) // 将要向外提供的静态资源文件夹目录写入

app.listen(80)  // 监听服务器运行在80端口

app.get('请求路径',(req,res)=>{})

app.post('请求路径',(req,res)=>{})

挂载路径前缀
app.use('/public',express.static('public'))  // 之后访问资源需要添加上  /public 路径
Express 中间件

1.一定要在 路由之前 注册中间件
2.客户端发送请求过来,可以 连续添加调用 多个中间件 进行处理
3.执行完中间件的代码之后,不能忘记 next()
4.为了 防止代码逻辑混乱 , 在 next() 之后不要添加额外代码
5.连续调用多个中间件时, 多个中间件之间, 共享 req 和 res 对象

错误级别中间件放在所以路由之后
Express内置中间件

express.static() ---------- 无兼容限制
express.json() -------------- 4.16.0 +
express.urlencoded({ extended: false }) 解析URL-encoded 格式的请求体数据 ---------- 4.16.0 +


image.png
querystring

const qs = require( ' querystring ' )

qs.parse() 解析查询字符串为对象格式


image.png

解决跨域

cors(跨域资源共享,由一系列http响应头组成,这些HTTP响应头决定浏览器是否阻止前端JS代码跨域获取资源)

cors是 Express 的一个第三方中间件,通过安装和配置cors中间件,可以很方便的解决跨域问题。
app.use(cors())(一定要在路由配置之前配置cors!!!!!!)


image.png
image.png

image.png
JSONP

JSONP通过标签的src属性,请求服务器上的数据,同时,服务器返回一个函数的调用,这种请求的方式叫做JSONP。

JSONP不属于真正的Ajax请求,因为它没有使用 XMLHttpRequest 这个对象
JSONP只支持get请求


image.png

image.png

数据库

数据库是用来 组织,存储和管理数据的仓库。
数据库 MySQL --- Oracle(收费) --- SQL Server(收费) --- Mongodb

web 开发模式

1.服务端渲染

优点:

1.前端耗时少,服务端负责生成html内容,浏览器只负责渲染,尤其是移动端,更省电。
2.利于seo优化,因为从服务端响应的是完整的html内容,所以利于爬虫获取信息,更利于SEO

缺点

1.占用服务端资源
2.不利于前后端分离,开发效率低

2.前后端分离

image.png

身份认证

image.png
session 认证机制
image.png

JWT认证机制 (JSON WEB TOKEN )

目前最流行的跨域认证解决方案

image.png

JWT 通常用三部分组成 Header 头部, Payload有效荷载, Signatute 签名, 三者之间用 . 分隔。

token生成 token解析

npm i jsonwebtoken express-jwt
jsonwebtoken 生成 token
express-jwt 解析 token

const secretStr = 'jwt01' // 加密串

生成token: jsonwebtoken.sign({key:value},加密串,expire是In:‘过期时间’)

解析token:app.use(expressJWT({ secret: secretStr, algorithms: ['HS256'] }).unless({ : [/^/register/] }))

bcryptjs 加密

无法逆向破解
同一明文密码多次加密,得到加密结果各不相同

bcrypt.hashSync(加密数据,随机盐的长度)

表单验证

@hapi/joi 为表单中定义每个数据项,定义验证规则
npm i @hapi/joi
@escook/express-joi ,Express 中间件,来实现自动对表单的验证功能。
npm i @escook/express-joi

导入@hapi/joi


image.png

你可能感兴趣的:(Nodejs)