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

vue面试题1. 请说下封装 vue 组件的过程?2. Vue组件如何进行传值的?3. Vue 组件 data 为什么必须是函数?4. 讲一下组件的命名规范

1. 请说下封装 vue 组件的过程?

首先,组件可以提升整个项目的开发效率。能够把页面抽象成多个相对独立的模块,解决了我们传统项目开发:效率低、难维护、复用性等问题。

  • 分析需求:确定业务需求,把页面中可以复用的结构,样式以及功能,单独抽离成一个组件,实现复用

  • 具体步骤:全局 app.component 或者在局部配置项 components 中,定义组件名,可以在 props 中接受给组件传的参数和值,子组件修改好数据后,想把数据传递给父组件,可以采用 $emit 方法。

2. Vue组件如何进行传值的?

父向子 -> props定义变量 -> 父在使用组件用属性给props变量传值

子向父 -> $emit触发父的事件 -> 父在使用组件用@自定义事件名=父的方法 (子把值带出来)

3. Vue 组件 data 为什么必须是函数?

每个组件都是 Vue 的实例,为了独立作用域,防止变量污染别人的变量

4. 讲一下组件的命名规范

给组件命名有两种方式(在Vue.Component/components时),

一种是使用链式命名"my-component"

一种是使用大驼峰命名"MyComponent"

因为要遵循W3C规范中的自定义组件名 (字母全小写且必须包含一个连字符),

避免和当前以及未来的 HTML 元素相冲突

5. 路由之间是怎么跳转的?有哪些方式?

1、<router-link to="需要跳转到页面的路径">

2、this.$router.push()跳转到指定的url,并在history中添加记录,点击回退返回到上一个页面

3、this.$router.replace()跳转到指定的url,但是history中不会添加记录,点击回退到上上个页面

4、this.$touter.go(n)向前或者后跳转n个页面,n可以是正数也可以是负数

6. vue-router怎么配置路由?

在vue中配置路由分为5个步骤,分别是:

  1. 引入vue-router.js

  2. 配置路由path和组件, 和生成路由对象

  3. 把路由对象配置到new Vue中router选项下

  4. 页面使用<router-view></router-view> 承载路由

  5. <router-link to="要跳转的路径"></router-link> 设置路由导航(声明式导航方式/编程式跳转)

7. vue-router的钩子函数都有哪些?

关于vue-router中的钩子函数主要分为3类

全局钩子函数要包含beforeEach

beforeEach函数有三个参数,分别是:

to:router即将进入的路由对象
from:当前导航即将离开的路由
next:function,进行管道中的一个钩子,
 如果执行完了,则导航的状态就是 confirmed (确认的)否则为false,终止导航。

单独路由独享组件  beforeEnter,

组件内钩子 beforeRouterEnter, beforeRouterUpdate, beforeRouterLeave

8.  路由传值的方式有哪几种?

Vue-router传参可以分为两大类

分别是编程式的导航 router.push和声明式的导航 router.push

字符串:直接传递路由地址,但是不能传递参数   this.$router.push("home") ​

