web前端面试题整理(vue、uni-app、前端三件套、web基础)

本文整理了Vue的相关概念,如MVVM、数据绑定、生命周期,以及vue-router的使用。还涵盖了前端基础,如元素分类、响应式布局和数据类型。同时讨论了Vuex的状态管理,事件处理,以及前端性能优化策略。此外,文章提及了uni-app小程序的特点和优化方法,以及与H5的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vue

对mvvm的理解

mvvm分为model、view、viewmodel三者
model代表数据模型
view代表视图
viewmodel代表连接视图和模型,实现了vue数据的双向绑定

viewmodel主要职责就是
数据变化后更新视图,视图变化后更新数据
它有两个重要的部分Observer(监听器)、Compiler(解析器)
监听器对所有的数据属性进行监听,
解析器对每个元素节点进行扫描,替换数据以及绑定相应的更新数据


vue中的el代表什么?

vue中的el代表Vue实例挂载的元素节点
(值可以是css选择器,id选择器)


vue-router是什么?有哪些组件?

Vue Router 是 Vue的路由管理器。它和 Vue的核心深度集成,让构建单页面应用更加容易。
<router-link>和<router-view>和<keep-alive>


怎么定义vue-router的动态路由?怎么获取传过来的值?

动态路由的创建,主要是使用path属性过程中使用动态路径参数,用冒号设置参数名

{
  path: '/jdb/:id'
  name: 'jdb'
  components: jdb
}

访问jdb目录下的文件,如果jdb/a1,jdb/a2等,都会映射到jdb组件上
参数值会被设置到this.$route.params下,通过这个属性就可以获取动态参数了

console.log(this.$route.params.id)

vue父组件向子组件传递数

props


子组件向父组件传递事件

$emit
$refs
props的函数闭包用法


vue如何获取dom

给dom元素加ref=‘refname’,然后通过this.$refs.refname进行获取dom元素


为什么用key

给每个dom元素加上key作为唯一标识 ,使页面渲染更加迅速。虽然index也是下标
但key是给每一个vnode的唯一id,可以依靠key,更准确, 
更快的拿到oldVnode中对应的vnode节点。所以渲染更快


vue在双向数据绑定是如何实现的?

vue双向数据绑定是通过数据劫持、组合、发布订阅模式的方式来实现的,
也就是说数据和视图同步,数据发生变化,视图跟着变化,
视图变化,数据也随之发生改变
核心:关于vue双向数据绑定,其核心是Object.defineProperty()方法


什么是 vue 生命周期?有什么作用?

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,
需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。
同时在这个过程中也会运行一些叫做 生命周期钩子 的函数,
用户可以在不同的阶段根据不同的需求添加相应的代码


第一次页面加载会触发哪几个钩子?

beforeCreate, created, beforeMount, mounted


对vue生命周期的理解

总共分为8个阶段
创建前/后,
载入前/后,
更新前/后,
销毁前/后。

创建前/后: 在beforeCreated阶段,vue实例的挂载元素$el和数据对象data都为undefined,
还未初始化。

在created阶段,vue实例的数据对象data有了,$el还没有。

载入前/后:在beforeMount阶段,vue实例的$el和data都初始化了,
	但还是挂载之前为虚拟的dom节点,data.message还未替换。
	在mounted阶段,vue实例挂载完成,data.message成功渲染。

更新前/后:当data变化时,会触发beforeUpdate和updated方法。

销毁前/后:在执行destroy方法后,对data的改变不会再触发周期函数。

vuex是什么?

vuex是对vue提供全局状态管理系统,用于组件之间的数据共享和缓存


vuex有哪几种属性?

有五种,State、 Getter、Mutation 、Action、 Module
state: 基本数据(数据源存放地)
getters: 从基本数据派生出来的数据
mutations : 提交更改数据的方法,同步!
actions : 像一个装饰器,包裹mutations,使之可以异步。
modules : 模块化Vuex


