2023年中前端面试真题之Vue篇

本文详细介绍了Vue.js框架中的关键概念,包括组件的使用、数据双向绑定、计算属性、watch机制、状态管理库Vuex以及路由设置。涵盖了从基本组件到高级特性的实践应用。
摘要由CSDN通过智能技术生成

转载: https://mp.weixin.qq.com/s/ZK2pklXyHEtGPNtOoV9n2Q

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<div id="app">
  <input v-model="message" type="text">
  <p>{{ message }}</p>
</div>

在这里插入图片描述

new Vue({
  el: '#app',
  data: {
    message: 'Hello, Vue!'
  }
})

在这里插入图片描述
在这里插入图片描述

<template>
  <div>
    <p>{{ fullName }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    }
  },
  computed: {
    fullName() {
      return this.firstName + ' ' + this.lastName;
    }
  }
}
</script>

在这里插入图片描述

<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 'Initial Value',
      message: ''
    }
  },
  watch: {
    value(newValue, oldValue) {
      // 在value属性变化时执行的操作
      this.message = 'Value changed: ' + newValue;
    }
  }
}
</script>

在这里插入图片描述

Vue.component('my-component', {
  // 组件的选项
  template: '<div>This is a custom component</div>'
})

在这里插入图片描述

<template>
  <div>
    <my-component></my-component>
  </div>
</template>

在这里插入图片描述

<template>
  <div>
    <my-component :message="message"></my-component>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello from parent component'
    }
  }
}
</script>

在这里插入图片描述

<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  props: ['message']
}
</script>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    },
    decrement(state) {
      state.count--
    }
  },
  actions: {
    incrementAsync(context) {
      setTimeout(() => {
        context.commit('increment')
      }, 1000)
    }
  },
  getters: {
    doubleCount(state) {
      return state.count * 2
    }
  }
})
export default store

在这里插入图片描述

npm install vue-router
# 或者
yarn add vue-router

在这里插入图片描述

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',         // 路由路径
    component: Home    // 对应的视图组件
  },
  {
    path: '/about',
    component: About
  }
  // 其他路由配置
]
const router = new VueRouter({
  routes // 使用配置文件中的路由规则
})
export default router

在这里插入图片描述

import Vue from 'vue'
import App from './App.vue'
import router from './router' // 导入路由配置

new Vue({
  el: '#app',
  router, // 使用路由配置
  render: h => h(App)
})

在这里插入图片描述

<template>
  <div>
    <router-link to="/">Home</router-link>
    <router-link to="/about">About</router-link>
    <router-view></router-view>
  </div>
</template>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<template>
  <div>
    <button @click="showModal">Show Modal</button>
    <teleport to="#modal-container">
      <Modal v-if="isModalVisible" @close="closeModal" />
    </teleport>
  </div>
</template>

在这里插入图片描述

<template>
  <div>
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
    <v-fragment>
      <p>Paragraph 3</p>
      <p>Paragraph 4</p>
    </v-fragment>
  </div>
</template>

在这里插入图片描述

import { createApp } from 'vue';
const app = createApp(App);
app.mount('#app');

在这里插入图片描述

app.component('my-component', MyComponent);

在这里插入图片描述

import { defineComponent, ref, mix } from 'vue';
const mixin = {
  data() {
    return {
      message: 'Hello from mixin'
    };
  }
};
const MyComponent = defineComponent({
  mixins: [mixin],
  setup() {
    const count = ref(0);
    return {
      count
    };
  },
  template: `
    <div>
      {{ message }}
      {{ count }}
    </div>
  `
});

在这里插入图片描述

app.directive('my-directive', {
  // 自定义指令的定义
});

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import { ref } from 'vue';
const count = ref(0); // 创建一个包装数字的 ref

在这里插入图片描述

import { reactive } from 'vue';
const person = reactive({
  name: 'Alice',
  age: 30
}); // 创建一个包含多个属性的响应式对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值