No113.精选前端面试题,享受每天的挑战和学习

news2024/12/27 1:50:12

在这里插入图片描述

文章目录

    • 怎样理解 Vue 的单向数据流
    • 说下MVVM
    • 说下cookie
    • Vue 的性能优化
    • Cookie、localStorage 和 sessionStorage
    • Vue中的computed属性和watch属性有什么区别?

怎样理解 Vue 的单向数据流

在Vue中,单向数据流是指数据在Vue组件中的传递方向是有限制的,只能从父组件向子组件传递。这意味着父组件可以通过props属性将数据传递给子组件,而子组件不能直接修改父组件中的数据

具体来说,当父组件的数据发生变化时,Vue会自动将变化的数据传递给子组件,子组件会接收到新的数据并进行更新。这样实现了数据的单向流动,即从父组件流向子组件。子组件只能根据接收到的数据进行展示或者进一步传递给其他子组件,但不能直接修改父组件的数据。

这种单向数据流的特性使得数据在Vue应用中更加可维护和可预测。通过明确的数据流动方向,我们可以更容易地追踪数据的变化和调试代码。同时,这也有助于组件间的解耦,每个组件只关注自己负责的数据和逻辑,提高了代码的复用性和可读性。

然而,需要注意的是,虽然子组件不能直接修改父组件的数据,但父组件可以通过事件的方式来监听子组件的变化并做出相应的响应。这样可以实现子组件向父组件传递数据的需求。此外,还可以通过Vue提供的一些高级特性如Vuexprovide/inject来实现更复杂的数据交互。

说下MVVM

MVVM(Model-View-ViewModel)是一种软件架构模式,用于将用户界面(UI)和业务逻辑进行分离。它是Model-View-Controller(MVC)模式的一种变体。

在这里插入图片描述

在MVVM模式中,有三个主要的组件:

  1. Model(模型):表示应用程序的数据和业务逻辑。它通常包括从后端获取的数据、数据的验证和处理逻辑等。

  2. View(视图):显示用户界面,展示数据给用户,并允许用户与应用程序进行交互。它通常是用户界面中的HTML、XML或其他标记语言。

  3. ViewModel(视图模型):连接模型和视图,并负责处理视图逻辑。它起到了控制器的作用,但它更加关注数据绑定和状态同步。ViewModel通过观察模型的变化,并将该变化反映到视图上。它也处理用户输入的事件,并将其转发给模型进行处理。

MVVM的核心思想在于数据绑定。通过数据绑定,ViewModel将模型的状态绑定到视图上,并确保两者保持同步。这种双向的数据绑定使得应用程序的开发变得更加容易,同时也简化了UI逻辑的编写。

MVVM模式提供了许多优点,包括降低代码的耦合度、可重用性、测试性和维护性等。它特别适用于大型、复杂的UI应用程序。

一些流行的前端框架,如Vue.js和Knockout.js,就是基于MVVM模式构建的。它们提供了数据绑定和视图模型的概念,使得开发者可以更方便地使用MVVM来构建现代化的Web应用程序。

在这里插入图片描述

说下cookie

  1. 简介

    • Cookie是存储在用户计算机上的小型文本文件,用于跟踪和存储与用户相关的信息。
  2. 特点

    • 存储在用户计算机上,由浏览器自动管理
    • 最大大小限制为4KB
    • 可以设置过期时间,可以是会话级别或长期存储
    • 每个域名和路径都有自己的Cookie空间
  3. 属性介绍

    • Name(名称):Cookie的名字,用于标识和访问特定的Cookie
    • Value(值):与Cookie关联的具体信息,可为字符串或其他数据类型
    • Domain(域):Cookie有效的域名,控制该Cookie能被哪些域名访问
    • Path(路径):Cookie的有效路径,控制该Cookie能被哪些URL路径访问
    • Expires(过期时间):Cookie的过期时间,过期后自动删除
    • Secure(安全):是否只在HTTPS协议下传输Cookie
    • HttpOnly(仅HTTP):设置后,Cookie无法通过客户端的JavaScript访问
  4. 优点

    • 跨页面状态的保持:通过Cookie可以在不同页面之间传递和存储状态信息。
    • 个性化用户体验:Cookie可以用于存储用户偏好、登录状态等信息,提供个性化的服务。
    • 前后端通信:Cookie可以被服务器读取,用于身份认证、会话管理等。
  5. 缺点

    • 安全性问题:Cookie中的信息不加密,可能被恶意利用。容易受到XSS和CSRF等攻击。
    • 存储空间限制:Cookie大小有限制,无法存储大量数据。
    • 隐私问题:Cookie可被机构追踪使用者的行为,引发隐私争议。
  6. 应用场景

    • 用户登录与身份验证
    • 购物车和电子商务应用
    • 个性化网站体验
    • 记住用户偏好设置
    • 追踪和分析用户行为

