diff --git "a/02\346\235\250\344\275\263\346\226\207/20230327-1\347\217\255\346\234\215\345\212\241\345\231\250\351\203\250\347\275\262nodejs\345\272\224\347\224\250.md" "b/02\346\235\250\344\275\263\346\226\207/20230327-1\347\217\255\346\234\215\345\212\241\345\231\250\351\203\250\347\275\262nodejs\345\272\224\347\224\250.md"
deleted file mode 100644
index 2edc0ca933108196935ad7f760548991854cb9fa..0000000000000000000000000000000000000000
--- "a/02\346\235\250\344\275\263\346\226\207/20230327-1\347\217\255\346\234\215\345\212\241\345\231\250\351\203\250\347\275\262nodejs\345\272\224\347\224\250.md"
+++ /dev/null
@@ -1,218 +0,0 @@
-# 服务器部署nodejs应用
-
-## 一.必要条件
-
-+ 1. 数据库:mysql
-
-+ 2. node环境:nvm
-
-+ 3. 代管工具:pm2
-
-## 二.命令安装操作
-
-+ 登录服务器
-
-### 一.更新环境
-+ 检查有没有要更新的
-```js
- apt update
-```
-+ 更新
-```js
- apt upgrade -y
-```
-
-### 二.安装数据库mysql
-
-+ 百度
-
-+ exit退出数据库
-
-### 三.安装nvm
-
-+ nvm是一个node的版本管理工具,可以简单操作node版本的切换、安装、查看。。。等等,与npm不同的是,npm是依赖包的管理工具。
-
-+ 安装git:
-```js
- apt install git
-```
-
-+ 改变颜色
- ```js
- vim .bashrc
- ```
-
-+ 1. 安装nvm的gitee镜像
- ```js
- git clone https://gitee.com/mirrors/nvm .nvm(重命名为 .nvm)
- ```
- + 查看目录
- ```js
- l
- ```
-
- + 进入nvm
- ```js
- cd .nvm
-
- l
- ```
-
-
- + 给nvm.sh加上x权限
- ```js
- chmod 777 nvm.sh
-
- l
- ```
-
-
- + 输入nvm看看有没有下载成功
- ```js
- nvm
- ```
-
-+ 2. cd退出当前文件,下载node长期支持版本
- ```js
- nvm install --lts
- ```
-
-
- + 查看node的版本
- ```js
- node -v
- ```
-
-
-+ 3. 安装node的最新版本
- ```js
- nvm install node
- ```
-
-
-+ 4. 查看都安装了那些版本
- ```js
- nvm list
- ```
-
-
-+ 5. 切换版本
- ```js
- nvm use --lts
- ```
-
-
- + 查看是否有npm
- ```js
- npm -v
- ```
-
-+ 6. 全局安装yarn
- ```js
- npm i -g yarn
- ```
-
- + 更新npm(也没有不用)
- ```js
- npm i -g npm
- ```
-
-### 三.安装代管工具:pm2
-
-+ 1. 安装pm2
-```js
- npm i -g pm2
-```
-
-+ 2. 查看是否安装成功
- ```js
- pm2
- ```
-
- + 管理器(可以不搞)
- ```js
- pm2 monitor
- ```
-
-
-## 三.部署项目
-
-+ 1. 进入目录,将项目上传
- ```js
- cd /var/www
- ```
- + 克隆仓库
- ```js
- git clone 地址 front_back_end(重命名)
- ```
-
-+ 2. 进入文件
- ```js
- cd front_back_end
- ```
-+ 3. 进入后端文件
- ```js
- cd back_end
- ```
- + 安装
- ```js
- yarn
- ```
-
-
- + 如果仓库有修改,则推到上文件夹拉取,再yarn安装
- ```js
- cd ..
-
- git pull
-
- yarn
- ```
-
-
-+ 4. 部署前端
- + 进入目录
- ```js
- cd /etc/nginx/conf.d
- ```
- + 查看底下文件
- ```js
- l
- ```
-
- + 设置首页的文件
- ```js
- vim 域名.conf
-
- //检查语法错误
- nginx -t
-
- nginx -s reload
- ```
-+ 5. 回到后端路径,启动后端
- ```js
- pm2 start app.js
- ```
-
- + 查看运行状况
- ```js
- pm2 status
- ```
-
- + 使用反向代理,进入修改新增页面的窗口
- ```js
- vim 域名.conf
- ```
-
-
- + 将前端的地址全部改成代理的网站地址
-
-+ pm2的结束
- ```js
- pm2 stop all
- ```
-
-## 四.项目部署的完成
-
-网站: [jw图书管理系统](http://yjw.jw0525.xyz)
-
\ No newline at end of file
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230328-1\347\217\255Vue\345\205\245\351\227\250.md" "b/02\346\235\250\344\275\263\346\226\207/20230328-1\347\217\255Vue\345\205\245\351\227\250.md"
deleted file mode 100644
index 6b8af2b08938d873936b6a03c54e5c7b1020dd1f..0000000000000000000000000000000000000000
--- "a/02\346\235\250\344\275\263\346\226\207/20230328-1\347\217\255Vue\345\205\245\351\227\250.md"
+++ /dev/null
@@ -1,69 +0,0 @@
-# Vue入门
-
-## 一.什么是Vue
-
-+ Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。
-
-+ Vue 是一个框架,也是一个生态。其功能覆盖了大部分前端开发常见的需求。
-
-+ Web 世界是十分多样化的,不同的开发者在 Web 上构建的东西可能在形式和规模上会有很大的不同。考虑到这一点,Vue 的设计非常注重灵活性和“可以被逐步集成”这个特点。
-
-### Vue的不同使用方式:
-
-+ 无需构建步骤,渐进式增强静态的 HTML
-
-+ 在任何页面中作为 Web Components 嵌入
-
-+ 单页应用 (SPA)
-
-+ 全栈 / 服务端渲染 (SSR)
-
-+ Jamstack / 静态站点生成 (SSG)
-
-+ 开发桌面端、移动端、WebGL,甚至是命令行终端中的界面
-
-
-## 二.下载Vue
-
-### 第一种:使用 npm
-```js
- npm init vue
-```
-+ 回车完是想设的文件夹名(可以直接回车),后面全部直接回车就好了(全是NO)
-
-### 第二种 :使用 yarn
-```js
- yarn create vite --template vue
-
- 或者
-
- yarn create vue
-
-//回车完是想设的文件夹名(可以直接回车),后面全部直接回车就好了(全是NO)
-
- 或者
-
- yarn create vite
-//要选择
-```
-
-
-
-## 三.使用Vue
-
-### 更新 npm和yarn
-```js
- npm i -g npm//更新npm
-
- npm i -g yarn //更新yarn
-```
-
-### 拉取依赖包
-```js
- yarn//不能使用npm拉取
-```
-
-### 运行Vue
-```js
- yarn dev //不能使用npm运行
-```
\ No newline at end of file
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230328-vue\347\254\254\344\270\200\350\257\276.md" "b/02\346\235\250\344\275\263\346\226\207/20230328-vue\347\254\254\344\270\200\350\257\276.md"
new file mode 100644
index 0000000000000000000000000000000000000000..fbda84752572f13fff8ee90f097b12bdc56773a3
--- /dev/null
+++ "b/02\346\235\250\344\275\263\346\226\207/20230328-vue\347\254\254\344\270\200\350\257\276.md"
@@ -0,0 +1,119 @@
+# 什么是vue
+
+ Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。
+
+# vue的核心功能
+
+ Vue有两个核心功能:
+
+ 声明式渲染:Vue 基于标准 HTML 拓展了一套模板语法,使得我们可以声明式地描述最终输出的 HTML 和 JavaScript 状态之间的关系。
+
+ 响应性:Vue 会自动跟踪 JavaScript 状态并在其发生变化时响应式地更新 DOM。
+
+# 如何创建vue项目
+
+ 大致上分为两种方法,npm和yarn创建
+
+在目标文件夹中打开终端输入以下命令:
+
+ npm init vue 或 yarn create vite --template vue
+
+弹出的配置项中输入项目名(可以不输,默认为vue-project),接下来的配置项根据需求添加,默认为No不添加
+
+
+
+配置完以后,依次输入以下命令,运行vue
+
+ cd 项目文件夹路径 //(进入文件夹)
+ npm install(可缩写为 npm i) 或 yarn //(安装依赖)
+ npm run dev 或 yarn dev //运行项目
+
+以上命令可以互通使用,在yarn创建的项目中使用npm没有任何问题,在npm中同理,但两种方法创建的vue项目略有不同
+
+# API 风格
+ Vue 的组件可以按两种不同的风格书写:选项式 API 和组合API。
+
+## 选项式 API (Options API)
+
+
+ 使用选项式 API,我们可以用包含多个选项的对象来描述组件的逻辑,例如 data、methods 和 mounted。选项所定义的属性都会暴露在函数内部的 this 上,它会指向当前的组件实例。
+
+
+## 组合式 API (Composition API)
+
+
+ 通过组合式 API,我们可以使用导入的 API 函数来描述组件逻辑。在单文件组件中,组合式 API 通常会与 < script setup > 搭配使用。这个 setup attribute 是一个标识,告诉 Vue 需要在编译时进行一些处理,让我们可以更简洁地使用组合式 API。比如,< script setup > 中的导入和顶层变量/函数都能够在模板中直接使用。
+
+# 通过CDN使用Vue
+
+```html
+
+
+
+
+
{{ name }}
+
+
+```
+
+# 通过ES模块使用Vue
+
+```html
+
+ {{ name }}
+
+
+```
+添加导入映射表可以定位导入的Vue
+
+```html
+
+ {{ name }}
+
+
+```
+
+
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230330-1\347\217\255Vue\345\237\272\347\241\200.md" "b/02\346\235\250\344\275\263\346\226\207/20230330-1\347\217\255Vue\345\237\272\347\241\200.md"
deleted file mode 100644
index 0998cc53c2e7d51b2e12eea5224c7309a2ab3169..0000000000000000000000000000000000000000
--- "a/02\346\235\250\344\275\263\346\226\207/20230330-1\347\217\255Vue\345\237\272\347\241\200.md"
+++ /dev/null
@@ -1,34 +0,0 @@
-# Vue 基础
-
-完整网站: https://cn.vuejs.org/guide/essentials/template-syntax.html
-
-## 一.文本插值
-
-+ 最基本的数据绑定形式是文本插值,它使用的是“Mustache”语法 (即**双大括号**)
-
-```html
-: {{ msg }}
-
-```
-
-## 二.原始HTML
-
-+ 双大括号会将数据解释为纯文本,而不是 HTML。若想插入 HTML,你需要使用 **v-html 指令**:
-```html
-yjw: {{ rawHtml }}
-yjw:
-
-```
-
-## 三.Attribute(属性) 绑定
-
-+ v-bind 指令: Vue 将元素的 id attribute 与组件的 dynamicId 属性保持一致。如果绑定的值是 null 或者 undefined,那么该 attribute 将会从渲染的元素上移除。
-```html
-
-```
-
-+ 简写为冒号:
-```html
-
-
-```
\ No newline at end of file
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230330-vue\345\237\272\347\241\200.md" "b/02\346\235\250\344\275\263\346\226\207/20230330-vue\345\237\272\347\241\200.md"
new file mode 100644
index 0000000000000000000000000000000000000000..734b410189d064f894edddef18a5c625e0b18bf3
--- /dev/null
+++ "b/02\346\235\250\344\275\263\346\226\207/20230330-vue\345\237\272\347\241\200.md"
@@ -0,0 +1,114 @@
+# 组件、mian.js、index.html之间的关系
+在Vue中,组件是通过mian.js挂载到默认的index.html页面的节点上
+
+在组件中编写自己想要的内容
+
+默认内容是挂载到Vue自带的App.vue上,可以修改挂载的Vue
+## 在mian.js中
+```js
+import { createApp } from 'vue'//引入创建APP的方法
+import App from './App.vue'//引入组件
+
+createApp(App).mount('#app')//创建一个根据组件的APP,并挂载到id为app的节点上
+
+```
+## 在 index.html中
+
+```html
+
+
+
+
+
+```
+# 组件的构成
+组件主要由三种元素构成,script、template和style
+## script
+script中写的是后端代码,诸如方法、数据、属性等等
+
+在上一个笔记中说到了Vue的API有两种,主要就是在script中编写的
+
+使用选项式需要在script中使用export default{},在这之中编写代码
+
+使用组合式需要在script后面跟上setup,
+
+vue中几乎有的用法都有选项式和组合式两种写法
+### 选项式
+```html
+
+```
+### 组合式
+
+```html
+
+
+
+ {{ msg }}
+
+```
+最终页面上显示:
+
+
+
+
+
+
+# Attribute(属性值) 绑定
+
+双大括号不能在 HTML attributes 中使用。想要响应式地绑定一个 attribute,应该使用 v-bind 指令:
+
+```html
+
+```
+由于v-bind非常常用,为了简便,也可以简写成':'
+
+```html
+
+```
+
+此处我给id绑定的值为'yjw'
+
+
+
+
+
+
+
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230331-1\347\217\255Vue\346\250\241\345\235\227\350\257\255\346\263\225.md" "b/02\346\235\250\344\275\263\346\226\207/20230331-1\347\217\255Vue\346\250\241\345\235\227\350\257\255\346\263\225.md"
deleted file mode 100644
index 2b0e6abf2558e84fdc39230f79af8497e60bd83f..0000000000000000000000000000000000000000
--- "a/02\346\235\250\344\275\263\346\226\207/20230331-1\347\217\255Vue\346\250\241\345\235\227\350\257\255\346\263\225.md"
+++ /dev/null
@@ -1,123 +0,0 @@
-# Vue 模块语法
-
-## 一.v-on: 给元素绑定监听 DOM 事件监听器。
-
-+ 缩写:@
-
-+ 参数:event (使用对象语法则为可选项)
-
-+ 修饰符:
-
- + .stop - 调用 event.stopPropagation()。
- + .prevent - 调用 event.preventDefault()。
- + .capture - 在捕获模式添加事件监听器。
- + .self - 只有事件从元素本身发出才触发处理函数。
- + .{keyAlias} - 只在某些按键下触发处理函数。
- + .once - 最多触发一次处理函数。
- + .left - 只在鼠标左键事件触发处理函数。
- + .right - 只在鼠标右键事件触发处理函数。
- + .middle - 只在鼠标中键事件触发处理函数。
- + .passive - 通过 { passive: true } 附加一个 DOM 事件。
-```html
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-
-## 二.指令 Directives
-
-+ 指令是带有 v- 前缀的特殊 attribute。Vue 提供了许多内置指令,包括上面我们所介绍的 v-bind 和 v-html。
-
-
-### 内置指令
-+ 完整网站: https://cn.vuejs.org/api/built-in-directives.html
-
-+ 1. v-text:更新元素的文本内容。
-```html
-
-
-{{msg}}
-
-```
-
-+ 2. v-html: 更新元素的 innerHTML。
-```html
-
-
-```
-
-+ 3. v-show: 基于表达式值的真假性,来改变元素的可见性。
-
-+ 4. v-if: 基于表达式值的真假性,来条件性地渲染元素或者模板片段。
-
-+ 5. v-else: 表示 v-if 或 v-if / v-else-if 链式调用的“else 块”
-```html
-
- Now you see me
-
-
- Now you don't
-
-
-```
-
-
-+ 6. v-else-if: 表示 v-if 的“else if 块”。可以进行链式调用。
-```html
-
- A
-
-
- B
-
-
- C
-
-
- Not A/B/C
-
-
-```
-
-+ 7. v-for: 基于原始数据多次渲染元素或模板块。
-```html
-
- {{ item.text }}
-
-
-```
\ No newline at end of file
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230331-Vue\346\250\241\345\235\227\350\257\255\346\263\225.md" "b/02\346\235\250\344\275\263\346\226\207/20230331-Vue\346\250\241\345\235\227\350\257\255\346\263\225.md"
new file mode 100644
index 0000000000000000000000000000000000000000..52a6ca3d29dbf4f7aef5c5ae41285ecc4ebe42cc
--- /dev/null
+++ "b/02\346\235\250\344\275\263\346\226\207/20230331-Vue\346\250\241\345\235\227\350\257\255\346\263\225.md"
@@ -0,0 +1,245 @@
+# 布尔型 Attribute
+
+布尔型 attribute 依据 true / false 值来决定 attribute 是否应该存在于该元素上。disabled 就是最常见的例子之一。
+
+```html
+
+
+
+
+```
+
+当 is 为真值或一个空字符串 (即 < button disabled="">) 时,disabled生效,按钮不可用,而当其为其他假值时 ,disabled被忽略,按钮可用
+
+
+
+# 动态绑定多个值
+
+将要绑定的Attribute,写在一个对象里,然后使用v-bind直接绑定这个对象,即可动态绑定多个值
+
+## 定义对象的写法
+
+### 选项式:
+```html
+
+```
+### 组合式:
+
+```html
+
+```
+### 效果图:
+
+
+# 使用 JavaScript 表达式
+
+Vue 在所有的数据绑定中都支持完整的 JavaScript 表达式(包括有返回值的函数方法调用):
+
+```vue
+
+
+
+
+ {{ num+1 }}
+ {{ is?'麦当劳':'肯德基' }}
+ {{ name.toUpperCase().split('').reverse().join('.') }}
+ {{ yes() }}
+
+
+
+
+
+```
+效果图:
+
+
+
+
+
+这些表达式都会被作为 JavaScript ,以当前组件实例为作用域解析执行。
+
+在 Vue 模板内,JavaScript 表达式可以被使用在如下场景上:
+
+ 在文本插值中 (双大括号)
+
+ 在任何 Vue 指令 (以 v- 开头的特殊 attribute) attribute 的值中
+
+## 仅支持表达式
+
+每个绑定仅支持单一表达式,也就是一段能够被求值的 JavaScript 代码。一个简单的判断方法是是否可以合法地写在 return 后面。
+
+# 指令 Directives(部分)
+
+指令是带有 v- 前缀的特殊 attribute。Vue 提供了许多内置指令
+
+## v-text
+更新元素的文本内容。
+```vue
+
+
+
+
+
+ {{ wwj }}
+
+
+```
+
+## v-html
+
+在vue中可以使用v-html来给元素绑定一个原始的HTML
+
+v-html 的内容直接作为普通 HTML 插入—— Vue 模板语法是不会被解析的。如果你发现自己正打算用 v-html 来编写模板,不如重新想想怎么使用组件来代替。
+
+```html
+
+
+
+
+
+
+```
+效果图:
+
+
+
+
+
+## v-show
+
+基于表达式值的真假性,来改变元素的可见性。
+
+```vue
+
+
+
+```
+当is为false时,前端代码显示为
+
+
+
+## v-if、v-else、v-else-if
+
+v-if 和v-show有点像
+
+基于表达式值的真假性,来条件性地渲染元素或者模板片段。
+```vue
+
+
+```
+当is为false时,前端代码显示为
+
+
+
+当is为true时,与v-show并无太大区别
+
+v-else和v-else-if 上一个兄弟元素必须有 v-if 或 v-else-if。
+
+v-else 无需传入表达式,根据上一个兄弟元素的表达式真假来渲染元素,与其相反
+
+v-else-if 需要表达式,在上一个兄弟元素的表达式为假时执行,再基于自己表达式的真假,渲染元素
+
+## 参数 Arguments
+
+某些指令会需要一个“参数”,在指令名后通过一个冒号隔开做标识。例如用 v-bind 指令来响应式地更新一个 HTML attribute
+
+例:
+
+```html
+
+
+
+```
+
+### 动态参数
+指令参数上也可以使用一个 JavaScript 表达式,需要包含在一对方括号内
+
+这里的 abc 会作为一个 JavaScript 表达式被动态执行,计算得到的值会被用作最终的参数。
+```vue
+
+
+
+
+
+
+```
+## 动态参数语法的限制
+
+动态参数表达式因为某些字符的缘故有一些语法限制,比如空格和引号
+
+当使用 DOM 内嵌模板 (直接写在 HTML 文件里的模板) 时,我们需要避免在名称中使用大写字母,因为浏览器会强制将其转换为小写
+
+这会导致如果你参数名称中有大写字母,那这一段代码就不会执行,单文件组件内的模板不受此限制
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230403-1\347\217\255Vue\345\223\215\345\272\224\345\274\217\345\237\272\347\241\200.md" "b/02\346\235\250\344\275\263\346\226\207/20230403-1\347\217\255Vue\345\223\215\345\272\224\345\274\217\345\237\272\347\241\200.md"
deleted file mode 100644
index f133e8ea13d600866c49a0765d22f042ff436aa3..0000000000000000000000000000000000000000
--- "a/02\346\235\250\344\275\263\346\226\207/20230403-1\347\217\255Vue\345\223\215\345\272\224\345\274\217\345\237\272\347\241\200.md"
+++ /dev/null
@@ -1,126 +0,0 @@
-# Vue 响应式基础
-
-完整相关信息网:https://cn.vuejs.org/guide/essentials/reactivity-fundamentals.html
-
-## 一.data函数
-
-+ data 选项: 声明组件的响应式状态
-
-+ data的值应返回一个**对象的函数**
-
-+ 将函数返回的对象用响应式系统进行包装。此对象的所有顶层属性都会被代理到组件实例 (即方法和生命周期钩子中的 **this**) 上。
-
-+ export default: 向外暴露的成员,可以使用任意变量来接收, **data函数放在 export default{}中**
-
-```js
-export default {
- data() {
- return {
- count: 0,
- text: '',
- awesome: true
- }
- },
-}
-```
-
-#
-## 二. methods对象
-
-+ methods是一个**包含所有方法**的**对象**
-
-+ Vue **自动**为 methods 中的方法**绑定了永远指向组件实例的 this**
-
-+ 在**methods中不使用箭头函数**,因为箭头函数没有自己的 this 上下文。
-```js
-export default {
- data() {
- return {
- count: 0,
- text: '',
- awesome: true
- }
- },
-}
- //methods 选项:是一个包含所有方法的对象
- methods: {
- //设置按钮的功能,增加
- incr() {
- this.count++
- },
- }
-```
-
-#
-## 三.条件渲染:v-if,v-else
-
-+ v-if :根据条件地渲染元素,依据true和falas来判断是否将 DOM 移除
-
-+ v-else: 若v-if移除了DOM节点,v-else就会显示它管理的DOM节点
-```html
- yes
-
- no
-```
-
-#
-## 四.代码
-```html
-
-
-
-
-
- {{ text }}
-
-
-
-
-
- {{ count }}
-
-
-
-
-
-```
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230403-Vue\345\223\215\345\272\224\345\274\217\345\237\272\347\241\200.md" "b/02\346\235\250\344\275\263\346\226\207/20230403-Vue\345\223\215\345\272\224\345\274\217\345\237\272\347\241\200.md"
new file mode 100644
index 0000000000000000000000000000000000000000..8fab85790a0a621b72705bea38e0020bb851d2ba
--- /dev/null
+++ "b/02\346\235\250\344\275\263\346\226\207/20230403-Vue\345\223\215\345\272\224\345\274\217\345\237\272\347\241\200.md"
@@ -0,0 +1,109 @@
+# 修饰符 Modifiers
+
+修饰符是以点开头的特殊后缀,表明指令需要以一些特殊的方式被绑定。例如 .prevent 修饰符会告知 v-on 指令对触发的事件调用 event.preventDefault()
+
+# 声明响应式状态
+
+响应式状态初步理解就是随着我们的数据的变动而变动,个人感觉上有点像热重载
+
+直接向组件实例添加的新属性,无法触发响应式更新
+
+## 选项式
+
+选用选项式 API 时,会用 data 选项来声明组件的响应式状态。
+
+此选项的值应为返回一个对象的函数。
+
+Vue 将在创建新组件实例的时候调用此函数,
+
+并将函数返回的对象用响应式系统进行包装。
+
+此对象的所有顶层属性都会被代理到组件实例
+
+(即方法和生命周期钩子中的 this) 上。
+
+代码:
+```vue
+
+
+
+
+{{ yes() }}
+
+
+```
+效果图:
+
+
+## 组合式
+
+我们可以使用 reactive() 函数创建一个响应式对象或数组:
+
+```vue
+
+
+
+
+
+
+
+```
+### ref()
+
+ref() 方法来允许我们创建可以使用任何值类型的响应式 ref
+
+```js
+import { ref } from 'vue'
+
+const count = ref(0)
+```
+
+ref() 将传入参数的值包装为一个带 .value 属性的 ref 对象
+
+当 ref 在模板中作为顶层属性被访问时,它们会被自动“解包”,所以不需要使用 .value。
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+
+
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230404-1\347\217\255Vue\350\256\241\347\256\227\345\261\236\346\200\247\357\274\214\347\261\273\345\222\214\346\240\267\345\274\217\347\232\204\347\273\221\345\256\232.md" "b/02\346\235\250\344\275\263\346\226\207/20230404-1\347\217\255Vue\350\256\241\347\256\227\345\261\236\346\200\247\357\274\214\347\261\273\345\222\214\346\240\267\345\274\217\347\232\204\347\273\221\345\256\232.md"
deleted file mode 100644
index b68b2fa085e331c0f16325db7f23e3b522bf5898..0000000000000000000000000000000000000000
--- "a/02\346\235\250\344\275\263\346\226\207/20230404-1\347\217\255Vue\350\256\241\347\256\227\345\261\236\346\200\247\357\274\214\347\261\273\345\222\214\346\240\267\345\274\217\347\232\204\347\273\221\345\256\232.md"
+++ /dev/null
@@ -1,161 +0,0 @@
-# Vue 计算属性,类和样式的绑定
-
-## 一.修改端口号
-
-### 方法一:
-+ 在Vue项目中,找到package.json 文件
-
-+ 在文件的 dev 中添加对应代码: --port 4000,
-```js
- "dev": "vite --port 4000",
-```
-
-### 方法二:
-
-+ 在Vue项目中,找到vite.config.js文件
-
-+ 在文件的export default 中添加对应代码
-
-+ 只修改端口号
-```js
- server:{
- port:'3333',
- // host:'127.0.0.1' 修改localhost
- }
-```
-
-
-+ 全部修改
-```js
- server:{
- port:'3333',
- host:'127.0.0.1' //修改localhost
- }
-```
-
-
-+ 文件的完整代码
-```js
-import { fileURLToPath, URL } from 'node:url'
-
-import { defineConfig } from 'vite'
-import vue from '@vitejs/plugin-vue'
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [vue()],
- resolve: {
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url))
- }
- },
- //修改端口
- server:{
- port:'3333',
- // host:'127.0.0.1' 修改localhost
- }
-})
-```
-
-#
-## 二. computed : 计算属性
-
-+ 计算属性是来描述依赖响应式状态的复杂逻辑
-
-### computed(计算属性) 与 methods(对象) 的区别:
-
-+ 缓存区别
-
- + computed 计算属性的值会基于其响应式依赖被缓存,只要响应式依赖不更新修改,计算属性就不需要重新计算和执行 getter 函数,会立即返回先前的结果
-
- + methods 方法调用总是会在重渲染发生时再次执行函数。
-
-### 代码
-```html
-
-
-
- {{ins}}
- {{inso}}
-
-```
-
-
-#
-## 三.类(Class)和样式(style)的绑定
-
-### 绑定对象
-+ 类的绑定:在对象中写多个字段来操作多个 class,class是否存在,取决于值是true还是false
-
-+ 样式的绑定:绑定的样式对象值,对应的是 HTML 元素的 style 属性
-
-### 绑定数组
-+ 类的绑定:绑定一个数组来渲染多个 CSS class
-
-+ 样式的绑定:绑定一个包含多个样式对象的数组。这些对象会被合并后渲染到同一元素上
-
-### 代码:
-```html
-
-
-
-
-
-职业
- yjw
-
-```
-
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230404-Vue\350\256\241\347\256\227\345\261\236\346\200\247\357\274\214\347\261\273\345\222\214\346\240\267\345\274\217\347\232\204\347\273\221\345\256\232.md" "b/02\346\235\250\344\275\263\346\226\207/20230404-Vue\350\256\241\347\256\227\345\261\236\346\200\247\357\274\214\347\261\273\345\222\214\346\240\267\345\274\217\347\232\204\347\273\221\345\256\232.md"
new file mode 100644
index 0000000000000000000000000000000000000000..337b124a98f78c43bb032def03f8f98d3e46a873
--- /dev/null
+++ "b/02\346\235\250\344\275\263\346\226\207/20230404-Vue\350\256\241\347\256\227\345\261\236\346\200\247\357\274\214\347\261\273\345\222\214\346\240\267\345\274\217\347\232\204\347\273\221\345\256\232.md"
@@ -0,0 +1,258 @@
+# 计算属性(computed)
+
+计算属性用来描述依赖响应式状态的复杂逻辑
+## 选项式
+
+```vue
+
+
+
+{{cjj }}
+
+
+```
+## 组合式
+```vue
+
+
+
+
+{{cjj }}
+
+
+```
+
+## 计算属性与方法的区别
+
+两者的效果大致相同,
+
+但计算属性值会基于其响应式依赖被缓存
+
+方法调用总是会在重渲染发生时再次执行函数
+
+计算属性可以让程序运行的更加快
+
+## 可写计算属性
+
+计算属性默认是只读的。
+
+当你尝试修改一个计算属性时,你会收到一个运行时警告。
+
+只在某些特殊场景中你可能才需要用到“可写”的属性,
+
+你可以通过同时提供 getter 和 setter 来创建
+
+### 选项式
+```vue
+
+
+```
+
+### 组合式
+```vue
+
+
+
+
+
+{{cjj }}
+
+
+```
+
+# 类和样式绑定
+## 绑定 HTML class
+### 绑定对象
+
+我们可以给 :class (v-bind:class 的缩写) 传递一个对象来动态切换 class
+
+```vue
+// abc虽然不加引号,但他是string类型
+
+```
+
+也可以绑定多个,根据属性值的真假,渲染在元素上
+
+```vue
+
+
+
+
+```
+no是假值,所以没有出现在元素上
+
+
+
+也可以直接绑定一个对象,能实现相同的效果
+
+```vue
+
+
+
+
+```
+
+也可以绑定计算属性
+
+```vue
+
+
+
+
+
+```
+还能绑定数组,并可以在数组中使用三元表达式
+
+```vue
+
+
+
+
+
+```
+
+
+
+## 绑定内联样式
+
+与绑定class差不多,需要加点语法
+
+```vue
+
+
+yjw
+cyj
+wwj
+
+```
+
+
+
+
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230406-1\347\217\255\346\235\241\344\273\266\345\222\214\345\210\227\350\241\250\346\270\262\346\237\223.md" "b/02\346\235\250\344\275\263\346\226\207/20230406-1\347\217\255\346\235\241\344\273\266\345\222\214\345\210\227\350\241\250\346\270\262\346\237\223.md"
deleted file mode 100644
index b1a95d016bd4d22a3beb113938d992970912cb6b..0000000000000000000000000000000000000000
--- "a/02\346\235\250\344\275\263\346\226\207/20230406-1\347\217\255\346\235\241\344\273\266\345\222\214\345\210\227\350\241\250\346\270\262\346\237\223.md"
+++ /dev/null
@@ -1,120 +0,0 @@
-# 条件和列表渲染
-
-## 一.条件渲染
-
-详细地址: https://cn.vuejs.org/guide/essentials/conditional.html
-
-### v-if、v-else
-
-+ v-if :用于条件性地渲染一块内容。这块内容只会在指令的表达式返回真值时才被渲染。
-
-+ v-else :当 v-if的值为假值时,这块内容会被渲染。
-
-+ v-else 必须跟在一个 v-if 或者 v-else-if 元素后面,否则它将不会被识别。
-
-### v-else-if
-+ 可以连续多次重复使用
-
-+ 使用 v-else-if 的元素必须紧跟在一个 v-if 或一个 v-else-if 元素后面。
-
-
-### v-show
-
-+ 用法与 v-if 一样
-
-+ v-show 会在 DOM 渲染中保留该元素;
-
-+ v-show 仅切换了该元素上名为 display 的 CSS 属性。
-
-+ v-show 不支持在 元素上使用,也不能和 v-else 搭配使用。
-```html
- yjw
-```
-
-### v-if 与 v-show 的区别
-
-+ v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销
-
-+ 如果需要频繁切换,则使用 v-show 较好;
-
-+ 如果在运行时绑定条件很少改变,则 v-if 会更合适。
-
-
-#
-## 二.v-for 列表渲染
-
-详细网站: https://cn.vuejs.org/guide/essentials/list.html
-
-### v-for
-
-+ v-for 指令基于一个数组来渲染一个列表
-
-+ v-for 指令的值需要使用 item in items 形式的特殊语法,其中 items 是数组名,而 item 是迭代项的别名
-
-+ 在 v-for 块中可以完整地访问父作用域内的属性和变量。
-
-+ 可以使用 of 作为分隔符来替代 in,这更接近 JavaScript 的迭代器语法
-
-### v-for 与对象的关系
-
-+ 可以使用 v-for 来遍历一个对象的所有属性。
-
-+ 可以通过提供第二个参数表示属性名 (例如 key)
-
-+ 第三个参数表示位置索引
-```html
-
- {{ index }}. {{ key }}: {{ value }}
-
-
-```
-
-#
-## 三.v-if 和 v-for
-
-+ v-if 比 v-for 优先级高,当 v-if 和 v-for 同时存在于一个元素上的时候,v-if 会首先被执行。v-if 的条件将无法访问到 v-for 作用域内定义的变量别名
-
-+ 外新包装一层 可以解决这个问题
-
-```html
-
-
-
-
-
-
-
- - id被2整除的值:{{ item.name }}
- - id被3整除的值:{{ item.name }}
-
-
-
-
-
-```
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230406-\346\235\241\344\273\266\345\222\214\345\210\227\350\241\250\346\270\262\346\237\223.md" "b/02\346\235\250\344\275\263\346\226\207/20230406-\346\235\241\344\273\266\345\222\214\345\210\227\350\241\250\346\270\262\346\237\223.md"
new file mode 100644
index 0000000000000000000000000000000000000000..302f2096b5245c75b3774c4fd07e8c1ea9f6f536
--- /dev/null
+++ "b/02\346\235\250\344\275\263\346\226\207/20230406-\346\235\241\344\273\266\345\222\214\345\210\227\350\241\250\346\270\262\346\237\223.md"
@@ -0,0 +1,194 @@
+# 条件渲染
+
+## v-show
+
+基于表达式值的真假性,来改变元素的可见性。
+
+```vue
+
+
+
+```
+当is为false时,前端代码显示为
+
+
+
+## v-if、v-else、v-else-if
+
+v-if 和v-show有点像
+
+基于表达式值的真假性,来条件性地渲染元素或者模板片段。
+```vue
+
+
+```
+当is为false时,前端代码显示为
+
+
+
+当is为true时,与v-show并无太大区别
+
+v-else和v-else-if 上一个兄弟元素必须有 v-if 或 v-else-if。
+
+v-else 无需传入表达式,根据上一个兄弟元素的表达式真假来渲染元素,与其相反
+
+v-else-if 需要表达式,在上一个兄弟元素的表达式为假时执行,再基于自己表达式的真假,渲染元素
+
+# 列表渲染
+
+## v-for
+
+代码:
+```vue
+
+
+
+ -
+ {{ item.name }}-{{ index }}
+
+
+
+```
+
+效果图:
+
+
+
+## v-for 与对象
+
+```vue
+
+
+
+
+ -
+ {{ value }} - {{ key }} - {{ index }}
+
+
+
+```
+## 在 v-for 里使用范围值
+
+v-for 可以直接接受一个整数值。在这种用例中,会将该模板基于 1...n 的取值范围重复多次。
+
+代码:
+```html
+
+```
+效果图:
+
+
+
+## v-for 和 v-if
+v-for 和 v-if不能出现在同一个节点上,
+
+那样v-if 比 v-for 的优先级更高,
+
+会导致v-if 的条件将无法访问到 v-for 作用域内定义的变量别名
+
+所以使用时一般在外新包装一层 < template > 再在其上使用 v-for
+
+代码:
+```html
+
+```
+效果图:
+
+
+
+## 通过 key 管理状态
+
+Vue 默认按照“就地更新”的策略来更新通过 v-for 渲染的元素列表。当数据项的顺序改变时,Vue 不会随之移动 DOM 元素的顺序,而是就地更新每个元素,确保它们在原本指定的索引位置上渲染。
+
+默认模式是高效的,但只适用于列表渲染输出的结果不依赖子组件状态或者临时 DOM 状态 (例如表单输入值) 的情况。
+
+为了给 Vue 一个提示,以便它可以跟踪每个节点的标识,从而重用和重新排序现有的元素,你需要为每个元素对应的块提供一个唯一的 key attribute
+
+```html
+
+ -
+ {{ item.name }}-{{ index }}
+
+
+```
+
+## 数组变化侦测
+
+### 变更方法
+
+Vue 能够侦听响应式数组的变更方法,并在它们被调用时触发相关的更新。这些变更方法包括:
+```js
+ push() //可向数组的末尾添加一个或多个元素,并返回新的长度。
+ pop() //把方法数组最后一位元素删除并返回数组的最后一个元素。
+ shift() // 把数组的第一个元素从其中删除,并返回第一个元素的值
+ unshift() //可向数组的开头添加一个或更多元素,并返回新的长度。
+ splice()
+ //splice(index,howmany,item1, …, itemX) 方法向/从数组中添加/删除项目,然后返回被删除的项目
+
+// 第一个参数:表示从哪个索引位置(index)添加/删除元素
+
+// 第二个参数:要删除的项目数量。如果设置为 0,则不会删除项目。
+
+// 第三个参数:可选。向数组添加的新项目。
+
+ sort() //对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
+ reverse() //颠倒数组中元素的顺序。
+```
+使用变更方法时应该储存一个原数组的副本
+
+### 替换一个数组
+
+变更方法,顾名思义,就是会对调用它们的原数组进行变更。相对地,也有一些不可变 (immutable) 方法,例如 filter(),concat() 和 slice(),这些都不会更改原数组,而总是返回一个新数组。当遇到的是非变更方法时,我们需要将旧的数组替换为新的
\ No newline at end of file
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230407-1\347\217\255\344\272\213\344\273\266\345\244\204\347\220\206.md" "b/02\346\235\250\344\275\263\346\226\207/20230407-\344\272\213\344\273\266\345\244\204\347\220\206.md"
similarity index 33%
rename from "02\346\235\250\344\275\263\346\226\207/20230407-1\347\217\255\344\272\213\344\273\266\345\244\204\347\220\206.md"
rename to "02\346\235\250\344\275\263\346\226\207/20230407-\344\272\213\344\273\266\345\244\204\347\220\206.md"
index 0f91aaa36c7cf3beb12898a79ee3c8c0b6bba7fc..25588f20e9ad0f130e5e71bdae0e39786ea108c3 100644
--- "a/02\346\235\250\344\275\263\346\226\207/20230407-1\347\217\255\344\272\213\344\273\266\345\244\204\347\220\206.md"
+++ "b/02\346\235\250\344\275\263\346\226\207/20230407-\344\272\213\344\273\266\345\244\204\347\220\206.md"
@@ -1,36 +1,63 @@
-# 事件处理
+# v-on
-详细网址 : https://cn.vuejs.org/guide/essentials/event-handling.html
+v-on 指令 (简写为 @) 来监听 DOM 事件,
-## 一.v-on 监听事件
+并在事件触发时执行对应的 JavaScript。用法:
-+ 使用 v-on 指令 (简写为 @) 来监听 DOM 事件,并在事件触发时执行对应的 JavaScript。
+v-on:click="handler" 或 @click="handler"。
事件处理器 (handler) 的值可以是:
-1. 内联事件处理器:事件被触发时执行的内联 JavaScript 语句 (与 onclick 类似)。
+ 内联事件处理器:事件被触发时执行的内联 JavaScript 语句 (与 onclick 类似)。
-2. 方法事件处理器: v-on 也可以接受一个方法名或对某个方法的调用。
+ 方法事件处理器:一个指向组件上定义的方法的属性名或是路径。
+## 内联事件处理器
+```html
+
+```
+## 方法事件处理器
+```html
+
-#
-## 二.事件修饰符
-+ v-on 提供了事件修饰符,使方法能更专注于数据逻辑而不用去处理 DOM 事件的细节
+
+
+
+```
-+ 修饰符是用 . 表示的指令后缀
+## 方法与内联事件判断
+
+模板编译器会通过检查 v-on 的值是否是合法的 JavaScript 标识符或属性访问路径来断定是何种形式的事件处理器。
-修饰符包括:
+举例来说,foo、foo.bar 和 foo['bar'] 会被视为方法事件处理器
-1. .stop :单击事件停止向外传递
+而 foo() 和 count++ 会被视为内联事件处理器。
-2. .prevent :提交事件将不再重新加载页面
+## 事件修饰符
-3. .self :是元素本身时才会触发事件处理器
+在处理事件时调用 event.preventDefault() 或 event.stopPropagation() 是很常见的。尽管我们可以直接在方法内调用,但如果方法能更专注于数据逻辑而不用去处理 DOM 事件的细节会更好。
-4. .capture :添加事件监听器时,使用捕获模式
+为解决这一问题,Vue 为 v-on 提供了事件修饰符。修饰符是用 . 表示的指令后缀,包含以下这些:
-5. .once :点击事件最多被触发一次
+ .stop
+ .prevent
+ .self
+ .capture
+ .once
+ .passive
-6. .passive :用于触摸事件的监听器,可以用来改善移动端设备的滚屏性能
```html
@@ -48,7 +75,13 @@
...
+```
+
+使用修饰符时需要注意调用顺序,因为相关代码是以相同的顺序生成的。因此使用 @click.prevent.self 会阻止元素及其子元素的所有点击事件的默认行为,而 @click.self.prevent 则只会阻止对元素本身的点击事件的默认行为。
+.capture、.once 和 .passive 修饰符与原生 addEventListener 事件相对应:
+
+```html
...
@@ -60,52 +93,49 @@
...
```
+.passive 修饰符一般用于触摸事件的监听器,可以用来改善移动端设备的滚屏性能。
-#
-## 三.按键
-### 按键修饰符
-+ Vue 允许在 v-on 或 @ 监听按键事件时添加按键修饰符。
-```html
-
-
+请勿同时使用 .passive 和 .prevent,因为 .passive 已经向浏览器表明了你不想阻止事件的默认行为。如果你这么做了,则 .prevent 会被忽略,并且浏览器会抛出警告。
+按键修饰符
+
+在监听键盘事件时,我们经常需要检查特定的按键。Vue 允许在 v-on 或 @ 监听按键事件时添加按键修饰符。
+```html
+
+
+```
+你可以直接使用 KeyboardEvent.key 暴露的按键名称作为修饰符,但需要转为 kebab-case 形式。
+```html
+
```
+在上面的例子中,仅会在 $event.key 为 'PageDown' 时调用事件处理。
-### 按键别名
+## 按键别名
+
Vue 为一些常用的按键提供了别名:
-1. .enter
-
-2. .tab
-
-3. .delete (捕获“Delete”和“Backspace”两个按键)
-
-4. .esc
-
-5. .space
-
-6. .up
-
-7. .down
-
-8. .left
-
-9. .right
-
-### 系统按键修饰符
-
-使用以下系统按键修饰符来触发鼠标或键盘事件监听器,只有当按键被按下时才会触发。
-
-1. .ctrl
-
-2. .alt
-
-3. .shift
-
-4. .meta
+ .enter
+ .tab
+ .delete (捕获“Delete”和“Backspace”两个按键)
+ .esc
+ .space
+ .up
+ .down
+ .left
+ .right
+
+## 系统按键修饰符
+
+
+你可以使用以下系统按键修饰符来触发鼠标或键盘事件监听器,只有当按键被按下时才会触发。
+
+ .ctrl
+ .alt
+ .shift
+ .meta
```html
@@ -115,9 +145,11 @@ Vue 为一些常用的按键提供了别名:
```
-### .exact 修饰符
+## .exact 修饰符
+
+
+.exact 修饰符允许控制触发一个事件所需的确定组合的系统按键修饰符。
-+ .exact 修饰符允许控制触发一个事件所需的确定组合的系统按键修饰符。
```html
@@ -127,88 +159,10 @@ Vue 为一些常用的按键提供了别名:
-
```
+## 鼠标按键修饰符
+
-#
-## 四.代码
-```html
-
-
-
-
-
-
-
-
- 回车后的值:{{ mess1 }}
-
-
-
-
-
-
- - id被2整除的值:{{ item.name }}
- - id被3整除的值:{{ item.name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- id为{{ item.id }},值为{{ item.name }}
-
-
-
-
-```
+ .left
+ .right
+ .middle
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230410_v-model\350\241\250\345\215\225\350\276\223\345\205\245\347\273\221\345\256\232.md" "b/02\346\235\250\344\275\263\346\226\207/20230410_v-model\350\241\250\345\215\225\350\276\223\345\205\245\347\273\221\345\256\232.md"
index ae07be245cbc29c2b47cbbb1b8d009b0843bf041..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- "a/02\346\235\250\344\275\263\346\226\207/20230410_v-model\350\241\250\345\215\225\350\276\223\345\205\245\347\273\221\345\256\232.md"
+++ "b/02\346\235\250\344\275\263\346\226\207/20230410_v-model\350\241\250\345\215\225\350\276\223\345\205\245\347\273\221\345\256\232.md"
@@ -1,65 +0,0 @@
-# 表单输入绑定
-
-## 一.v-model
-
-+ v-model 可以自动将表单输入框的内容同步给 JavaScript 中相应的变量
-
-+ v-model 还可以用于各种不同类型的输入,它会根据所使用的元素**自动**使用对应的 DOM 属性和事件组合
-
-+ v-model 会忽略任何表单元素上**初始的** value、checked 或 selected attribute。它将始终将当前绑定的 JavaScript 状态视为数据的正确来源。应该在 JavaScript 中使用data 选项来声明该初始值。
-
-### 代码:
-```html
-
-
-
-
-
-
-
- {{mess}}
-
-
-
-```
-
-#
-## 二.绑定
-
-+ 文本框:
-```html
- |
-```
-
-+ 单选框:type中为 radio
-```html
- 女
- 男
-```
-
-+ 复选框:type中为 checkbox
-```html
- 1
- 2
-```
-
-+ 下拉框:包在**select 标签**中的**option 标签**,提供一个 **disabled 虚化禁用**掉对应的option 标签选项,可用于下拉框的顶部提示
-```html
-
-
-```
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230417-\345\212\250\346\200\201\347\273\204\344\273\266\345\222\214\347\273\204\344\273\266\346\263\250\345\206\214.md" "b/02\346\235\250\344\275\263\346\226\207/20230417-\345\212\250\346\200\201\347\273\204\344\273\266\345\222\214\347\273\204\344\273\266\346\263\250\345\206\214.md"
new file mode 100644
index 0000000000000000000000000000000000000000..c86d97fe4c51274b30d499bb6c43d3d64e55d374
--- /dev/null
+++ "b/02\346\235\250\344\275\263\346\226\207/20230417-\345\212\250\346\200\201\347\273\204\344\273\266\345\222\214\347\273\204\344\273\266\346\263\250\345\206\214.md"
@@ -0,0 +1,152 @@
+# 动态组件
+
+效果类似于网页中的标签页,可以在两个组件中进行切换
+
+## 语法
+
+传给 :is 的值可以是以下几种:
+
+ 被注册的组件名
+
+ 导入的组件对象
+
+当使用 来在多个组件间作切换时,被切换掉的组件会被卸载。
+
+```vue
+
+```
+
+## 代码
+
+```vue
+
+
+
+
+
+```
+
+## 效果
+
+
+
+
+
+
+
+# 组件注册
+
+一个 Vue 组件在使用前需要先被“注册”,这样 Vue 才能在渲染模板时找到其对应的实现。
+
+组件注册有两种方式:全局注册和局部注册。
+
+## 全局注册
+
+需要在项目中的main.js中定义,引入需要注册的组件和vue中的createApp方法,使用方法创建app,再使用app中的component,传入的参数第一个是标签名,第二个是引入的组件
+
+### 代码
+main.js代码:
+```js
+
+import { createApp } from 'vue'
+import App from './App.vue'
+import jw1 from './components/jw1.vue'
+const app= createApp(App)
+
+app.component('jw1',jw1)
+
+app.mount('#app')
+```
+jw1组件代码:
+```vue
+
+
+ jw1
+
+
+```
+使用:
+```vue
+
+```
+
+### 效果图
+
+
+
+### 缺点
+
+全局注册虽然很方便,但有以下几个问题:
+
+ 全局注册,但并没有被使用的组件无法在生产打包时被自动移除 (也叫“tree-shaking”)。如果你全局注册了一个组件,即使它并没有被实际使用,它仍然会出现在打包后的 JS 文件中。
+
+ 全局注册在大型项目中使项目的依赖关系变得不那么明确。在父组件中使用子组件时,不太容易定位子组件的实现。和使用过多的全局变量一样,这可能会影响应用长期的可维护性。
+
+## 局部注册
+
+相比之下,局部注册的组件需要在使用它的父组件中显式导入,并且只能在该父组件中使用。它的优点是使组件之间的依赖关系更加明确,并且对 tree-shaking 更加友好。
+
+
+
+### 代码
+
+选项式:
+
+局部注册需要使用 components 选项
+
+```vue
+
+
+
+
+
+```
+
+组合式:
+
+ 在使用 < script setup> 的单文件组件中,导入的组件可以直接在模板中使用,无需注册
+
+```vue
+
+
+
+
+
+```
+
+
+### 效果图
+
+
+
+
+
+
+
+
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230418-1\347\217\255\345\242\250\345\210\200\345\210\266\344\275\234\345\216\237\345\236\213.md" "b/02\346\235\250\344\275\263\346\226\207/20230418-1\347\217\255\345\242\250\345\210\200\345\210\266\344\275\234\345\216\237\345\236\213.md"
new file mode 100644
index 0000000000000000000000000000000000000000..5c89ab9744ebee084417f9ed9b530c1d206f18c3
--- /dev/null
+++ "b/02\346\235\250\344\275\263\346\226\207/20230418-1\347\217\255\345\242\250\345\210\200\345\210\266\344\275\234\345\216\237\345\236\213.md"
@@ -0,0 +1,16 @@
+# 墨刀创建原型
+
+详细介绍网站: https://modao.cc/hc/articles/5
+
++ 在新建中选择项目,有空白项目和模板中创建项目两个选项,笔者主要以空白项目为例,输入项目名称、选择设备类型及型号,点击创建按钮。
+
++ 创建项目之后,进入工作区,右边有各种组件,图标,母板。可直接将组件和图标拖到页面,然后根据需要进行修改或直接使用。
+
++ 页面状态从属于某页面,原型内每个页面下都可以新建若干状态。但同一页面的不同状态中,组件必须一致,且只能在全局状态中添加或删除组件。本例选择的就是在一个页面中创建多个状态。
+
+
+
+
+
+
+
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230420-1\347\217\255\346\267\261\345\205\245Props.md" "b/02\346\235\250\344\275\263\346\226\207/20230420-1\347\217\255\346\267\261\345\205\245Props.md"
new file mode 100644
index 0000000000000000000000000000000000000000..075d4b0dec31bef9ea57db69c89ffadc19474acb
--- /dev/null
+++ "b/02\346\235\250\344\275\263\346\226\207/20230420-1\347\217\255\346\267\261\345\205\245Props.md"
@@ -0,0 +1,156 @@
+# 深入Props
+
+详细的地址: https://cn.vuejs.org/guide/components/props.html
+
+#
+## 一.定义 Props 选项
+
++ 选项式的定义:
+
+ + 没有使用 <**script setup**> 的组件方式为**选项式**,运用的是**选项式的API**
+
+ + 在选项式中,prop 可以使用 **props 选项**来声明
+```vue
+
+```
+
++ 组合式的定义:
+
+ + 使用 <**script setup**> 的单文件组件为**组合式**,运用的是**组合式的API**
+
+ + 在组合式中,props 可以使用 **defineProps() 宏**来声明
+```vue
+
+```
+
++ 传递给 defineProps() 的参数和提供给 props 选项的值是相同的,两种声明方式背后其实使用的都是 **prop 选项**。
+
+#
+## 二.细节
+
+### 命名格式
+
++ Prop 的命名格式使用 **camelCase 形式(小驼峰形式)**
+
++ 组件名 的命名格式使用 **PascalCase 形式**,因为这提高了模板的可读性,能帮助我们区分 Vue 组件和原生 HTML 元素。
+
+### prop 的绑定
+
++ 直接使用 prop 的名字来进行静态形式的绑定
+```html
+
+```
+
++ 使用 **v-bind** 或**缩写 :** 来进行动态形式的绑定:当使用一个 JavaScript 表达式而不是一个字符串需要用到
+```html
+
+```
+
+### 传递不同类型
+
++ Number 类型:使用 **v-bind** 动态的绑定
+
++ Boolean 类型(布尔):
+
+ + 不传值时,会隐性为 true ;
+ ```html
+
+ ```
+
+ + 传值时,需要使用 **v-bind** 进行动态的绑定
+
++ Array 类型(数组):使用 **v-bind** 动态的绑定
+
++ Object 类型(属性):使用 **v-bind** 动态的绑定
+```vue
+
+
+
+
+
+
+```
+
+### Prop 校验
+
+详细的校验信息 : https://cn.vuejs.org/guide/components/props.html#prop-validation
+
+```vue
+
+
+
+
+
+
+
+
+
{{propsA}}
+
+
+```
+
+## 三.其他细节
+
++ 所有 prop 默认都是可选的,除非声明了 required: true
+
++ Boolean 类型的未传递 prop 将被转换为 false。这可以通过为它设置 default 来更改
+
++ 如果声明了 default 值,那么在 prop 的值被解析为 undefined 时,无论 prop 是未被传递还是显式指明的 undefined,都会改为 default 值。
\ No newline at end of file
diff --git "a/02\346\235\250\344\275\263\346\226\207/20230421-1\347\217\255\346\267\261\345\205\245\344\272\213\344\273\266.md" "b/02\346\235\250\344\275\263\346\226\207/20230421-1\347\217\255\346\267\261\345\205\245\344\272\213\344\273\266.md"
new file mode 100644
index 0000000000000000000000000000000000000000..f880068e256b0ac4414d963194bf0d106e5ad240
--- /dev/null
+++ "b/02\346\235\250\344\275\263\346\226\207/20230421-1\347\217\255\346\267\261\345\205\245\344\272\213\344\273\266.md"
@@ -0,0 +1,169 @@
+# 深入事件
+
+详细信息的网站: https://cn.vuejs.org/guide/components/events.html
+
+#
+## 一.定义触发的事件
+
++ 选项式的定义
+
+ + 通过 **emits 选项**来定义它要触发的事件
+```vue
+
+
+```
+
++ 组合式的定义
+
+ + 通过 **defineEmits() 宏**来声明它要触发的事件
+
+```vue
+
+
+```
+
+#
+## 二.事件的监听和校验
+
++ 通过 **v-on (缩写为 @)** 来监听事件
+
++ 通过返回值为 `true` 还是为 `false` 来判断验证是否通过
+
+### 组合式
+```vue
+
+
+
+
+
+
+
+```
+
+### 选项式
+```vue
+
+```
+
+### 父组件接收数据: App.vue
+```vue
+
+
+
+
+
+```
+
+
+
+
\ No newline at end of file
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/attribute.png" "b/02\346\235\250\344\275\263\346\226\207/img/attribute.png"
new file mode 100644
index 0000000000000000000000000000000000000000..30b176c2e2545682474c349fc4e3947aea5e0778
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/attribute.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/class.png" "b/02\346\235\250\344\275\263\346\226\207/img/class.png"
new file mode 100644
index 0000000000000000000000000000000000000000..356602b85be6e6a1da65c28b6a154deccbb677f1
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/class.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/class2.png" "b/02\346\235\250\344\275\263\346\226\207/img/class2.png"
new file mode 100644
index 0000000000000000000000000000000000000000..9d0fd8b8b03312b3c12b39b85611b04f8080db4a
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/class2.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/disabled.png" "b/02\346\235\250\344\275\263\346\226\207/img/disabled.png"
new file mode 100644
index 0000000000000000000000000000000000000000..0386090c159583bbdba0e6a7c883ca5f69415c20
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/disabled.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/npmvue.png" "b/02\346\235\250\344\275\263\346\226\207/img/npmvue.png"
new file mode 100644
index 0000000000000000000000000000000000000000..6eef7ebb04d68bb2abb7f251fd81ca60e0cf4868
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/npmvue.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/npmvue2.png" "b/02\346\235\250\344\275\263\346\226\207/img/npmvue2.png"
new file mode 100644
index 0000000000000000000000000000000000000000..ef836cd7c7e3ea75218423a2ca44cb31d47ebf6a
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/npmvue2.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/shuxing.png" "b/02\346\235\250\344\275\263\346\226\207/img/shuxing.png"
new file mode 100644
index 0000000000000000000000000000000000000000..c0dbde0c93408358c843d80d3aa61179531bd3b2
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/shuxing.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/style.png" "b/02\346\235\250\344\275\263\346\226\207/img/style.png"
new file mode 100644
index 0000000000000000000000000000000000000000..1a574b995e363c7fd08463e6350c819d8f1b0e19
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/style.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/v-for.png" "b/02\346\235\250\344\275\263\346\226\207/img/v-for.png"
new file mode 100644
index 0000000000000000000000000000000000000000..78ddc0d5d9b939144e3b9b20d11eb51c457a0109
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/v-for.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/v-for2.png" "b/02\346\235\250\344\275\263\346\226\207/img/v-for2.png"
new file mode 100644
index 0000000000000000000000000000000000000000..4f656f5d3a8b4bc708afc38f5a8f86a1e9fa4dce
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/v-for2.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/v-for_v-if .png" "b/02\346\235\250\344\275\263\346\226\207/img/v-for_v-if .png"
new file mode 100644
index 0000000000000000000000000000000000000000..ff7cd9157e81eb2c8c069d32bd4b4c8a4170ba21
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/v-for_v-if .png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/v-html.png" "b/02\346\235\250\344\275\263\346\226\207/img/v-html.png"
new file mode 100644
index 0000000000000000000000000000000000000000..4508f875377b123052b1ada5332514854d797ee0
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/v-html.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/v-html2.png" "b/02\346\235\250\344\275\263\346\226\207/img/v-html2.png"
new file mode 100644
index 0000000000000000000000000000000000000000..379f0c1bb65dcec7353b03fce41dfc1eea645001
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/v-html2.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/v-if.png" "b/02\346\235\250\344\275\263\346\226\207/img/v-if.png"
new file mode 100644
index 0000000000000000000000000000000000000000..13c68c32921413ddcc8fb128607cdfe090bd421f
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/v-if.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/v-show.png" "b/02\346\235\250\344\275\263\346\226\207/img/v-show.png"
new file mode 100644
index 0000000000000000000000000000000000000000..db0db68a349896226b0585327962b859096a2852
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/v-show.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/\344\270\211\345\205\203\350\241\250\350\276\276\345\274\217.png" "b/02\346\235\250\344\275\263\346\226\207/img/\344\270\211\345\205\203\350\241\250\350\276\276\345\274\217.png"
new file mode 100644
index 0000000000000000000000000000000000000000..516a96989a77915f28e1aa80e3a8a2ce0c0e82eb
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/\344\270\211\345\205\203\350\241\250\350\276\276\345\274\217.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/\345\205\250\345\261\200\346\263\250\345\206\214.png" "b/02\346\235\250\344\275\263\346\226\207/img/\345\205\250\345\261\200\346\263\250\345\206\214.png"
new file mode 100644
index 0000000000000000000000000000000000000000..2adf810499e7b0e68b55608af24f5e4f30b6c52f
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/\345\205\250\345\261\200\346\263\250\345\206\214.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/\345\212\250\346\200\201\347\273\204\344\273\266.png" "b/02\346\235\250\344\275\263\346\226\207/img/\345\212\250\346\200\201\347\273\204\344\273\266.png"
new file mode 100644
index 0000000000000000000000000000000000000000..eaa2fe17fec536dcd3c0dcbc730ca0d7b0bb8953
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/\345\212\250\346\200\201\347\273\204\344\273\266.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/\345\212\250\346\200\201\347\273\204\344\273\2662.png" "b/02\346\235\250\344\275\263\346\226\207/img/\345\212\250\346\200\201\347\273\204\344\273\2662.png"
new file mode 100644
index 0000000000000000000000000000000000000000..ca4b5f7b1f68dc1f3b98e44e4f249801ee57cb35
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/\345\212\250\346\200\201\347\273\204\344\273\2662.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/\345\212\250\346\200\201\347\273\204\344\273\2663.png" "b/02\346\235\250\344\275\263\346\226\207/img/\345\212\250\346\200\201\347\273\204\344\273\2663.png"
new file mode 100644
index 0000000000000000000000000000000000000000..9eb0feb5cfdb1126a5b8feeb97d396485e00771c
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/\345\212\250\346\200\201\347\273\204\344\273\2663.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/\345\223\215\345\272\224\345\274\217.png" "b/02\346\235\250\344\275\263\346\226\207/img/\345\223\215\345\272\224\345\274\217.png"
new file mode 100644
index 0000000000000000000000000000000000000000..0296f85b619ed256e99c6fe0570224a508608275
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/\345\223\215\345\272\224\345\274\217.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/\345\261\200\351\203\250\346\263\250\345\206\214.png" "b/02\346\235\250\344\275\263\346\226\207/img/\345\261\200\351\203\250\346\263\250\345\206\214.png"
new file mode 100644
index 0000000000000000000000000000000000000000..d222e101fab7deebbb100aaf05e0eb9cd5e43e8e
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/\345\261\200\351\203\250\346\263\250\345\206\214.png" differ
diff --git "a/02\346\235\250\344\275\263\346\226\207/img/\346\226\207\346\234\254\346\217\222\345\200\274.png" "b/02\346\235\250\344\275\263\346\226\207/img/\346\226\207\346\234\254\346\217\222\345\200\274.png"
new file mode 100644
index 0000000000000000000000000000000000000000..5f3299458522f60977cd0f1814bbf9d6c8851d19
Binary files /dev/null and "b/02\346\235\250\344\275\263\346\226\207/img/\346\226\207\346\234\254\346\217\222\345\200\274.png" differ