vue3基础九问,你会几问

devtools/2024/9/29 17:47:28/

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>javascript">
    export default {props: ['message']
    }
    </script>
    
  • 子传父
    子组件通过 $emit 触发事件,父组件监听该事件并执行相应操作。

    <!-- 子组件中 -->
    <template><button @click="sendMessage">Send Message</button>
    </template>
    <script>javascript">
    export default {methods: {sendMessage() {this.$emit('message-sent', 'Hello Parent!');}}
    }
    </script><!-- 父组件中 -->
    <template><child-component @message-sent="receiveMessage"></child-component>
    </template>
    <script>javascript">
    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)具备与多页面网站类似的导航功能,而无需页面刷新。

javascript">// 定义路由
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(异步操作)来管理应用状态。

javascript">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数据

简单的请求示例:

javascript">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.ppmy.cn/devtools/118805.html

相关文章

【习题】应用开发安全

判断题 1. TEE是Trusted execution environment的缩写&#xff1a; A、正确(True) B、错误(False) 2. OS Kernel&#xff08;操作系统内核&#xff09;的安全性要强于TEE&#xff1a; A、正确(True) B、错误(False) 单选题 1. 以下哪个不是HarmonyOS安全设计…

力扣题解2535

大家好&#xff0c;欢迎来到无限大的频道。 今日继续给大家带来每日一题的题解。 题目描述&#xff08;简单&#xff09;&#xff1a; 数组元素和与数字和的绝对差 元素和 是 nums 中的所有元素相加求和。 数字和 是 nums 中每一个元素的每一数位&#xff08;重复数位需多次…

HTML【知识改变命运】03font 字体标签

题目&#xff1a;在页面上显示"北京"两个字&#xff0c;字体为微软雅黑&#xff0c;颜色为红色&#xff0c;大小为40xp&#xff1b; font标签可以修饰字体的大小&#xff0c;颜色&#xff0c;和字体 属性&#xff1a;color颜色&#xff0c;face字体&#xff0c;size大…

JWT手动生成token

依赖&#xff1a; <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency> <dependency> …

【三步 完全离线搭建 linux 版本 openwebui 】

完全离线linux 版open webui 的搭建 1.在具有网络连接的环境中下载whl 在有网络的环境&#xff0c;使用pip download可以保存所有的依赖包,可以使用-i 指定清华的镜像源加速下载速度。 # 命令&#xff1a; pip download <package_name> --only-binary:all: --wheel --…

Python中的数据可视化:从基础图表到高级可视化

数据可视化是数据分析和科学计算中不可或缺的一部分。它通过图形化的方式呈现数据&#xff0c;使复杂的统计信息变得直观易懂。Python提供了多种强大的库来支持数据可视化&#xff0c;如Matplotlib、Seaborn、Plotly等。本文将从基础图表入手&#xff0c;逐步介绍如何使用这些库…

4.浮点数二分【求数的平方根】

模板 public class BinarySearch {// 检查x是否满足某种性质public static boolean check(double x) {// 实现具体的检查逻辑return false; // 这里仅为示例&#xff0c;实际根据需求修改}public static double bsearch_3(double l, double r) {final double eps 1e-6; // …

Android中大量使用建造者模式(Builder Pattern)的原因可以归结为以下几点:

1. 解耦对象的构建与表示 建造者模式将复杂对象的构建过程与其表示分离&#xff0c;这使得同样的构建过程可以创建不同的表示。在Android开发中&#xff0c;许多组件和视图需要配置多个属性和参数&#xff0c;通过建造者模式可以清晰地将这些属性的设置与对象的实际构造过程分…