Vue 的性能优化

Vue 的性能优化可以从多个方面入手:
  1. 减少不必要的响应式数据:避免将大量数据添加到 Vue 的响应式系统中,只把需要在模板中使用的数据进行响应式处理。

  2. 合理使用计算属性和 watch:将一些复杂的计算逻辑放在计算属性中,使用 watch 监听到需要时再执行计算,避免每次数据变化都执行计算。

  3. 避免频繁的 DOM 操作:Vue 的虚拟 DOM 在更新时会进行 Diff 算法优化,但频繁地更新 DOM 仍然会有性能损耗,所以尽量通过数据驱动视图的方式,减少直接操作 DOM。

  4. 合理使用 v-if 和 v-for:v-if 和 v-for 在使用上需要注意,v-if 可以在条件不满足时减少 DOM 的渲染,而 v-for 在遍历大量数据时需要尽量避免直接操作 DOM。

  5. 异步组件和路由懒加载:对于一些大型的页面或组件,可以使用异步组件或路由懒加载,按需加载页面或组件,减少初始加载的资源大小。

  6. 使用 Vue Devtools 进行性能分析:Vue Devtools 是一款用于调试和性能分析 Vue 应用程序的 Chrome 浏览器扩展。可以通过它来分析组件的渲染、更新等性能指标,找到性能瓶颈并进行优化。

Cookie、localStorage 和 sessionStorage

CookielocalStoragesessionStorage
存储容量4KB5MB - 10MB5MB - 10MB
存储期限可设置过期时间永久性或手动删除当前会话期间
同源策略受同源策略限制受同源策略限制受同源策略限制
是否发送至服务器
数据类型仅能存储字符串可以存储字符串、数字、对象等数据类型可以存储字符串、数字、对象等数据类型
相对安全性中等较高会话级别的安全性
访问权限同一域名下的所有页面都可见及修改同一域名下的所有页面都可见及修改同一窗口或标签页内可见及修改
用途跟踪用户会话,身份验证等持久保存数据,本地缓存等临时保存数据,表单数据恢复等

Vue中的computed属性和watch属性有什么区别?

在这里插入图片描述

在Vue中,computed属性和watch属性都是用来监听数据的变化,但它们在用途和使用方式上有一些区别。

1. computed属性:

  • computed属性是基于它的依赖进行缓存的。也就是说,只有当依赖发生变化时,computed属性才会重新计算,否则会直接返回之前缓存的结果。这样可以避免不必要的重复计算,提高性能。

  • computed属性定义为一个函数,在使用时可以像访问普通属性一样直接使用它。Vue会在computed属性的函数内部自动创建一个依赖追踪,它会记录computed属性所依赖的数据。当依赖的数据发生改变时,Vue会自动重新计算computed属性的值。

  • computed属性一般用于计算、处理、过滤数据等场景,它更适合用于对数据的实时变化进行响应,同时通过缓存机制避免重复计算。它由于自动缓存的特性,可以在模板中多次使用而不用担心性能问题。

2. watch属性:

  • watch属性监听一个特定的数据,当这个数据发生变化时,对应的回调函数会被触发。与computed属性不同,watch不会缓存计算结果,它会在每次数据变化时执行回调函数。

  • watch属性定义为一个对象,对象的键是要监听的数据,值是一个回调函数。当被监听的数据发生变化时,回调函数会被执行,并传入新值和旧值两个参数。

  • watch属性一般用于监听和响应一个特定的数据变化,通常会有一些副作用,比如发起异步请求、处理复杂的逻辑,或者更新其他依赖的数据等。

