From 082a3f267b94c54c3e828bb95552d9c55f3b1d73 Mon Sep 17 00:00:00 2001 From: Lin Joy <11099947+Lin-Joy@user.noreply.gitee.com> Date: Sun, 26 Apr 2026 23:35:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=9A=E7=AC=AC=2010=20?= =?UTF-8?q?=E5=91=A8=E8=AF=BE=E5=A0=82=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0420 - \345\210\235\350\257\206 Vue.md" | 214 +++++++++++++ ...60\346\215\256\347\273\221\345\256\232.md" | 225 ++++++++++++++ ...16\344\276\246\345\220\254\345\231\250.md" | 187 ++++++++++++ ...0424 - Vue.js \346\214\207\344\273\244.md" | 282 ++++++++++++++++++ 4 files changed, 908 insertions(+) create mode 100644 "\346\236\227\344\275\263\351\237\263/0420 - \345\210\235\350\257\206 Vue.md" create mode 100644 "\346\236\227\344\275\263\351\237\263/0422 - \346\225\260\346\215\256\347\273\221\345\256\232.md" create mode 100644 "\346\236\227\344\275\263\351\237\263/0423 - \350\256\241\347\256\227\345\261\236\346\200\247\344\270\216\344\276\246\345\220\254\345\231\250.md" create mode 100644 "\346\236\227\344\275\263\351\237\263/0424 - Vue.js \346\214\207\344\273\244.md" diff --git "a/\346\236\227\344\275\263\351\237\263/0420 - \345\210\235\350\257\206 Vue.md" "b/\346\236\227\344\275\263\351\237\263/0420 - \345\210\235\350\257\206 Vue.md" new file mode 100644 index 0000000..f5a7677 --- /dev/null +++ "b/\346\236\227\344\275\263\351\237\263/0420 - \345\210\235\350\257\206 Vue.md" @@ -0,0 +1,214 @@ +# 2026.04.20 - 初识 Vue + +> Vue 是用于构建用户界面的 JavaScript 框架,常用于开发数据驱动的前端页面。 + +## 1. Vue 基本概念 + +| 内容 | 说明 | +| --- | --- | +| Vue | 前端 JavaScript 框架 | +| 数据驱动 | 数据变化后,页面自动更新 | +| 组件化 | 将页面拆分成多个独立模块 | +| 单文件组件 | 以 `.vue` 结尾的组件文件 | + +Vue 页面开发中,更关注数据和页面之间的关系。 + +```html +
{{ message }}
+ + + +``` + +| 语法 | 作用 | +| --- | --- | +| `{{ title }}` | 显示 `title` 的值 | +| `{{ message }}` | 显示 `message` 的值 | + +插值表达式中写变量名,不需要加引号。 + +## 2. 响应式数据 `ref` + +在 Vue 3 的组合式 API 中,可以使用 `ref` 创建响应式数据。 + +```html + +``` + +| 使用位置 | 写法 | +| --- | --- | +| 模板中显示 | `{{ count }}` | +| JavaScript 中读取 | `count.value` | +| JavaScript 中修改 | `count.value = 1` | + +示例: + +```html + +数量:{{ count }}
+ + + + +``` + +## 3. 属性绑定 `v-bind` + +标签属性需要使用 `v-bind` 绑定数据。 + +```html + +姓名:{{ username }}
+ + + +``` + +| 方向 | 说明 | +| --- | --- | +| 页面输入改变 | 数据同步改变 | +| 数据改变 | 页面输入框同步改变 | + +常见可用元素: + +- `input` +- `textarea` +- `select` + +## 5. `v-bind` 和 `v-model` 对比 + +| 指令 | 绑定方向 | 常用场景 | +| --- | --- | --- | +| `v-bind` | 数据到页面 | 绑定属性 | +| `v-model` | 数据和页面双向同步 | 表单输入 | + +示例: + +```html + + + 搜索 + +``` + +## 6. class 绑定 + +对象写法: + +```html + +状态文本
+ + + + + +``` + +| 数据值 | 页面结果 | +| --- | --- | +| `isActive` 为 `true` | 添加 `active` 类名 | +| `isActive` 为 `false` | 不添加 `active` 类名 | + +数组写法: + +```html +文本
+``` + +## 7. style 绑定 + +对象写法: + +```html + ++ 样式绑定 +
+ + + +``` + +CSS 属性名可以使用小驼峰写法: + +| CSS 写法 | Vue 对象写法 | +| --- | --- | +| `font-size` | `fontSize` | +| `background-color` | `backgroundColor` | + +## 8. 综合示例 + +```html + ++ 姓名:{{ name }} +
+ + +单价:{{ price }}
+数量:{{ count }}
+总价:{{ total }}
+ + + +``` + +| 数据 | 说明 | +| --- | --- | +| `price` | 单价 | +| `count` | 数量 | +| `total` | 根据单价和数量计算出的总价 | + +## 2. `computed` 特点 + +| 特点 | 说明 | +| --- | --- | +| 自动更新 | 依赖的数据变化后,计算结果会更新 | +| 有缓存 | 依赖的数据不变时,不会重复计算 | +| 像数据一样使用 | 模板中使用时不加小括号 | + +模板中使用: + +```html +{{ total }}
+``` + +## 3. `computed` 和普通函数 + +普通函数写法: + +```html + +{{ getTotal() }}
+ + + +``` + +对比: + +| 对比项 | `computed` | 普通函数 | +| --- | --- | --- | +| 模板写法 | `{{ total }}` | `{{ getTotal() }}` | +| 是否缓存 | 有缓存 | 每次调用都会执行 | +| 适合场景 | 展示计算结果 | 事件处理、普通逻辑 | + +## 4. 完整姓名示例 + +```html + + + + +完整姓名:{{ fullName }}
+ + + +``` + +`fullName` 依赖 `firstName` 和 `lastName`。 + +## 5. 侦听器 `watch` + +`watch` 用于监听数据变化。 + +基本语法: + +```js +watch(监听的数据, (新值, 旧值) => { + // 数据变化后执行 +}) +``` + +示例: + +```html + + +搜索内容:{{ keyword }}
+ + + +``` + +| 参数 | 说明 | +| --- | --- | +| `newValue` | 变化后的新值 | +| `oldValue` | 变化前的旧值 | + +## 6. `computed` 和 `watch` 对比 + +| 对比项 | `computed` | `watch` | +| --- | --- | --- | +| 主要作用 | 根据数据计算结果 | 监听数据变化 | +| 是否需要返回值 | 通常需要返回结果 | 不一定需要返回结果 | +| 使用场景 | 总价、全名、筛选结果 | 打印日志、发送请求、数据保存 | +| 模板中使用 | 可以直接显示 | 通常不直接显示 | + +## 7. 商品数量示例 + +```html + +单价:{{ price }}
+ + + +总价:{{ total }}
+ + + +``` + +| 功能 | 使用 | +| --- | --- | +| 计算总价 | `computed` | +| 监听数量变化 | `watch` | + +## 8. 注意点 + +| 内容 | 注意 | +| --- | --- | +| `computed` | 模板中使用时不加 `()` | +| `watch` | 监听的数据名需要正确 | +| `ref` | JavaScript 中读取和修改需要 `.value` | +| 计算结果 | 优先使用 `computed` | +| 数据变化后的操作 | 使用 `watch` | diff --git "a/\346\236\227\344\275\263\351\237\263/0424 - Vue.js \346\214\207\344\273\244.md" "b/\346\236\227\344\275\263\351\237\263/0424 - Vue.js \346\214\207\344\273\244.md" new file mode 100644 index 0000000..bcf3d7b --- /dev/null +++ "b/\346\236\227\344\275\263\351\237\263/0424 - Vue.js \346\214\207\344\273\244.md" @@ -0,0 +1,282 @@ +# 2026.04.24 - Vue.js 指令 + +> Vue 指令是写在标签上的特殊属性,用于控制内容显示、属性绑定、事件绑定、条件渲染和列表渲染。 + +## 1. 常用指令 + +| 指令 | 作用 | 简写 | +| --- | --- | --- | +| `v-text` | 设置文本内容 | 无 | +| `v-html` | 设置 HTML 内容 | 无 | +| `v-bind` | 绑定标签属性 | `:` | +| `v-model` | 表单双向绑定 | 无 | +| `v-on` | 绑定事件 | `@` | +| `v-if` | 条件渲染 | 无 | +| `v-show` | 显示或隐藏元素 | 无 | +| `v-for` | 循环渲染列表 | 无 | + +## 2. `v-text` + +用于设置元素文本内容。 + +```html + + + + + +``` + +等价写法: + +```html +{{ message }}
+``` + +## 3. `v-html` + +用于将字符串作为 HTML 解析。 + +```html + + + + + +``` + +> `v-html` 会解析 HTML 内容,不适合直接渲染用户输入的数据。 + +## 4. `v-bind` + +用于绑定标签属性。 + +完整写法: + +```html +链接 +``` + +简写: + +```html +链接 +``` + +常见写法: + +```html +姓名:{{ username }}
+ + + +``` + +常用表单元素: + +| 元素 | 说明 | +| --- | --- | +| `input` | 单行输入 | +| `textarea` | 多行输入 | +| `select` | 下拉选择 | + +## 6. `v-on` + +用于绑定事件。 + +完整写法: + +```html + +``` + +简写: + +```html + +``` + +示例: + +```html + +{{ count }}
+ + + + +``` + +常见事件: + +| 写法 | 说明 | +| --- | --- | +| `@click` | 点击事件 | +| `@input` | 输入事件 | +| `@change` | 内容改变事件 | +| `@submit` | 表单提交事件 | + +## 7. `v-if` / `v-else-if` / `v-else` + +用于条件渲染。 + +```html + +优秀
+及格
+不及格
+ + + +``` + +| 指令 | 说明 | +| --- | --- | +| `v-if` | 条件成立时渲染 | +| `v-else-if` | 前面条件不成立时继续判断 | +| `v-else` | 前面条件都不成立时渲染 | + +## 8. `v-show` + +用于控制元素显示或隐藏。 + +```html + +显示内容
+ + + +``` + +`v-if` 和 `v-show` 对比: + +| 对比项 | `v-if` | `v-show` | +| --- | --- | --- | +| 元素是否存在 | 条件不成立时不渲染 | 元素始终存在 | +| 控制方式 | 创建或移除元素 | CSS 的 `display` | +| 适合场景 | 不频繁切换 | 频繁切换 | + +## 9. `v-for` + +用于循环渲染数组。 + +```html + +暂无任务
+ +