当前位置: 首页 > news >正文

前端开发面试题总结-vue3框架篇(二)

文章目录

  • 七、说一说vue3中的生命周期函数?
  • 八、说一说Vue3中父子组件通信?
  • 九、说一说Vue3中跨组件通信?
  • 十、说一说Vue3中如何通过ref获取组件?
  • 十一、Vue3中wacth和watchEffect的区别
  • 十二、Vuex和Pinia的区别
  • 十三、Vue3中基本都是结合TS开发,说一说TS和JS的区别?

七、说一说vue3中的生命周期函数?

vue3中的生命周期函数来自vue,所以需要通过vue按需引入,生命周期函数可以多次调用

// 1. 创建阶段
● vue2: beforeCreate/created
● vue3: setup// 2. 挂载阶段
● vue2: beforeMount/mounted
● vue3: onBeforeMount/onMounted// 3. 更新阶段
● vue2: beforeUpdate/updated
● vue3: onBeforeUpdate/onUpdated// 4. 销毁阶段
● vue2: beforeDestory/destoryde
● vue3:  onBeforeUnMounte/onUnMounted

八、说一说Vue3中父子组件通信?

父传子
● 父组件通过属性绑定传递

父组件

<script setup lang='ts'>   
import { ref } from 'vue'   
import Child from './components/Child.vue' const money = ref(10000000) </script> <template>   <h1>     这是App组件: {{ money }}   </h1>   <div>------------------------</div>   <!-- 1. 父组件通过属性绑定去传 -->   <Child :money="money" /> </template> <style></style>

子组件通过defineProps接收, 子组件接收的数据在模板中可以直接使用在js中, 通过defineProps的返回值使用

子组件

<script setup lang='ts'> const props = defineProps({    money: {      type: Number,       required: true     }   }) </script> <template>  <h2>这是子组件: {{ money }}</h2> </template> <style></style>

子传父
●子组件获取emit对象

子组件

const emit = defineEmits(['buy-car'])

通过emit触发自定义事件,并传递数据

const buyCar = () => {   
// console.log('买车', 1000000)   
// 2. 通过emit对象触发一个自定义事件, 并且   
emit('buy-car', 1000000) 
}

父组件定义自定义事件和事件函数

<script setup lang='ts'>   import { ref } from 'vue'   
import Child from './components/Child.vue'   const money = ref(10000000) // 4. 定义事件函数,内部修改money数据   const setMoney = (val) => {     money.value = money.value - val  } </script> <template>   <!-- 3. 定义自定义事件 -->   <Child @buy-car="setMoney" /> </template> <style></style>

九、说一说Vue3中跨组件通信?

●父组件通过provide传递函数

const completeEva = (score: number) => {   // 函数的功能 } provide('completeEva', completeEva)

●后代组件通过inject注入函数

const completeEva = inject<(score: number) => void>('completeEva')

●调用函数将数据通过参数的方式传给父级组件

 completeEva && completeEva(score.value)

十、说一说Vue3中如何通过ref获取组件?

● 创建空的ref
● 给组件绑定ref属性值是空的ref的名字
● 组件和空ref的value绑定在一起
●利用ref.value获取子组件

<script setup lang='ts'>  import { ref } from 'vue'   import ComA from './components/ComA.vue'  // 1. 定义空ref   const comARef = ref(null) const getComA = () => {    // 3. 利用ref的value获取组件     console.log(comARef.value?.updateAge)  } </script> <template>   <!--   空的ref的value绑定为组件 -->   <ComA ref="comARef" />   <button @click="getComA">获取coma组件</button> </template> <style></style>

十一、Vue3中wacth和watchEffect的区别

Vue3 中 watch 与 watchEffect 的核心区别:
在这里插入图片描述
选择建议:
● 需要旧值 → watch;
● 依赖复杂且无需旧值 → watchEffect;
● 需延迟执行或条件监听 → watch。

十二、Vuex和Pinia的区别

Vuex 与 Pinia 的核心区别:
在这里插入图片描述

关键差异点:

  1. 开发体验:
    ● Pinia 省去 mutations,简化同步操作,减少模板代码。
    ● Pinia 支持直接通过 this 访问整个 store 的 state 和方法。
  2. 模块管理:
    ● Vuex 的模块依赖全局命名空间,易命名冲突。
    ● Pinia 的每个 store 独立,通过文件组织,天然支持代码分割。
  3. TypeScript:
    ● Pinia 自动推断 state/actions 类型,无需手动声明接口。
  4. 兼容性:
    ● Vuex 兼容 Vue2 和 Vue3(需 Vuex 4)。
    ● Pinia 支持 Vue3, 也支持vue2,但是组合式 API 只能在vue3中使用。
    选择建议:
    ● 新项目:优先 Pinia(官方推荐,更现代、轻量、易维护)。
    ● 老项目:继续使用 Vuex,逐步迁移至 Pinia。
    ● 复杂场景:Pinia 的插件系统(如持久化缓存)更灵活。

十三、Vue3中基本都是结合TS开发,说一说TS和JS的区别?

TS = JS + 类型系统 + 高级工具链
核心区别:
在这里插入图片描述

如何选择:
在这里插入图片描述

http://www.lryc.cn/news/573439.html

相关文章:

  • 钉钉智能会议室集成指纹密码锁,临时开门密码自动下发
  • 前端登录不掉线!Vue + Node.js 双 Token 无感刷新方案
  • 爱高集团引领转型浪潮:AI与区块链驱动香港科技资本新机遇
  • [C++] STL数据结构小结
  • Linux——Json
  • 【系统分析师】2017年真题:综合知识-答案及详解
  • JVM(8)——详解分代收集算法
  • 【基础算法】贪心 (一) :简单贪心
  • Python标准库 zlib模块【数据压缩/解压】全面讲解
  • Python元组常用操作方法
  • 什么是跨域问题?后端如何解决跨域问题?
  • MCU量产高效烧录:BootLoader与App合并技巧
  • 【Python】正则表达式中的`^`和`[]`
  • 学c++ cpp 可以投递哪些岗位
  • 从0开始学习计算机视觉--Day02--数据驱动
  • MySQL误删数据急救指南:基于Binlog日志的实战恢复详解
  • Mac Parallels Desktop Kali 2025 代理设置
  • OpenAI与微软的未来合作之路:充满挑战的AI竞赛与共赢
  • YAML 数据格式详解
  • 计算机网络第九章——数据链路层《流量控制和可靠传输》
  • 基于SpringBoot+Uniapp的活动中心预约小程序(协同过滤算法、腾讯地图、二维码识别)
  • Docker镜像制作---指令
  • Qt输入数据验证的方法
  • rent8_wechat-最常用出租屋管理系统-微信小程序
  • 从零开发ComfyUI插件:打造你的AI绘画专属工具
  • 私有规则库:企业合规与安全的终极防线
  • C# 将 Enum枚举转成List,并显示在下拉列表中
  • LINUX621 NFS 同步 ;FTP;samba环境
  • 面试题-ts中的typeof
  • 面试题-把类型为b的值赋给类型为a的变量