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

前端面试准备2

1.介绍三次握手和四次挥手

2.怎么实现元素的垂直居中

①:Flexbox弹性布局,设置父元素display属性为flex,然后设置align-items和justify-content属性为center

②:grid网格布局。设置父元素display属性为grid,然后设置place-items属性为center

③:绝对定位。设置父元素position属性为relative;子元素position设置为absolute,然后通过transform移动位置到垂直居中。

④:table表格。设置父元素display属性为table,子元素display属性为table-cell

3.介绍vue中的slot

slot(插槽)。插槽是组件内的一个占位符,让我们可以向组件内插入内容。父组件在使用子组件时,在子组件标签内传入内容,这些内容会被渲染到子组件内的slot标签内。

①:默认插槽

//父组件
<MyCard><p>这是插入到子组件中的内容</p>
</MyCard>//子组件内部
<template><div class="card"><slot></slot> <!-- 插槽 --></div>
</template>/*结果:子组件中 <slot> 的位置将被 <p>这是插入到子组件中的内容</p> 替换。*/

②:具名插槽。当组件中有多个插槽时,可以给每个插槽命名。

//子组件
<slot name="footer"></slot>//父组件
<MyCard><template #footer>   <!-- #header 是 v-slot:header 的简写语法。 --><small>底部信息</small></template>
</MyCard>

③:有时我们希望子组件可以将数据传给插槽内容。这就需要使用“作用域插槽”。

//父组件
<UserCard><template #default="{ user }"><p>{{ user.name }} - {{ user.age }}</p></template>
</UserCard>//子组件
<template><div><slot :user="user"></slot></div>
</template><script setup>
const user = {name: '小明',age: 21
}
</script>//子组件通过 v-bind 把数据暴露出去,父组件用解构获取这些数据来定制插槽内容。

4.设置一个弹窗组件

①:组件结构设置,分为顶部标题栏header,中间内容区域body,底部按钮区footer。

②:功能设置。支持自定义功能(拖拽、提示、警告、确认等...),defineProps接收传递的自定义内容。

③:实现方式。可以用<Teleport to="body"></Teleport>组件,将弹窗渲染到body下面下,避免影响父组件的css布局。

④:状态管理。通过响应式ref控制弹窗显隐

⑤:交互设计

5.vue中的v-cloak和v-pre的作用

①:对于v-cloak。用于隐藏尚未编译的vue模板,直到vue实例准备完,主要是解决页面加载过程中出现的模板闪烁问题。

//通过css选择器[v-cloak],将元素设置为不显示[v-cloak] {display:none;
}

v-cloak指令会在Vue实例挂载完后自动去除,通常需要搭配css规则使用。

②:v-pre。会跳过元素和他的子元素的编译过程。它 会让vue保持原始的模板语法

6.vue router 如何获取路由传参

①:$route对象访问

②:使用组合式API中的useRoute钩子函数。const route = useRoute()

③:通过props解耦,defineProps({})接收

7.vue的过滤器

在vue2中,通常使用在双花括号插值和v-bind表达式中。但是在vue3中已经移除,推荐使用计算属性或方法替代

8.Vue Route 配置404页面

①:首先创建一个404页面内容

②:在路由配置内,添加一个通配符路由作为最后一个路由规则。

path:"/:pathMach(.*)*"

9.为什么vue中的data是一个函数而不是一个属性

①:避免组件复用时的数据冲突共享。每一份vue实例独立维护一份数据

②:便于组件复用

③:符合Vue的单向数据流理念

10.为什么不建议同时使用v-if和v-for

①:优先级问题导致行为差问题。

vue2中,v-for优先级更高,会有性能问题。但是在vue3中,v-if的优先级更高,这会导致v-if无法访问到v-for作用域内的数据,从而出现错误

②:性能问题。

③:代码的可读性和可维护性

11.v-if和v-show的区别

①:v-if是真正的条件渲染,它会确保条件块内的事件监听器和子组件在切换时的销毁和创建。

②:v-show无论怎么样,组件都会被渲染,并保留在DOM里面,只是控制了切换了display属性的显隐

③:初始渲染开销。v-if是惰性的,只有true时渲染。而v-show无论初始条件是什么,都会渲染组件。

④:切换开销。v-if的切换开销大,因为每次都会销毁和创新创建。v-show的切换开销小,因为在初始时已经渲染到DOM上了。

12.计算属性的函数名可以和data内的属性名重合吗

不可以。因为计算属性和data中的属性最终都会挂载到vue的实例上。

13.如何监听vuex中的数据变化

①:在 Vue 组件中,使用watch监听Vuex state的变化

// 在 Vue 组件中
this.$store.watch((state) => state.someState,(newValue, oldValue) => {console.log('someState changed from', oldValue, 'to', newValue);}
);

②:在Vuex store中,使用subscribe方法监听mutation的变化

// 在 Vuex store 中
store.subscribe((mutation, state) => {console.log('mutation.type:', mutation.type);console.log('mutation.payload:', mutation.payload);
});

14.介绍一下vue router的路由守卫

①:全局路由守卫

  • router.beforeEach:任何路由跳转前触发
  • router.beforeResolve:导航确认前触发
  • router.afterEach:导航完成后触发

②:路由独享守卫

  • beforeEnter,直接在路由配置上定义,只在进入路由时触发

③:组件内守卫

  • beforeRouteEnter:在渲染的组件页面被验证前
  • beforeRouteUpdate:在路由跳转,但是组件被复用时调用
  • beforeRouteLeave:导航离开组件的的对应路由时

相关文章:

  • 工具识别系统Python+深度学习+人工智能+卷积神经网络算法+TensorFlow+图像识别
  • 树莓派超全系列教程文档--(51)如何使用SSH登录树莓派
  • GCN图神经网络的光伏功率预测
  • Linux安装mysql5.7详细教程
  • 02.K8S核心概念
  • DataAgent产品经理(数据智能方向)
  • 系统架构设计师案例分析----经典架构风格特点
  • 若依微服务的定制化服务
  • MATLAB 横向剪切干涉系统用户界面设计及其波前重构研究
  • 安卓添加设备节点权限和selinux访问权限
  • 高空视角之大美遥感-基于Leaflet和天地图的壮美遥感影像实践
  • 基于随机函数链接神经网络(RVFL)的锂电池健康状态(SOH)预测
  • 通过远程桌面连接Windows实例提示“出现身份验证错误,无法连接到本地安全机构”错误怎么办?
  • VTK - 编译静态库(No DLL)
  • 【数据集】中国江北气候区100m逐日近地表气温数据
  • Vue 技术文档
  • 进程控制与调度下
  • React从基础入门到高级实战:React 生态与工具 - React 单元测试
  • [PyTest-案例]
  • 实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.6 R语言解题
  • 怎样做网站搜索推广/河池网站seo
  • 有多少专门做兼职的网站/百度经验官网登录
  • 怎么制作微信小程序商城/北京seo优化wyhseo
  • 网站建设开发软件有哪些/电子商务主要学什么
  • 网站运营怎么自学/seo有哪些作用
  • 四川成都疫情/福州seo网络推广