Vue面试真题2 -- vuex、指令、导航钩子、双向绑定

Vue面试真题2 – vuex、指令、导航钩子、双向绑定

Vue面试真题1 – 生命周期函数、组件封装、axios中我们学习了vue生命周期函数详解、vue组件封装、axios,本文将继续重点跟大家介绍前端面试中经常遇到的一些与Vue相关的第2个重点内容,主要包括vuex、指令、导航钩子、双向绑定。废话不多说,一起来看看吧!

1-vuex

  • 常见面试问题:vuex是什么?怎么使用?哪种功能场景使用它?
    • vuex 是一个专门为vue构建的状态集管理。
    • 主要是为了解决组件间状态共享的问题。
    • 强调的是集中式管理
    • 说白了,主要是便于维护,便于解耦,所以不是所有的项目都适合使用vuex。
    • 如果你不是构建大型项目,使用vuex反而使你的项目代码繁琐多余。
  • vuex 的核心
    • state
    • mutations
    • getters
    • actions
    • modules
  • vuex使用示例
	<!DOCTYPE html>
	<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <meta http-equiv="X-UA-Compatible" content="IE=edge">
	    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	    <title>vuex_demo</title>
	</head>
	<body>
	    <div id="app">
	        <p>更新计数{{count}}</p>
	        <button @click="add">++</button>
	        <button @click="decrease">--</button>
	    </div>
	    
	    <script src="./js/vue.js"></script>
	    <script src="./js/vuex.js"></script>
	    <script>
	        var store = new Vuex.Store({
	            state: {
	                count: 0
	            },
	            mutations: {  // 唯一一个可以更改状态的地方
	                addState(state) {
	                    state.count++;
	                },
	                decreaseState(state) {
	                    state.count--;
	                }
	            }
	        });
	        var vm = new Vue({
	            el: "#app",
	            store,
	            computed: {
	                count() {
	                    return this.$store.state.count;
	                }
	            },
	            methods: {
	                add() {
	                    store.commit('addState');
	                },
	                decrease() {
	                    store.commit('decreaseState');
	                }
	            }
	        });
	    </script>
	</body>
	</html>

2-vue指令

  • 常见面试问题:说出4个vue当中的指令和它的用法
    • v-if 条件渲染指令,代表存在销毁。
    • v-bind 绑定指令,用来绑定指令,简写成:
    • v-on 监听事件指令,简写成@
    • v-for 循环指令

3-vue导航钩子

  • 常见面试问题:vue导航钩子有哪些?它们有哪些参数?
  • 导航钩子翻译过来就是路由的生命周期函数(vue-router),主要分为两种:全局和局部。
  • 全局的钩子函数:
    • beforeEach: 在路由切换开始时调用
    • afterEach: 在路由切换离开时调用
  • 局部到单个路由:
    • beforeEnter: 在单个路由切换开始时调用
  • 组件的钩子函数:
    • beforeRouterEnter: 在组件路由切换开始时调用
    • beforeRouterUpdate: 在组件路由更新时调用
    • beforeRouterLeave: 在组件路由切换离开时调用
  • 使用方法:router.beforeEach((to, from, next) => { });
    • to: 即将进入的目标对象
    • from: 当前导航要离开的导航对象
    • next: 是一个函数,调用resolve,执行下一步
  • vue导航钩子使用示例
	const routes = [
        {
            path: '/',
            name: '/',
            component: Home
        },
        {
            path: '/login',
            name: '/login',
            component: Login
        },
        {
            path: '/buy',
            name: '/buy',
            component: Buy,
            meta: {
                auth: true
            }
        }
    ];
    const router = new VueRouter({
        routes,

    });
    // 全局路由
    router.beforeEach((to, from, next) => {
        if(to.auth) {
            if(token) {
                next();
            }
            else {
                next({
                    path: '/login'
                })
            }
        }
    });

4-vue双向绑定

  • 常见面试问题:v-model是什么? Vue中标签怎么绑定事件?
  • vue中利用v-model来进行表单数据的双向绑定。
  • 说白了,它只做了两个操作
    • v-bind 绑定了一个value的属性。
    • 利用v-on把当前的元素绑定到了一个事件上。
  • vue双向绑定使用示例
	<!DOCTYPE html>
	<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <meta http-equiv="X-UA-Compatible" content="IE=edge">
	    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	    <title>vue双向绑定</title>
	    <script src="./js/vue.js"></script>
	</head>
	<body>
	    <div id="app">
	        <input v-model="inputValue">
	        <hr>
	        <p>{{inputValue}}</p>
	        <hr>
	        <input :value="inputValue2" @input="inputValue2 = $event.target.value">
	        <p>{{inputValue2}}</p>
	    </div>
	
	    <script>
	        var vm = new Vue({
	            el: '#app',
	            data: {
	                inputValue: '',
	                inputValue2: ''
	            }
	        });
	    </script>
	</body>
	</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值