2022/9/13总结

Vue 

 路由的封装抽离

为了便于维护 ,我们通常需要将路由模块抽离出来

在vue中,如果要写路径,可以写绝对路径 使用@   @代表从src目录下去寻找,能避免出现很多错误

 声明式导航  --  导航链接

vue-router提供了一个全局组件router-link(取代a标签)  配置  to  属指定路径  本质是  a  标签,to 无需  #

优点:能高亮  默认会提供高亮样式  可以直接设置高亮样式

在页面中其实也就是 a 标签  多了类名,根据这个类名 可以自己设置

效果

router-link 自动给当前导航添加了俩个高亮类名

  • router-link-exact-active     精确匹配  to="/my"  仅仅匹配  /my
  • router-link-active    模糊匹配   to="/my"  "/my/a"  写/my 可以匹配后接的/a   /b

如果觉得太长,可以自定义这俩个类

然后就能对应上

声明式导航——跳转传参

查询参数传参

语法  to="/path?参数名=值“

对应页面组件接受传递过来的值   $route.query.参数名

动态路由传参

配置动态路由 

const router=new VueRouter({
    routes:[
        {

            path:'/search/:words',
            component:search
        }

    ]
})

配置导航链接   to="/path/参数值"

对应页面组件接受过来的值  $oute.params.参数名

如果配置成  ”/search/:words“ 来表示 ,则必须要传递参数 ,如果不传递参数,也希望匹配,可以在后面加一个  可选符号 "?"  

Vue路由——重定向

当我们想要访问当前路径,强制跳转到另外一个路径时 就可以使用该重定向

语法 {  path:匹配路径,redirect:重定向后的路径  }

如果想要更人性化一点,客户访问的地址不存在,可以在最后写 path:"*"  (匹配任意路径),并且给出一个404的界面

由于我们的地址栏路径带有一个  # 号,显得十分的不美观  

路由的路径模式有俩种

  • hash路由( 默认 )带有#号
  • history路由( 常用 )不带#号

path路径跳转

 如果路径太长,为了省事 可以指定name

如果在传递参数时,需要传递多个参数,拼接地址栏可能很麻烦,可以直接按照对象去写,vue-route给我们提供了便利

学习vue3

学习vue的时候  学姐都说 直接学习vue3 就可以 开启vue3学习旅程

vue3 的优势

  • 更容易维护——组合式API  由更好的TypeScript 支持
  • 更快的速度——重写diff算法  模板编译优化   更高效的组件初始化
  • 更小的体积——良好的TreeShaking  按需引入
  • 更优的数据响应式  Proxy

create-vue  

vue官方新的脚手架工具  底层切换到了 vite (下一代构建工具)

前提  已经安装 16.0 或者更高版本的Node,js 

创建 vue 应用  npm init vue@latest  这个指令会安装并且执行 create-vue

把上面绿色的按照顺序输入一遍

然后就是下面这样代表安装好了

 

打开网址  出现下面这个代表完成

在vue3中创建实例

直接写 createApp()   vue3将创建实例进行了封装 保证每个实例的独立封闭性

vue3支持多个根元素

setup  

执行时机 比beforeCreate 还要早

setup函数中  获取不到this 

数据 和 函数 需要在setup 中 return 才能使用 

setup的语法糖  给组合式API提供了便利

上面俩个是等价的 

reactive()

接受 对象类型数据 的参数 传入 并且返回 一个响应式的对象

ref()

接收简单类型或者对象类型的数据 传入并且返回一个响应式的对象

本质上  是在原有传入数据的基础上  外包了一层对象 包成了复杂数据类型  再借助  reative 实现了响应式 

在js代码中访问数据时 需要通过  .value

在模板 中不需要通过 .value

computed

和vue的写法是差不多的

watch函数

监听 一个或者 多个数据的变化  数据变化时执行 回调函数

俩个额外参数  immediate (立即执行) deep (深度监听)

 通常我们不需要监视整个对象而是对象的某些属性

vue3的生命周期

 上面是对应的vue2 和 vue3 的生命周期函数

vue3的组件通信

在vue3中 引用就可以使用  不用在component里面再次进行声明

父子组件

父传子之间的通信  利用  编译器宏  defineProps 

defineProps原理  就是编译阶段的一个标识  实际编译器解析时  遇到后 会进行编译转换

效果:

子传父之间的通信   

父组件 中给 子组件标签通过 @ 绑定事件 

子组件内部通过emit方法触发事件 

效果:

点击往下降 父组件和子组件都能改变

模板引用

通过 ref 标识 获取真实的dom对象或者组件实例对象

使用: 调用  ref  函数生成一个  ref  对象,通过  ref  标识绑定  ref  对象到标签

通过 ref  可以获取到组件的 数据 以及 方法  但是默认情况下 在  setup  下组件内部的属性和方法是不开放的,可以通过  defineExpose  编译宏 来指定 哪些属性和方法允许访问

需要注意的是获取模板引用的时机必须要是组件挂载完毕  ——  onMounted()

provide  和  inject

主要作用于  顶层组件向任意底层组件  传递数据和方法 实现跨层组件通信

顶层组件通过  provide  提供数据  底层组件通过  inject  函数获取数据

提供的数据是响应式数据 

倘若子孙组件想要修改 顶级组件 就在顶级组件提供方法 来给所有的子孙组件使用

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值