From 32bfed8f446a1601f571e42b727ece2ce0809825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E4=BE=9D=E6=AC=A3?= <2986589005@qq.com> Date: Fri, 23 May 2025 17:00:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E5=9B=9B=E5=91=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...06\347\246\273\351\241\271\347\233\256.md" | 36 ++++++++++ ...26\350\276\221\345\212\237\350\203\275.md" | 71 +++++++++++++++++++ ...--\347\273\204\344\273\266\345\272\223.md" | 45 ++++++++++++ 3 files changed, 152 insertions(+) create mode 100644 "\351\231\210\344\276\235\346\254\243/20250519--\345\211\215\345\220\216\347\253\257\345\210\206\347\246\273\351\241\271\347\233\256.md" create mode 100644 "\351\231\210\344\276\235\346\254\243/20250520--\345\211\215\345\220\216\347\253\257\345\210\206\347\246\273\351\241\271\347\233\256\344\271\213\346\226\260\345\242\236\347\274\226\350\276\221\345\212\237\350\203\275.md" create mode 100644 "\351\231\210\344\276\235\346\254\243/20250521--\347\273\204\344\273\266\345\272\223.md" diff --git "a/\351\231\210\344\276\235\346\254\243/20250519--\345\211\215\345\220\216\347\253\257\345\210\206\347\246\273\351\241\271\347\233\256.md" "b/\351\231\210\344\276\235\346\254\243/20250519--\345\211\215\345\220\216\347\253\257\345\210\206\347\246\273\351\241\271\347\233\256.md" new file mode 100644 index 0000000..fe79a24 --- /dev/null +++ "b/\351\231\210\344\276\235\346\254\243/20250519--\345\211\215\345\220\216\347\253\257\345\210\206\347\246\273\351\241\271\347\233\256.md" @@ -0,0 +1,36 @@ +### Vue 响应式数据管理与生命周期函数 +1. 响应式数据管理 + - 在 Vue 中,可以通过 ` reactive` 或 ` ref` 来创建响应式数据。 + - ` reactive` 用于创建一个响应式的对象,而 ` ref` 用于创建一个响应式的引用。 + - 在模板中使用 ` v-model` 指令可以实现双向数据绑定。 + +2. 生命周期函数 + - ` onMounted` 是 Vue 的生命周期函数之一,用于在组件挂载后执行初始化操作。 + - 通常在 ` onMounted` 中调用 API 获取数据并更新响应式数据。 + + +3. 路由跳转 +- 使用 ` useRouter` 从 ` vue-router` 中获取路由器实例。 +- 在 ` btnEdit` 和 ` btnAdd` 函数中,通过 ` router.push` 实现页面跳转。 + + +### 后端代码 + +#### 1. 数据库连接与模型定义 + - 使用 ` Sequelize` 连接 MySQL 数据库 + - 定义 ` Book` 模型,包含 ` bookname` 和 ` author` 字段 + - 使用 ` sync` 方法同步模型到数据库,并使用 ` bulkCreate` 插入初始数据 + +#### 2. 路由与控制器逻辑 +- 定义路由处理函数,分别处理获取书籍列表、获取单个书籍、添加书籍、删除书籍和更新书籍的请求。 +- 在每个路由处理函数中,根据请求参数执行相应的数据库操作,并返回结果。 + + +### Vue 数组变化侦测 + +#### 1. 变更方法 +- Vue 能够侦听数组的变更方法,如 ` push`、` pop`、` shift`、` unshift`、` splice`、` sort` 和 ` reverse`,并在它们被调用时触发相关的更新。 + +#### 2. 替换一个数组 +- 对于不可变方法(如 ` filter`、` concat` 和 ` slice`),需要将旧数组替换为新数组。 + diff --git "a/\351\231\210\344\276\235\346\254\243/20250520--\345\211\215\345\220\216\347\253\257\345\210\206\347\246\273\351\241\271\347\233\256\344\271\213\346\226\260\345\242\236\347\274\226\350\276\221\345\212\237\350\203\275.md" "b/\351\231\210\344\276\235\346\254\243/20250520--\345\211\215\345\220\216\347\253\257\345\210\206\347\246\273\351\241\271\347\233\256\344\271\213\346\226\260\345\242\236\347\274\226\350\276\221\345\212\237\350\203\275.md" new file mode 100644 index 0000000..c5418d9 --- /dev/null +++ "b/\351\231\210\344\276\235\346\254\243/20250520--\345\211\215\345\220\216\347\253\257\345\210\206\347\246\273\351\241\271\347\233\256\344\271\213\346\226\260\345\242\236\347\274\226\350\276\221\345\212\237\350\203\275.md" @@ -0,0 +1,71 @@ +### Vue.js 前端开发笔记:图书添加与编辑功能 +1. 响应式数据管理 + - 使用 ` reactive` 创建响应式对象,用于管理表单数据。 + - 在模板中使用 ` v-model` 实现双向数据绑定,确保用户输入能够实时更新响应式数据。 + +2. API 调用 + - 使用 Axios 进行 HTTP 请求,调用后端 API 实现图书的添加和更新。 + - 在保存成功后,通过路由跳转返回到主页面。 + +#### 前端代码要点 +```vue + + + +``` + +#### 后端代码要点 +```javascript +export const getId = async (id) => { + let data = await axios.get(`http://localhost:8000/books/${id}`); + return data.data; +}; + +export const addItem = async (obj) => { + let data = await axios.post(`http://localhost:8000/books`, obj); + return data.data; +}; + +export const putItem = async (id, obj) => { + let data = await axios.put(`http://localhost:8000/books/${id}`, obj); + return data.data; +}; +``` diff --git "a/\351\231\210\344\276\235\346\254\243/20250521--\347\273\204\344\273\266\345\272\223.md" "b/\351\231\210\344\276\235\346\254\243/20250521--\347\273\204\344\273\266\345\272\223.md" new file mode 100644 index 0000000..e9a130a --- /dev/null +++ "b/\351\231\210\344\276\235\346\254\243/20250521--\347\273\204\344\273\266\345\272\223.md" @@ -0,0 +1,45 @@ +- **基础用法示例**: + - 创建一个两列布局,第一列占 4 份,第二列占 10 份,并偏移 4 份: + ```html + + span: 4 + offset: 4, span: 10 + + ``` + - 创建一个单列布局,偏移 12 份,占 12 份: + ```html + + offset: 12, span: 12 + + ``` + +- **设置列元素间距**:通过 `gutter` 属性可以设置列元素之间的间距,默认间距为 0。例如,设置列间距为 20 像素: + ```html + + span: 8 + span: 8 + span: 8 + + ``` + +- **响应式布局**:可以使用 `lg`、`md`、`sm`、`xs` 等属性来设置不同屏幕尺寸下的布局方式,以实现响应式布局。例如,在大屏幕上显示 8 份宽的列,在小屏幕上显示 12 份宽的列: + ```html + + 响应式布局示例 + + ``` + +- **布局属性说明**: + - `span`:设置列所占的宽度百分比,范围为 0 到 24。 + - `offset`:设置列的偏移宽度,范围为 0 到 24。 + - `gutter`:设置列元素之间的间距,可以是固定值或对象(包含 `horizontal` 和 `vertical` 属性)。 + - `lg`、`md`、`sm`、`xs`:分别对应大屏幕、中等屏幕、小屏幕和超小屏幕的布局设置。 + +- **其他布局方式**:除了使用 `span` 和 `offset` 属性外,还可以使用 `flex` 布局方式来实现更复杂的布局需求。例如,创建一个两列布局,第一列占 8 份宽,第二列占 4 份宽,并且第二列居中对齐: + ```html + + span: 8 + span: 4 + + ``` + -- Gitee