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

vue3基础九问,你会几问

1. Vue是什么?

Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它的核心库只关注视图层,采用自下而上的增量开发设计,这使得你可以将 Vue 轻松地整合到现有的项目中,或者与其他前端库一起使用。Vue 的目标是通过提供反应的数据绑定和可组合的视图组件,使前端开发更加方便、高效。

2. 说出Vue的10个常用指令

  • v-bind:动态绑定一个或多个属性或一个组件 prop。
    <img v-bind:src="imageSrc" />
    
  • v-model:创建双向数据绑定。
    <input v-model="message" />
    
  • v-for:基于一个数组渲染一个列表。
    <li v-for="item in items" :key="item.id">{{ item.text }}</li>
    
  • v-if:基于条件渲染元素。
    <p v-if="seen">现在你看到我了</p>
    
  • v-else-ifv-if的“else if”块。
    <p v-if="type === 'A'">A</p>
    <p v-else-if="type === 'B'">B</p>
    <p v-else>C</p>
    
  • v-elsev-if的“else”块。
    <p v-if="type === 'A'">A</p>
    <p v-else>B</p>
    
  • v-show:基于条件展示或隐藏元素 (通过 CSS display属性进行切换)。
    <p v-show="isShown">现在你看到我了</p>
    
  • v-on:监听 DOM 事件(常用于触发数据变更)。
    <button v-on:click="doSomething">点击我</button>
    
  • v-pre:跳过这个元素和它的子元素的编译过程,用于临时展示原始 Mustache 标签。
    <span v-pre>{{ this will not be compiled }}</span>
    
  • v-cloak:这个指令保持在元素上直到关联实例结束编译。
    <div v-cloak>
      {{ message }}
    </div>
    

3. 说说Vue的生命周期

Vue实例在创建过程中会经历一系列的初始化过程,包括设置数据监听、编译模板、挂载DOM、更新DOM等。Vue提供了几个生命周期钩子函数,允许用户在特定的阶段执行额外的操作:

  • beforeCreate:实例初始化之后,数据观测 (data observer) 和事件/watcher 都还没有被设置。
  • created:实例已经创建完成,属性‘data’、‘methods’、‘computed’等已初始化,el还未创建。
  • beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。
  • mounted:el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。
  • beforeUpdate:响应式数据更新时调用,在虚拟DOM重新渲染和打补丁之前。
  • updated:组件 DOM 已经更新。
  • beforeDestroy:实例销毁之前调用。这一步,实例仍然完全正常。
  • destroyed:Vue 实例销毁后调用。这一步,所有的事情都被清理。

4. 组件开发中的父传子和子传父

  • 父传子
    父组件通过在子组件上使用自定义属性来传递数据。子组件可以通过 props 来接收这些数据。

    <!-- 父组件中 -->
    <child-component :message="parentMessage"></child-component>
    
    <!-- 子组件中 -->
    <template>
      <div>{{ message }}</div>
    </template>
    <script>
    export default {
      props: ['message']
    }
    </script>
    
  • 子传父
    子组件通过 $emit 触发事件,父组件监听该事件并执行相应操作。

    <!-- 子组件中 -->
    <template>
      <button @click="sendMessage">Send Message</button>
    </template>
    <script>
    export default {
      methods: {
        sendMessage() {
          this.$emit('message-sent', 'Hello Parent!');
        }
      }
    }
    </script>
    
    <!-- 父组件中 -->
    <template>
      <child-component @message-sent="receiveMessage"></child-component>
    </template>
    <script>
    export default {
      methods: {
        receiveMessage(message) {
          console.log(message);
        }
      }
    }
    </script>
    

5. 组件插槽的作用

插槽(Slot)是 Vue 用来組装和复用组件的一种机制,允许在组件使用时传递内容。插槽可以让父组件在使用子组件时,能够在子组件的特定位置插入自定义内容。

<!-- 子组件 -->
<template>
  <div class="child">
    <slot></slot>
  </div>
</template>

<!-- 父组件中 -->
<child-component>
  <p>这个内容将会被传递到子组件的 slot 位置</p>
</child-component>

另外,Vue还支持命名插槽和作用域插槽。

