海北高端网站建设多少钱,澧县网页定制,深圳外贸网站开发,宁波网络推广有哪些Vue3
创建Vue3项目
vue-cli
//查看vue/cli版本#xff0c;确保在4.5.0以上
vue --version
//安装或升级vue/cli
npm install -g vue/cli
//创建项目
vue create new_project
//启动
cd new_project
npm run serve 也可以通过vue ui进入图形化界面进行创建 vite
新一代前端…Vue3
创建Vue3项目
vue-cli
//查看vue/cli版本确保在4.5.0以上
vue --version
//安装或升级vue/cli
npm install -g vue/cli
//创建项目
vue create new_project
//启动
cd new_project
npm run serve 也可以通过vue ui进入图形化界面进行创建 vite
新一代前端构建工具
//创建工程
npm init vite-app project-name
//进入工程目录
cd project-name
//安装依赖
npm install
//运行
npm run dev
项目结构
main.js vue3开发工具插件与vue2不共用需重新下载
常用 Composition API
setup
理解Vue3.0中一个新的配置项值为一个函数
setup是所有 Compositon API(组合API) 表演的舞台
组件中所用到的数据方法等均要配置在setup中
setup函数的两种返回值 若返回一个对象则对象的属性方法在模板中均可直接使用 若返回一个渲染函数则可以自定义渲染内容(了解) 注意 1、不要与Vue2配置混用(data,method等)可以访问setup反之不行重名setup优先 2、setup不能是一个async函数因为async函数返回值不再是return对象而是promise
ref函数
想要setup中数据是响应式的就需要在定义是使用ref函数并在使用时xxx.value来使用或修改 处理对象类型 总结
作用定义一个响应式的数据
语法const xxxref(initValue) 创建一个包含响应式数据的引用对象
用法js操作数据xxx.value模板读取数据{{xxx}}
备注接收的数据可以是基本类型也可以是对象类型
reactive函数 reactive与ref的区别
ref用来定义基本数据类型ref定义对象或数组底层借助reactive
reactive用来定义对象或数组类型
ref定义的数据使用时需要xxx.valueref定义的数据不用
Vue3.0响应式原理
通过Proxy(代理)拦截对象中任意属性的变化包括属性值的读写属性的添加删除
通过Reflect(反射)对被代理对象的属性进行操作 setup的两个注意点
父组件传值绑定事件 子组件接收使用数据触发事件传参 props值为对象接收组件外传递过来并且组件内部声明接收了的属性供setup使用
context上下文对象 attrs值为对象组件外部传递过来但并没有在props中声明的属性 (如果没有props:[msg])那么就可以在context.attrs中找到msg slots收到的插槽内容相当于this.$slots emit分发自定义事件的函数相当于this.$emit
computed计算属性 watch函数
监视ref函数定义的响应式数据 监视reactive定义的响应式数据 坑 监视reactive定义的响应式数据时oldValue无法正确获取强制开启了深度监视 监视reactive定义的响应式数据中某个属性时deep配置有效
监视ref函数定义的对象类型响应式数据 watchEffect Vue3生命周期 自定义hook函数
hook本质是一个函数把setup函数中使用的Composition API进行了封装。
类似与Vue2中的mixin
自定义hook的优势复用代码让setup中的逻辑更清楚易懂
原始写法 使用hook抽取公共数据
新建hooks文件夹 使用hook函数 toRef 作用创建一个ref对象其value值指向另一个对象中的某个属性
语法const nametoRef(person,name)
应用要将响应式对象中的某个属性单独提供给外部使用时
toRefs与toRef功能一致但可以批量创建多个ref对象语法toRefs(person)
其他Composition API
略
shallowReactive只处理对象最外层的响应式(当一个对象数据变化的只有外层属性时使用)
shallowRef只处理基本数据类型的响应式(当一个对象数据后续不会修改其内的属性而是生成新对象整体替换时)
readonly让一个响应式数据变为只读的(深只读)
shallowReadonly让一个响应式数据变为只读的(浅只读) 不希望数据被修改时使用
toRaw将一个由reactive生成的响应式对象转为普通对象
markRaw标记一个对象使其永远不会再成为响应式对象(有些值不应该被设置为响应式的如第三方类库等当渲染具有不可变数据的大列表时跳过响应式转换可以提高性能) customRef
创建一个自定义的ref并对其依赖项跟踪和更新触发进行显式控制
防抖案例 provideinject 实现祖孙组件间通信(实际上所有后代组件都可以使用inject接收到) 响应式数据的判断
isRef检查一个值是否为一个ref对象
isReactive检查一个对象是否是由reactive创建的响应式代理
isReadonly检查一个对象是否是由readonly创建的只读代理
isProxy检查一个对象是否是由reactive或者readonly方法创建的代理
composition API的优势
传统OptionsAPI中新增或者修改一个需求我需要分别再datamethodcomputed中修改
Compostion API可以更加优雅的组织我们的代码函数让相关功能的代码有序组织在一起
Vue3新组件
Fragment
在Vue2中组件必须有一个根标签
在Vue3中组件可以没有根标签内部会将多个标签包含在一个Fragment虚拟元素中
减少标签层级减小内存占用
Teleport
Teleport是一种能够将我们的组件html结构移动到指定位置的技术 传到body后就可以方便的进行定位以及一些遮罩效果的编写 Suspense
等待异步组件时渲染一些额外的内容让应用有更好用户体验 其他
全局API的转移
将vue.xxx转移到app(应用实例)上 data选项应始终被声明为一个函数
过渡类名的更改 移除keyCode作为v-on的修饰符同时也不在支持config.keyCodes
移除v-on.native修饰符 移除过滤器建议使用方法调用或计算属性去替换