vue 事件中如何使用 event 对象?

获取事件对象,方法参数传递 $event 。注意在事件中要使用 $ 符号
<button @click="Event($event)">事件对象</button>


Vuex 页面刷新数据丢失怎么解决?

需要做 vuex 数据持久化,一般使用本地储存的方案来保存数据,
可以自己设计存储方案,也可以使用第三方插件。
推荐使用 vuex-persist (脯肉赛斯特)插件,
它是为 Vuex 持久化储存而生的一个插件。不需要你手动存取 storage,
而是直接将状态保存至 cookie 或者 localStorage中。


为何组件 data 必须是一个函数?

防止组件重用的时候导致数据相互影响。根本上 .vue 文件编译出来是一个类,这个组件是一个class,我们在使用这个组件的时候相当于对class 实现实例化,在实例化的时候执行data,如果 data不是函数的话拿每个组件的实例结果都一样了,共享了,如果 data不是函数的话在一个地方改了,另一个地方也改了。如果data是函数在左边实例化一个右边实例化一个都会执行这个函数,这两个data都在闭包中,两个不会相互影响


前端三件套、web前端基础

元素的分类

元素分为inline(行内元素)、block(块元素)、inline-block(行内块元素)、flex(弹性元素),

其中flex弹性元素更加灵活


flex弹性布局

当一个元素的类型被改为flex   ---   display:flex;
我们管这个元素称为flex容器
在这个容器里float失效
内部的div容器不会独占一行了(布局会更加简单)
justify-content:flex-start(开始对齐--内容在左侧--默认)
justify-content:flex-end(结尾对齐--内容在右侧)
justify-content:center(中心对齐--内容居中)
justify-content:space-between(两端对
### uni-app 常见面试题及解答 #### 什么是 uni-appuni-app 是一个基于 Vue.js 的跨平台开发框架,允许开发者编写一次代码并将其部署到多个平台上,包括微信小程序、H5、App 和其他主流的小程序生态。它通过抽象不同平台的 API 差异,提供了一套统一的语法和接口[^1]。 #### uni-app 支持哪些平台? uni-app 支持多种平台,主要包括但不限于以下几种: - 微信小程序 - 支付宝小程序 - 百度小程序 - 字节跳动小程序 - H5 页面 - Android 应用 - iOS 应用 这些平台的支持使得 uni-app 成为了一个多端适配的强大工具[^2]。 #### 如何实现页面跳转? 在 uni-app 中,可以使用 `uni.navigateTo` 或者 `uni.redirectTo` 方法来进行页面跳传。两者的区别在于者会保留当页面栈,而后者则会关闭当页面再跳转至目标页面。以下是具体的代码示例: ```javascript // 跳转到新页面并保留当页面 uni.navigateTo({ url: '/pages/targetPage/targetPage' }); // 关闭当页面并跳转到指定页面 uni.redirectTo({ url: '/pages/targetPage/targetPage' }); ``` 上述方法适用于小程序环境下的页面切换操作[^3]。 #### uni-app 中如何处理数据绑定? 类似于 Vue.js,uni-app 使用双大括号语法进行模板中的数据绑定。例如,在组件中可以通过如下方式展示动态变量的内容: ```html <view>{{ message }}</view> ``` 其中 `message` 变量定义于脚本部分的数据对象内。此外还支持 v-model 实现双向绑定功能,方便表单输入控件与模型之间的同步更新[^4]。 #### 性能优化有哪些技巧? 对于性能优化方面可以从以下几个角度入手: 1. **减少不必要的 DOM 操作**:尽量利用虚拟 DOM 提升渲染效率; 2. **按需加载资源文件**:避免一次性引入过多静态素材增加首屏耗时; 3. **合理设置缓存策略**:针对图片或其他外部链接采用本地存储机制降低服务器压力; 4. **压缩传输包大小**:移除无用依赖项并通过打包工具精简最终产物体积[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值