何时使用computed属性:

  • 当需要对一个或多个数据进行计算、处理、过滤或格式化时;
  • 当计算结果被多次使用,并且不希望每次都重新计算;
  • 当计算结果依赖的数据发生变化时,希望自动更新计算结果。

何时使用watch属性:

  • 当需要监听一个特定的数据变化,并在变化发生时执行一些操作;
  • 当需要在数据变化时进行一些副作用操作,比如发起异步请求、处理复杂的逻辑、更新其他依赖的数据等。

需要注意的是,computed属性和watch属性虽然在功能上有重叠,但在使用时要根据具体的场景和需求选择合适的方式。在数据量大或计算逻辑复杂的情况下,computed属性更具优势;而对于需要监听特定数据变化并做出响应的情况,使用watch属性更为合适。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/899953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Vscode调试shell脚本

在vcode中安装bash dug插件 在vcode中添加launch.json配置,默认就好 参考:http://www.rply.cn/news/73966.html 推荐插件: shellman(支持shell,智能提示) shellcheck(shell语法检查) shell-format(shell格式化)

【文化课学习笔记】【化学】金属及其化合物

【化学】必修一:金属及其化合物 钠及其化合物 钠单质 物理性质 颜色:银白色,有金属光泽;密度:\(\mathrm{\rho_{H_2O}>\rho_{Na}>\rho_{煤油}}\)(钠可以在煤油中进行保存);熔点:低于 \(100…

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)。 一个新项目,后端使用 PHP 实现,前端不做路由,提供一个模板,由后端路由控制。 Route::get(pages/{name}, [\App\Http\Controllers\ResourceController::class, getResourceVersion])

如何在工作中利用AIGC提质增效?

引言 人工智能技术快速发展,以 ChatGPT 为代表的新的人工智能语言模型的出现与更迭,引发人们极大的兴奋和关注。越来越多的企业开始将 AI 技术应用到生产流程,以提高工作效率和生产力。AIGC(AI Generated Content)是人…

文本生成解码策略 Beam Search, top_k, temperature

一、从Greedy Search到Beam Search Greedy search是指在每个t时刻选择下一个词时,根据 wtargmaxwP(w|w1:t−1)选择概率最高的词。 以上图为例: 从单词“The”开始,算法在选择下一个词时,贪心的选择了概率最高的“nice”&#xf…

2023-8-15 差分

题目链接&#xff1a;差分 #include <iostream>using namespace std;const int N 100010;int n, m; int a[N], b[N];void insert(int l, int r, int c) {b[l] c;b[r 1] - c; }int main() {scanf("%d%d", &n, &m);for(int i 1; i < n; i)scanf…

“鸿蒙”商标被抢先注册,华为上诉失败,鸿蒙系统将被迫改名?

作为我国最著名的手机通讯企业之一&#xff0c;华为凭借着无与伦比的创新设计与可靠实用的用户体验&#xff0c;一度成为了国内最受欢迎的手机品牌。此外&#xff0c;华为手机在海外市场的销量也不遑多让&#xff0c;不仅质量优异&#xff0c;在通讯的稳定性与可靠性上&#xf…

韦东山老师 RTOS 入门课程(一)RTOS 介绍,熟悉裸机的汇编逻辑

韦东山老师 RTOS 入门课程 课程链接&#xff1a;韦东山直播公开课&#xff1a;RTOS实战项目之实现多任务系统 第1节&#xff1a;裸机程序框架和缺陷_哔哩哔哩_bilibili RTOS 介绍 裸机&#xff1a;固定顺序执行。 中断&#xff1a;可以一直专心做循环里的事情&#xff0c;直…

林【2017】

一、判断 二、单选 三、填空 四、应用 五、算法设计

C++笔记之左值与右值、右值引用

C笔记之左值与右值、右值引用 code review! 文章目录 C笔记之左值与右值、右值引用1.左值与右值2.右值引用——关于int&& r 10;3.右值引用——对比int&& r 10;和int& r 10;4.右值引用&#xff08;rvalue reference&#xff09;的概念 1.左值与右值 2.…