6. 路由是什么?

路由指的是根据 URL(统一资源定位符)来决定哪些页面或组件应当被显示。Vue Router 是 Vue.js 官方的路由管理器,帮助你轻松管理 Vue 应用中的页面切换和动态 URL。通过定义路由及其对应的组件,Vue Router 使单页应用程序(SPA)具备与多页面网站类似的导航功能,而无需页面刷新。

// 定义路由
const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About }
]

// 创建路由实例,并传递 `routes` 配置
const router = new VueRouter({
  routes
})

// 创建根实例
const app = new Vue({
  router
}).$mount('#app')

7. 状态管理是什么?

状态管理是一种工具和模式,帮助开发者在应用中管理多个组件间的共享状态。Vuex 是 Vue.js 的官方状态管理库,提供了一个集中式存储,并使用规则确保状态的可预测性和统一性。Vuex 通过定义state(存储),getter(获取状态),mutation(同步操作),和action(异步操作)来管理应用状态。

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  },
  actions: {
    increment ({ commit }) {
      commit('increment')
    }
  },
  getters: {
    getCount: state => state.count
  }
})

new Vue({
  store
}).$mount('#app')

8. Axios是什么?

Axios 是一个基于 Promise 的 HTTP 客户端,用于向后台发送请求,支持在浏览器和 Node.js 环境中运行。它具有如下特性:

  • 创建 XMLHttpRequests 请求
  • 创建 Node.js HTTP 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换JSON数据

简单的请求示例:

import axios from 'axios';

axios.get('https://api.example.com/items')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.log(error);
  });

9. MVVM模型是什么?

MVVM 是 Model-View-ViewModel 的简写,是一种架构模式,用来简化用户界面的开发:

  • Model(模型):表示应用的数据;
  • View(视图):表示用户界面;
  • ViewModel(视图模型):连接 Model 和 View 的桥梁。它将 Model 中的数据展示到 View,并将 View 中的用户输入传递回 Model。

MVVM 主要优点在于双向数据绑定,使得 View 与 Model 自动同步,极大简化了界面更新的开发工作。Vue 本身就是基于 MVVM 模型设计的框架。


http://www.kler.cn/news/317400.html

相关文章:

  • 单域名、多域名、通配符SSL证书,该如何选择?
  • MySQL(七)——事务
  • vue3中使用nexttick
  • QTableView使用QSortFilterProxyModel后行号错乱
  • 深度学习经典模型解析
  • 基于SpringBoot+Vue+MySQL的教学资料管理系统
  • Web+Mysql——MyBatis
  • 简单的spring缓存 Cacheable学习
  • Rust 全局变量的最佳实践 lazy_static/OnceLock/Mutex/RwLock
  • 02 BlockChain-- ETH
  • 着色器ShaderMask
  • HTML、CSS
  • python机器学习足球数据建模与分析——数据预测与预测建模
  • 嵌入式综合实验平台-嵌入式综合实训实验箱
  • [Excel VBA]如何使用VBA按行拆分Excel工作表
  • PHP智慧教育新篇章优校管理系统小程序源码
  • uniapp常用声明周期
  • 【C++指南】inline内联函数详解
  • network request to https://registry.npmjs.org/xxx failed, reason: connect ETIM
  • Cesium影像纠偏:高德地图加载与坐标系纠偏技巧
  • 【机器学习(九)】分类和回归任务-多层感知机 (MLP) -Sentosa_DSML社区版
  • Github 2024-09-21Rust开源项目日报 Top10
  • Qt/C++ 了解NTFS文件系统,解析0x80 $Data属性,获取Run Lists数据列表
  • 仓颉编程语言4,遇到BUG求助
  • 数据中心里全速运行的处理器正在浪费能源
  • golang格式化输入输出
  • 【3D打印】使用simplify 3D切片更改Gcode手动断电续打、掉电、未打完继续打印、补救
  • Parallels Desktop 20 for Mac 推出:完美兼容 macOS Sequoia 与 Win11 24H2
  • 【Godot4.3】自定义数列类NumList
  • 【Qt | Qstring】Qstring详细介绍(字符串的添加、删除、修改、查询、截断、删除空白字符等)