网站首页 > 教程分享 正文
D:\1.vue在php中运行的面试题
问题1:vue页面中一个页面点一个按钮想跳转到另一个页面,路由怎么写?
vue使用router-link :to="{path:'/index'}"传参以及参数的使用
a页面:
<router-link class="btn-link-large add-btn" :to="{path:'/home/groups/list',query:{a:1,b:2,c:'赛事'}}"> <i class="el-icon-plus"></i> 跳转到用户管理 </router-link>
需要知道的是:router-link :to="{path:'/index',query:{a:1}}"
需要调整到的b页面:怎么获取对应的参数
created() { this.getgroups(); console.log(this.$route.query);},
问题2:路由传参方法?
动态路由跳转:params , router-link :to="{path:'/index',params:{a:1}}",获取跳转到的那个页面的参数:this.$route.params.a//前提是routes.js里路径是/:a
正常路由加参数:query,是path和query, router-link :to="{path:'/index',query:{a:1}}"
获取跳转到的那个页面的参数:this.$route.query.id
问题3:面包屑导航里面,动态导航名怎么获取?
回答:基于$route.matched进行面包屑导航匹配,导航名放在router.js的meta里,定义一个title
文件名:users/list.vue
<el-breadcrumb separator-class="el-icon-arrow-right" class="breadcrumb"> <el-breadcrumb-item><a href="/">首页</a></el-breadcrumb-item> <el-breadcrumb-item v-for="bread in breadList" v-bind:key="bread"> {{ bread }} </el-breadcrumb-item> </el-breadcrumb>
然后在create()方法里加:this.breadList = [];console.log(this.$route.matched);//路由左匹配了match,是path: "/home",和path: "/home/users/list"的二个数组,因为没有匹配到path所对应的user for (const routeInfo of this.$route.matched) { console.log(routeInfo); if (typeof routeInfo.name === 'string' && routeInfo.name !== 'home') { this.breadList.push(routeInfo.meta.title); } }此时打印: 路由:const routes = [{ path: '/home', component: Home, children: [ { path: 'users/list', component: usersList, name: 'usersList', meta: { hideLeft: false, module: 'Administrative', menu: 'users','title':'用户列表' }}],***********其他需要学的******for…of 循环:for (variable of iterable) { statement}· variable:每个迭代的属性值被分配给该变量。· iterable:一个具有可枚举属性并且可以迭代的对象。const routes = [{ path: '/home', component: Home, children: [ { path: '/refresh', component: refresh, name: 'refresh', children: [path: '/refresh/list', component: refresh, name: 'refresh',] } ] }];this.$router.matched:根据当前路由左匹配,分别匹配,找有没有对应的path/home:有这个path/home/refresh//home/refresh/list问题4:怎么引用面包屑导航组件?先写公共组件:在components下写BreadCrumb.vue再引用第一步:import方式引入import breadCrumb from '../../../../components/BreadCrumb.vue'第二步:component注册components: { breadcrumb//如果有第二个组件用逗号},第三步:把组件名用标签形式放指定html<template> <div> <breadCrumb></breadCrumb><div><template>问题5:引用组件的方式?第一种,直接页面引入,html的标签是组件名:<dialog-smbox v-if="smBox" :smbox="smboxMessage"></dialog-smbox>import引入:import Smbox from "./Smbox.vue"模板引入:components: { "dialog-smbox": Smbox, },第二种,放入路由里引入:{ path: '/', component: Login, name: 'Login' },第三种,放入main.js里全局引入组件:import VueBus from 'vue-bus'Vue.use(VueBus);问题6:: 每次请求之前都用loading,这个怎么写在公共方法里?方法一:在main.js里写router.beforEach,通过store.dispatch进行loading的属性绑定router.beforeEach((to, from, next) => {//从哪里来,到哪里去,下一步做啥 const hideLeft = to.meta.hideLeft store.dispatch('showLeftMenu', hideLeft)//第一个是方法名,第二个是参数 store.dispatch('showLoading', true)//全局loading的方式 NProgress.start() next()})模块一 : 先了解router钩子函数1.全局导航钩子:所有页面都会到,在main.js里写router.beforeEach(全局前置守卫): 是页面加载之前,链接权限校验(我有没有权限访问这个内容),router.afterEach(全局后置守卫):是页面加载之后 ,做相应操作,比如访问次数统计· 2. 组件内钩子 beforeRouteEnter (to, from, next)(进入路由之前的操作), beforeRouteUpdate (to, from, next)(路由更新之前的操作), beforeRouteLeave (to, from, next)(离开路由之前的操作,就是离开组件之前),· 组件写在哪里:在对应.vue文件里,是和data平级的· 3.单独路由独享组件 beforeEnter: 用于执行进入组件之前的操作(用户enter想进入某页面之前,上个页面路径名必须是什么),判断能否进入组件,先访问/home/users/list之后才能访问users/add场景:token比如半小时失效,可以beforeEnter跳转还是到原来页面具体写法:写在在router.js里写,6.后台token失效,用户点击页面又跳到需要重新登陆的状态,这时怎么调路由的钩子函数控制页面不跳转到登录页?问题7: 前端做跨域打开config下面的index.js,找到proxyTable,添加以下代码即可:'/api': { //替换代理地址名称, target: 'http://api.douban.com/', //代理地址 changeOrigin: true, //可否跨域 pathRewrite: { '^/api': '' //重写接口,去掉/api }}这个也只得是能跳过了浏览器的保护 如果后端禁止了也不行问题8:.怎么引vuex?Step1:在main.js引入store,注入。import store from './store'Step2:在store.Js里import Vuex from 'vuex'Vue.use(Vuex) export default new Vuex.Store({ state,//类似vue里的data mutations,//类似methods,里面可以放方法的 getters,//获取计算属性 actions//让mutations里的方法可以异步调用})问题9:.怎么用vuex?state,//类似vue里的data mutations,//类似methods,里面可以放方法的,提交更改数据的方法,同步! getters,//获取state里的属性,actions//让mutations里的方法可以异步调用modules => 模块化Vuex第一步:比如在main.js里写,router.beforeEach((to, from, next) => {//从哪里来,到哪里去,下一步做啥 const hideLeft = to.meta.hideLeft store.dispatch('showLeftMenu', hideLeft)//第一个是方法名,第二个是参数 store.dispatch('showLoading', true)//全局loading的方式 NProgress.start() next()})经过store.dispatch(异步)/commit(同步)--第二步:-调action里方法,用commit方式到mutation里第三步: 提交更改数据的方法问题10:如何优化大数据量加载问题?1. 减少无用字段2. 数据扁平化,用基本数据类型,不要用过与复杂的数据类型3. 数据静态化,有的数据能在本地存,就不要老去后台取问题11: 不同的用户登录,看到不同的页面,权限设置怎么写?Admin所有内容都能看,xiaowang登录时账户列表前没有二个添加按钮一句话总结:用户登录时,从后台获取用户的权限列表,并存到localstorage里---每次根据用户是否有相应权限,进行展示或者隐藏第一步:把用户权限列表存到localStorage里获取的权限列表类似这样的:第二步:根据用户是否有相应权限,进行展示或者隐藏第三步:页面展示在需要隐藏的地方v-showgetHasRule方法写在:返回true或者false问题12:完整的路由导航解析流程(不包括其他生命周期):1. 触发进入其他路由。2. 调用要离开路由的组件守卫beforeRouteLeave3. 调用局前置守卫:beforeEach4. 在重用的组件里调用 beforeRouteUpdate5. 调用路由独享守卫 beforeEnter。6. 解析异步路由组件。7. 在将要进入的路由组件中调用beforeRouteEnter8. 调用全局解析守卫 beforeResolve9. 导航被确认。10. 调用全局后置钩子的 afterEach 钩子。11. 触发DOM更新(mounted)。12. 执行beforeRouteEnter 守卫中传给 next 的回调函数问题13:路由的跳转方式一般有两种1. <router-link to='home'> router-link标签会渲染为<a>标签,咋填template中的跳转都是这种;2. 另一种是编程是导航 也就是通过js跳转 比如 router.push('/home')
- 上一篇: Vue 路由 导航守卫(vue路由导航守卫有几种方法)
- 下一篇: 一个Hook示例(hook实现)
猜你喜欢
- 2024-10-10 C/C++恶意代码盘点(二):后门丨文件监控丨自删除功能
- 2024-10-10 「面试题」和Vue.js有关的41个基础问题
- 2024-10-10 VueCLI3.0之vue-router路由详解(vue-router路由的作用)
- 2024-10-10 Vue经典面试题(vue常见面试题及答案2021)
- 2024-10-10 这几招技术,病毒木马经常用(病毒木马感染途径有哪些)
- 2024-10-10 前端知识点也可以当做面试题含vue
- 2024-10-10 计算机犯罪系列(二十五)脚本外挂模拟人工自动打怪刑事责任分析
- 2024-10-10 前端vue面试题(前端vue面试题目)
- 2024-10-10 Vue3.0+Vant3聊天室|vue3仿微信App聊天实例
- 2024-10-10 警惕Gorgon APT组织窃密攻击(apt窃密特点)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)