Jmeter 分布式性能测试避坑指南

在做后端服务器性能测试中&#xff0c;我们会经常听到分布式。那你&#xff0c;是否了解分布式呢&#xff1f;今天&#xff0c;我们就来给大家讲讲&#xff0c;在企业实战中&#xff0c;如何使用分布式进行性能测试&#xff0c;实战过程中&#xff0c;又有哪些地方要特别注意&a…

stm32单片机开关输入控制蜂鸣器参考代码(附PROTEUS电路图)

说明&#xff1a;这个buzzer的额定电压需要改为3V&#xff0c;否则不会叫&#xff0c;源代码几乎是完全一样的 //gpio.c文件 /* USER CODE BEGIN Header */ /********************************************************************************* file gpio.c* brief Thi…

【Azure API 管理】APIM如何实现对部分固定IP进行访问次数限制呢?如60秒10次请求

问题描述 使用Azure API Management, 想对一些固定的IP地址进行访问次数的限制&#xff0c;如被限制的IP地址一分钟可以访问10次&#xff0c;而不被限制的IP地址则可以无限访问&#xff1f; ChatGPT 解答 最近ChatGPT爆火&#xff0c;所以也把这个问题让ChatGPT来解答&#x…

Python可视化在量化交易中的应用(14)_Seaborn散点图

Seaborn中带回归线的散点图的绘制方法 seaborn中绘制散点图使用的是sns.scatterplot()函数&#xff1a; sns.scatterplot(x,y,hue,style,size,data,palette,hue_order,hue_norm,sizes,size_order,size_norm,markers,style_order,x_bins,y_bins,units,estimator,ci95,n_boot100…

wazuh部署

文章目录 1.ova文件获取2.VMware导入ova文件3.wazuh目录文件4.wazuh解析原理 1.ova文件获取 访问官网 https://wazuh.com/依次点击红色标注将文件下载到本地 2.VMware导入ova文件 直接打开下载到本地的ova文件 设置导入的位置和名称 初始密码账户为wazuh-user:wazuh …

手写模拟SpringBoot核心流程(一):实现极简一个SpringBoot——模拟SpringBoot启动过程

前言 Spring Boot 是一个开源的框架&#xff0c;用于简化 Spring 应用程序的开发和部署。它建立在 Spring Framework 的基础上&#xff0c;内置了web服务器——tomcat和jetty&#xff0c;使得 Spring 应用的构建变得更加快速、简单和可维护。 本文通过实现一个SpringBoot&…

Global Illumination_Exponential Variance Shadow Maps(EVSM)

最近工程中需要集成高质量阴影&#xff08;效率、效果&#xff09;&#xff0c;介于项目非循环渲染所以CSM无法使用&#xff0c;但动态建模中还需要快速增删改场景&#xff0c;阴影还必须重新生成&#xff0c;奈何之前简单SMPCF无法满足效率、效果要求&#xff0c;于是调研RVT等…

十、Linux的root用户、用户和用户组的问题

目录 1、Linux的root用户 &#xff08;1&#xff09;基础 &#xff08;2&#xff09;如何进入root模式 &#xff08;3&#xff09;如何给普通用户配置root权限&#xff1f; 注意点&#xff1a; 配置方法&#xff1a; 2、用户/用户组问题 &#xff08;1&#xff09;用户/用…

【网络安全必看】如何提升自身 WEB 渗透能力?

前言 web 渗透这个东西学起来如果没有头绪和路线的话&#xff0c;是非常烧脑的。 理清 web 渗透学习思路&#xff0c;把自己的学习方案和需要学习的点全部整理&#xff0c;你会发现突然渗透思路就有点眉目了。 程序员之间流行一个词&#xff0c;叫 35 岁危机&#xff0c;&am…

宁德时代与陕汽签署十年战略合作协议,助力商用车电动化进程

据报道&#xff0c;宁德时代新能源科技股份有限公司与陕西汽车控股集团有限公司已经签署了一项为期十年的战略合作协议。双方的合作旨在推动商用车电池技术的发展&#xff0c;并面向商用车全领域应用。 这次战略合作具有重要意义&#xff0c;为宁德时代和陕汽启动了全面合作的序…