diff --git "a/\351\231\210\346\226\271\346\227\255/20260320.md" "b/\351\231\210\346\226\271\346\227\255/20260320.md" deleted file mode 100644 index 180bdabdfbfefd39698cbdb86d058290e450d86d..0000000000000000000000000000000000000000 --- "a/\351\231\210\346\226\271\346\227\255/20260320.md" +++ /dev/null @@ -1,48 +0,0 @@ -# node.js HTTP模块 - -## 一、http(超文本传输协议)协议 - -- HTTP 是一种无状态、基于文本的应用层协议,客户端通过请求-响应模型与服务器进行通信。 - -## 二、HTTP模块运行和服务器交互顺序 - -1. **客户端发起连接**:浏览器或其他客户端通过 TCP 三次握手与服务器建立连接(默认端口 80 或 443)。 -2. **服务器接收请求**:HTTP 服务器(如 Node.js `http` 模块)监听连接,当有请求到达时,解析 HTTP 请求报文,提取方法、路径、头信息等。 -3. **应用处理**:服务器根据路由规则执行业务逻辑(如读取文件、查询数据库),生成响应内容。 -4. **构造响应报文**:设置状态码、响应头(如 `Content-Type`、`Content-Length`),并将响应体(如 HTML、JSON)组装成 HTTP 响应报文。 -5. **发送响应**:服务器通过 TCP 连接将响应报文发送给客户端,客户端接收后解析并渲染。 -6. **连接管理**:若为 HTTP/1.1 持久连接,连接保持以处理后续请求;若为短连接,服务器关闭连接。 - -## 三、node.js中的http模块 - -| 作用 | 说明 | -| ---------- | ----------------------- | -| 创建服务器 | 使用http.createServer() | -| 发送请求 | 使用http.request() | -| 处理请求 | 获取URL、Method、参数等 | -| 返回响应 | 发送HTML、JSON、图片等 | - -### 流程展示 - -```js -//导入http模块 -const http = require('http') -//创建服务器模块 -const server = http.createServer((req,res)=>{ - res.writeHead('http对应状态码',{'键值对'}) - res.end("返回参数") -}) -//监听端口 -server,listen(3000,代表了监听这个http在web服务器上的那个端口,()=>{ log.(回调函数,可不写) }) -``` - -### http内含对象 - -#### 1-请求对象 - -#### 2-响应对象 - -### 创建API - - - diff --git "a/\351\231\210\346\226\271\346\227\255/20260323.md" "b/\351\231\210\346\226\271\346\227\255/20260323.md" deleted file mode 100644 index 180bdabdfbfefd39698cbdb86d058290e450d86d..0000000000000000000000000000000000000000 --- "a/\351\231\210\346\226\271\346\227\255/20260323.md" +++ /dev/null @@ -1,48 +0,0 @@ -# node.js HTTP模块 - -## 一、http(超文本传输协议)协议 - -- HTTP 是一种无状态、基于文本的应用层协议,客户端通过请求-响应模型与服务器进行通信。 - -## 二、HTTP模块运行和服务器交互顺序 - -1. **客户端发起连接**:浏览器或其他客户端通过 TCP 三次握手与服务器建立连接(默认端口 80 或 443)。 -2. **服务器接收请求**:HTTP 服务器(如 Node.js `http` 模块)监听连接,当有请求到达时,解析 HTTP 请求报文,提取方法、路径、头信息等。 -3. **应用处理**:服务器根据路由规则执行业务逻辑(如读取文件、查询数据库),生成响应内容。 -4. **构造响应报文**:设置状态码、响应头(如 `Content-Type`、`Content-Length`),并将响应体(如 HTML、JSON)组装成 HTTP 响应报文。 -5. **发送响应**:服务器通过 TCP 连接将响应报文发送给客户端,客户端接收后解析并渲染。 -6. **连接管理**:若为 HTTP/1.1 持久连接,连接保持以处理后续请求;若为短连接,服务器关闭连接。 - -## 三、node.js中的http模块 - -| 作用 | 说明 | -| ---------- | ----------------------- | -| 创建服务器 | 使用http.createServer() | -| 发送请求 | 使用http.request() | -| 处理请求 | 获取URL、Method、参数等 | -| 返回响应 | 发送HTML、JSON、图片等 | - -### 流程展示 - -```js -//导入http模块 -const http = require('http') -//创建服务器模块 -const server = http.createServer((req,res)=>{ - res.writeHead('http对应状态码',{'键值对'}) - res.end("返回参数") -}) -//监听端口 -server,listen(3000,代表了监听这个http在web服务器上的那个端口,()=>{ log.(回调函数,可不写) }) -``` - -### http内含对象 - -#### 1-请求对象 - -#### 2-响应对象 - -### 创建API - - - diff --git "a/\351\231\210\346\226\271\346\227\255/20260326.md" "b/\351\231\210\346\226\271\346\227\255/20260326.md" deleted file mode 100644 index c65bf99cc077400e73bf89f90cec5b0fada6608c..0000000000000000000000000000000000000000 --- "a/\351\231\210\346\226\271\346\227\255/20260326.md" +++ /dev/null @@ -1,16 +0,0 @@ -# Node.js笔记 - -## 一、Express框架 - -### Express特点 - -| 特点 | 说明 | -| ------------ | ------------------ | -| 极简设计 | 核心简单,易于学习 | -| 灵活路由 | 强大的路由系统 | -| 丰富中间件 | 完善的中间件生态 | -| 模板引擎支持 | 支持多种模板引擎 | -| REST API友好 | 专为REST API设计 | -| 社区活跃 | 文档完善,资源丰富 | - -#### \ No newline at end of file diff --git "a/\351\231\210\346\226\271\346\227\255/20260327.md" "b/\351\231\210\346\226\271\346\227\255/20260327.md" deleted file mode 100644 index c65bf99cc077400e73bf89f90cec5b0fada6608c..0000000000000000000000000000000000000000 --- "a/\351\231\210\346\226\271\346\227\255/20260327.md" +++ /dev/null @@ -1,16 +0,0 @@ -# Node.js笔记 - -## 一、Express框架 - -### Express特点 - -| 特点 | 说明 | -| ------------ | ------------------ | -| 极简设计 | 核心简单,易于学习 | -| 灵活路由 | 强大的路由系统 | -| 丰富中间件 | 完善的中间件生态 | -| 模板引擎支持 | 支持多种模板引擎 | -| REST API友好 | 专为REST API设计 | -| 社区活跃 | 文档完善,资源丰富 | - -#### \ No newline at end of file diff --git "a/\351\231\210\346\226\271\346\227\255/20260330.md" "b/\351\231\210\346\226\271\346\227\255/20260330.md" new file mode 100644 index 0000000000000000000000000000000000000000..d56d96207b7a3de0e52175032f7397a805cd55eb --- /dev/null +++ "b/\351\231\210\346\226\271\346\227\255/20260330.md" @@ -0,0 +1,65 @@ +# node.js中间件 + +## 一、中间件概念 + +- 中间件是express的核心概念 +- 中间件本质是对请求的过滤,决定最后交给路由处理的是响应,或者错误的处理 + +## 二、中间件工作流程 + +请求→中间件(验证身份)→中间件(记录请求时间)→路由处理→响应 or 错误处理 + +## 三、中间件函数 + + ### 1.1 通用中间件函数 + +| 类型 | 函数签名 | 说明 | +| :------------: | :-----------------: | :--------------------------------------: | +| 普通中间件 | (rep,res,next) | 处理请求、响应、必须调用next() | +| 错误处理中间件 | (err,req,res,next) | 4个参数,专门捕获错误 | +| 路由中间件 | (req,res,next) | 绑定再app.get/post/...上 | +| 异步中间件 | async(req,res,next) | 内部可以调用await,错误用next(err)返回 | + +### 1.2 常用中间件 + +| 中间件 | 代码 | 作用 | +| --------- | ---------------------------------------- | ---------------------------------- | +| JSON 解析 | `express.json()` | 解析 `application/json` 请求体 | +| 表单解析 | `express.urlencoded({ extended: true })` | 解析表单 `x-www-form-urlencoded` | +| 静态资源 | `express.static('public')` | 托管静态文件(html、css、js、img) | + +### 1.3 常用第三方中间件 + +| 中间件 | 安装命令 | 引入 + 使用 | 作用 | +| ------------- | --------------------- | ------------------------- | ------------ | +| cors | `npm i cors` | `app.use(cors())` | 解决跨域 | +| morgan | `npm i morgan` | `app.use(morgan('dev'))` | 请求日志打印 | +| cookie-parser | `npm i cookie-parser` | `app.use(cookieParser())` | 解析 cookie | +| multer | `npm i multer` | `upload.single('file')` | 文件上传处理 | + +### 1.4 中间件挂载方式 + +| 方式 | 代码示例 | 适用场景 | +| -------- | ------------------------------- | ---------------------- | +| 全局挂载 | `app.use(middleware)` | 所有请求都生效 | +| 路径前缀 | `app.use('/api', middleware)` | 仅 `/api` 开头请求 | +| 路由级 | `app.get('/', m1, m2, handler)` | 单个路由使用多个中间件 | +| 数组批量 | `app.use([m1, m2])` | 同时注册多个中间件 | + +### 1.5核心行为规则 + +| 行为 | 写法 | 结果 | +| -------------- | ---------------------------------------- | ----------------------- | +| 继续执行下一个 | `next()` | 进入下一个中间件 / 路由 | +| 传递错误 | `next(err)` | 进入错误处理中间件 | +| 直接响应 | `res.send() / res.json()` | 终止请求,不再执行后续 | +| 异步错误捕获 | `try { await ... } catch(e) { next(e) }` | 正确捕获异步异常 | + +## 四、关键规则 + +1. **必须调用 `next()`**,否则请求会卡死 +2. **错误处理中间件必须有 4 个参数** +3. 中间件**顺序至关重要**,先定义先执行 +4. 异步中间件必须用 `async/await`,错误用 `next(err)` 抛出 +5. 响应发送后(`res.send()`/`res.json()`),不能再调用 `next()` + diff --git "a/\351\231\210\346\226\271\346\227\255/20260401.md" "b/\351\231\210\346\226\271\346\227\255/20260401.md" new file mode 100644 index 0000000000000000000000000000000000000000..ca3edfdc36e918e7e09eb354b8533f7bd635b31a --- /dev/null +++ "b/\351\231\210\346\226\271\346\227\255/20260401.md" @@ -0,0 +1,55 @@ +<<<<<<< HEAD +# node.js模板 + +## 一、什么是模板引擎 + +### 1.1 模板引擎 + +- 模板引擎再html中使用变量和逻辑,让服务端生成动态页面,将数据和模板结合 + +### 1.2 模板引擎 + +- **动态内容**:根据数据生成不同页面 +- **代码复用**:提取公共头部、底部 +- **前后端分离**:后端负责数据,前端负责模板 +- **SEO友好**:服务端渲染对搜索引擎友好 + +### 1.3 常见的模板引擎 + +| 引擎 | 特点 | +| ---------- | ------------------ | +| EJS | 简单易学,类似HTML | +| Pug | 缩进语法,简洁 | +| Handlebars | 逻辑少,扩展性强 | +| Nunjucks | 功能强大,支持继承 | + +## 二、EJS模板 + +======= +# node.js模板 + +## 一、什么是模板引擎 + +### 1.1 模板引擎 + +- 模板引擎再html中使用变量和逻辑,让服务端生成动态页面,将数据和模板结合 + +### 1.2 模板引擎 + +- **动态内容**:根据数据生成不同页面 +- **代码复用**:提取公共头部、底部 +- **前后端分离**:后端负责数据,前端负责模板 +- **SEO友好**:服务端渲染对搜索引擎友好 + +### 1.3 常见的模板引擎 + +| 引擎 | 特点 | +| ---------- | ------------------ | +| EJS | 简单易学,类似HTML | +| Pug | 缩进语法,简洁 | +| Handlebars | 逻辑少,扩展性强 | +| Nunjucks | 功能强大,支持继承 | + +## 二、EJS模板 + +>>>>>>> 32b2d27100eddf91b61b643f76dd2b8b7fa83ce8 diff --git "a/\351\231\210\346\226\271\346\227\255/20260402.md" "b/\351\231\210\346\226\271\346\227\255/20260402.md" new file mode 100644 index 0000000000000000000000000000000000000000..86be10375ea84066a76cbb9ea7038af3d126ce50 --- /dev/null +++ "b/\351\231\210\346\226\271\346\227\255/20260402.md" @@ -0,0 +1,92 @@ +<<<<<<< HEAD +# node.js模板 + +## 一、什么是模板引擎 + +### 1.1 模板引擎 + +- 模板引擎再html中使用变量和逻辑,让服务端生成动态页面,将数据和模板结合 + +### 1.2 模板引擎 + +- **动态内容**:根据数据生成不同页面 +- **代码复用**:提取公共头部、底部 +- **前后端分离**:后端负责数据,前端负责模板 +- **SEO友好**:服务端渲染对搜索引擎友好 + +### 1.3 常见的模板引擎 + +| 引擎 | 特点 | +| ---------- | ------------------ | +| EJS | 简单易学,类似HTML | +| Pug | 缩进语法,简洁 | +| Handlebars | 逻辑少,扩展性强 | +| Nunjucks | 功能强大,支持继承 | + +## 二、EJS模板 + +### 2.1 ejs模板 + +- 作为node.js最常用的模板引擎 + +### 2.2 核心作用 + +- 将使用控制器查完的数据渲染成html返回浏览器 +- 负责”数据便页面“的中间件 + +## 三、语法 + +### 3.1 四种核心标签 + +- 输出变量内容:`