对象: ​ 命名路由 这种方式传递参数,目标页面刷新会报错 - name+params ​           this.$router.push({name:"news",params:{userId:123}) ​ 查询参数 和path配对的是query ​           this.$router.push({path:"/news',query:{uersId:123}) ​ 接收参数 this.$route.query

声明式导航

字符串 <router-link to:"news"></router-link> ​

命名路由 <router-link :to:"{name:'news',params:{userid:1111}}"></route-link> ​

还可以to="/path/值" - 需要提前在路由 规则里值 /path/:key ​

查询参数 <router-link :to="{path:'/news',query:{userId:1111}}"></router-link> ​  

还可以to="/path?key=value

9. 怎么定义vue-router的动态路由?怎么获取传过来的动态参数?

动态路由指的就是path路径上传值,

前提需要路由规则了提前配置/path/:key名,可以写多个用/隔开,

获取使用$route.params.key名来提取对应用路径传过来的值

10. Vue的路由实现模式:hash模式和history模式

hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用 window.location.hash 读取。特点:hash虽然在URL中,但不被包括在HTTP请求中,用来指导浏览器动作,对服务端安全无用,hash不会重加载页面。

history模式:history采用HTML5的新特性,提供了两个新方法: pushState(), replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听到状态变更

11. 请说出路由配置项常用的属性及作用?

路由配置参数:

path : 跳转路径
component : 路径相对于的组件
name:命名路由
children:子路由的配置参数(路由嵌套)
props:路由解耦
redirect : 重定向路由

12. 编程式导航使用的方法以及常用的方法

路由跳转 : this.$router.push()
路由替换 : this.$router.replace()
后退: this.$router.back()
前进 :this.$router.forward()

13. Vue如何去除URL中的#?

vue-router 默认使用 hash 模式,所以在路由加载的时候,项目中的 URL 会自带 “#”。

如果不想使用 “#”, 可以使用 vue-router 的另一种模式 history

new Router ({ mode : 'history', routes: [ ]}) ​

注意,当我们启用 history 模式的时候,由于我们的项目是一个单页面应用,所以在路由跳转的时候,就会出现访问不到静态资源而出现 “404” 的情况,这时候就需要服务端增加一个覆盖所有情况的候选资源:

如果 URL 匹配不到任何静态资源,则应该返回同一个 “index.html” 页面。

14. 说一下你在vue中踩过的坑?

1、第一个是给对象添加属性的时候,直接通过给data里面的对象添加属性然后赋值,新添加的属性不是响应式的

【解决】通过Vue.set(对象,属性,值)这种方式就可以达到,对象新添加的属性是响应式的

2、 在created操作dom的时候,是报错的,获取不到dom,这个时候实例vue实例没有挂载

【解决】通过:Vue.nextTick (回调函数进行获取)

15. $route和$router的区别?

$route路由信息对象,包括 path,hash,query,fullPath,matched,name 等路由信息参数,$router路由实例对象,包括了路由的跳转方法,实例对象等

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

相关文章:

  • Docker使用记录
  • OpenCV(图像处理)-基于Python-形态学处理-开运算、闭运算、顶帽、黑帽运算
  • chatgpt赋能python:Python支持跨平台软件开发
  • 哈工大计算机网络课程网络层协议详解之:CIDR与路由聚集
  • C++ 教程(19)——日期 时间
  • React 应用 Effect Hook 函数式中操作生命周期
  • C代码程序实现扫雷游戏纯代码版本
  • ai代写---怎么在ubutnu服务器中安装mqtt
  • 【设计模式与范式:行为型】63 | 职责链模式(下):框架中常用的过滤器、拦截器是如何实现的?
  • Kendo UI for jQuery---03.组件___网格---02.开始
  • 初识Telegraf、InfluxDB和Grafana铁三角形成的监控可视化解决方案
  • 【哈佛积极心理学笔记】第20课 幸福与幽默
  • 设计模式-责任链模式
  • 不变的是需求,变化的是解决方法和工具:探讨iPaaS与ESB的差异
  • 网络解析----faster rcnn
  • modbus TCP协议讲解及实操
  • 既有内销又有外贸,多样性外贸业务管理解决方案
  • spring eurake中使用IP注册
  • c# 从零到精通 form界面之listView控件
  • Qt6.5.1+WebRTC学习笔记(十二)环境搭建流媒体服务器(ubuntu22.04+SRS)
  • LeetCode 9. 回文数
  • Linux系统之部署Teleport堡垒机系统
  • 【二叉树part02】| 102.二叉树的层序遍历、226.翻转二叉树、101.对称二叉树
  • 【干货】Android系统定制基础篇:第十五部分(Android支持鼠标右键返回、GPIO 控制方案、属性标识USB摄像头的VID与PID)
  • ubuntu18 修改dns服务器地址为google
  • RHCE shell 作业一
  • Qqis中采用栅格工具生成XYZ瓦片(目录)简介
  • 【Axure教程】根据标签数自动调整尺寸的多选下拉列表
  • 【python】js逆向基础案例——有道翻译
  • 面经系列.飞猪 Java开发工程师.杭州.2023.6.14一面面经