前端问题整理

Vue

  1. vue mvvm(Model-View-ViewModel)架构模式原理

    • Model 是数据层,即 vue 实例中的数据
    • View 是视图层, 即 dom
    • ViewModel,即连接Model和Vue的中间层,Vue实例就是ViewModel
    • ViewModel 负责将 Model 的变化反映到 View 上,同时也监听 View 的变化并反映到 Model 上,实现了双向数据绑定。
  2. 组件传参方式有哪些?

    • props和emit

    • 插槽

    • $refs

    • event-bus $emit $on

    • vuex和pinia

    • 路由传参

    • 本地储存

  3. 什么是vue实例?

    vue实例包含了数据、模板、方法等属性,负责处理视图的渲染和交互逻辑

  4. computed和watch原理

    计算属性 (computed) 的原理:

    计算属性是 Vue 中用于派生数据的一种方式,它的原理如下:

    依赖追踪:当在计算属性中使用响应式数据时,Vue 会自动建立一个依赖关系。这意味着计算属性知道哪些响应式数据影响了它的值。

    缓存:计算属性会缓存它的计算结果,只有当依赖的响应式数据发生变化时,才会重新计算。这样可以避免不必要的计算,提高性能。

    懒计算:计算属性只在实际需要时才会计算,这意味着只有当计算属性被访问时,它才会执行计算逻辑。

    自动更新:当依赖的响应式数据发生变化时,与之相关的计算属性会自动重新计算其值,并确保界面上相应的数据也会更新。

    监听属性 (watch) 的原理:

    监听属性用于监视响应式数据的变化,并执行副作用代码,其原理如下:

    侦听变化:当你在 Vue 实例中定义一个 watch 属性,你可以指定要监听的响应式数据。

    回调函数:你可以为每个被监听的数据定义一个回调函数。当被监听的数据发生变化时,这些回调函数会被触发执行。

    异步执行:Vue 默认会在数据变化后异步执行 watch 回调函数,以避免阻塞主线程。

    取消监听:你可以通过调用 unwatch 或 unwatchAll 方法来取消对响应式数据的监听。

  5. vue双向绑定原理

    Object.defineProperty(obj 要定义/修改的属性的对象, prop 要定义/修改的属性名, descriptor 具体的方法)

    <script type="text/javascript">
        var obj = {};
        Object.defineProperty(obj, 'txt', {
            get: function() {
                return obj;
            },
            set: function(val) {
                document.getElementById("txt").value = val;
                document.getElementById("show").innerText = val;
            }
        })
        document.addEventListener("keyup", function (e) {
            obj.txt = e.target.value;
        })
    </script>
    
  6. $nextTick

    DOM 更新之后执行回调函数

    新增表格输入框自动聚焦

  7. vue2和vue3的差异

    • setup相当于整合了beforeCreate和created
    • 移除了一些修饰符
    • ref reactive
    • 源码使用typescript进行重构,vue对typescript支持更加友好了
    • 样式穿透 v-deep
    • 插槽

useState
const [count,setCount] = useState
useEffect

useCallback
memo
useMemo
useRef
useReducer
useContext

首页加载优化
  • 路由懒加载
  • 组件按需引入
  • 打包配置externals分离资源库
  • cdn引入第三方库
  • gzip压缩
  • js资源异步加载延迟执行
  • css放头部、js放底部
  • 白屏配合骨架图、loading
  • 服务端渲染,ssr技术,next.js
网页性能优化
  • 网络请求优化

  • 资源精简优化

  • 渲染优化

  • 图片优化

    图片懒加载

  • 代码优化

    组件化、模块化、代码复用

webpack
  • tree shaking 代码分割
  • dllPlugin 分离打包
  • hotModuleReplscementPlugin 热更新
  • HtmlWebpackPlugin 生成入口html文件

react 新版本不同的东西
es6
react mome 怎么使用
父子传参 互相调用方法
webpack
首页加载
css选择器
flex:1使用条件

浏览器兼容、分辨率适配
  • css兼容:reset.css

    *{margin:0;padding:0;)}

  • 加浏览器前缀兼容

  • 设置统一字体:ttf字体包

  • 媒体查询

  • 百分比

  • em、rem

统计数组中每项出现的次数
let arr = [2, 3, 4, 2, 0, 1, 3, 2, 2, 9, 7, 100]
let obj = {}
for(var i = 0; i < arr.length; i++) {
    let key = arr[i]
    // 三元运算符判断
    obj[key] == undefined ? obj[key] = 1 : obj[key]++
}
console.log(obj);

后端获取数据到渲染
输入react 新版本不同的东西
url到页面显示过程
重绘,回流和重排
json深拷贝缺点
rem em vw vh
扩展运算原理

输入url地址到浏览器显示页面发生了什么
  • DNS对域名进行解析

  • 建立TCP连接(三次握手) 我要xxx=>确定吗?=>确定

  • 发送请求

  • 返回结果

  • 解析 HTML: 浏览器解析 HTML 并构建 DOM 树。

  • 解析 CSS: 浏览器解析 CSS 文件并构建 CSSOM 树。

  • 合并 DOM 和 CSSOM: 将 DOM 树和 CSSOM 树合并成渲染树(Render Tree)。

  • 布局(Layout): 根据渲染树计算每个元素的大小和位置,生成布局(Layout)。

  • 绘制(Paint): 将布局绘制到屏幕上。

  • 重绘与重排: 当页面的样式或布局发生变化时,浏览器会触发重绘(Repaint)和重排(Reflow),其中重排会引起布局的重新计算,性能开销较大,应尽量避免。

  • 在这里插入图片描述

iframe缺点
  • 不利于seo优化
  • 移动设备兼容性差
  • 阻塞主页面onLoad
  • 前进返回问题

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud学习笔记 - 1、Boot和Cloud版本选型

文章目录 前言需要&#xff08;学习/用到&#xff09;的技术SpringBoot版本的选择我们为什么要使用 Java 17&#xff0c;以及SpringBoot 3.2 呢&#xff1f; SpringCloud 版本的选择SpringCloud 命名规则Springcloud Alibaba 版本的选择如何确定Boot&#xff0c;Cloud&#xff…

SQL中distinct去重关键字的使用和count统计组合的使用

文章目录 SQL中distinct的使用1、distinct作用于单列2、distinct作用于多列3、 count()、distinct组合使用conut扩展知识 SQL中distinct的使用 1、distinct作用于单列 语法&#xff1a; select distinct 列名 from 表&#xff1b; distinct必须在列的前面&#xff0c;否则直…

大语言模型LLM-三种模型架构

Transformer transfomer可以并行地计算&#xff1f; transformer中encoder模块是完全并行的&#xff0c;而decoder不是完全并行的。 模型结构 使用原文表达如下&#xff1a;the encoder maps an input sequence of symbol representations \((x_1, x_2, \cdots, x_n)\) to …

ICRA 2024:基于视觉触觉传感器的物体表⾯分类的Sim2Real双层适应⽅法

⼈们通常通过视觉来感知物体表⾯的性质&#xff0c;但有时需要通过触觉信息来补充或替代视觉信息。在机器⼈感知物体属性⽅⾯&#xff0c;基于视觉的触觉传感器是⽬前的最新技术&#xff0c;因为它们可以产⽣与表⾯接触的⾼分辨率 RGB 触觉图像。然⽽&#xff0c;这些图像需要⼤…

tmega128单片机控制的智能小车设计

第1章 绪论1.1 选题背景和意义 自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一…

六西格玛培训,让企业焕然一新,迎接新挑战!

在当今快速变革的商业环境中&#xff0c;企业要保持竞争力&#xff0c;就必须不断进化、优化和创新。而六西格玛培训&#xff0c;正是这一进化过程中的核心驱动力。 六西格玛培训不仅仅是一系列的技术和工具&#xff0c;更是一种深入骨髓的质量文化和持续改进的哲学。通过专业…

微服务架构 | nacos - [自动刷新配置方式 失效排查]

INDEX 1 配置方式1.1 springboot 配置1.2 springcloud 配置 2 失效排查2.1 常见失效场景2.1.1 配置不配套2.1.2 自动刷新未开启2.1.3 依赖冲突2.1.4 改错了配置文件 2.2 未知情况关键排查点 1 配置方式 nacos 的配置中心主要有两套配置方式&#xff0c;配置方式不互相共通&…

Qt绘图项目 - 简易表盘

发话少说&#xff0c;放码过来 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();prot…

lammps聚合物断键拉伸模拟

本文介绍聚合物的断键拉伸。 在lammps模拟中&#xff0c;所有的键默认是永久存在的&#xff0c;非正常情况下&#xff0c;不能断开&#xff0c;否则会产生"bond atoms missing”错误。 聚合物的拉伸模拟过程中&#xff0c;聚合物链并没有被拉断&#xff0c;而只是把不同的…

探索Vue.js中的文件夹上传解决方案:vue-simple-uploader

在现代Web应用开发中&#xff0c;文件上传是一个常见需求。然而&#xff0c;随着应用复杂性的增加&#xff0c;传统的文件上传方式可能无法满足所有需求&#xff0c;特别是当涉及到文件夹上传和大文件处理时。本文将介绍一个基于Vue.js的解决方案——vue-simple-uploader&#…

小程序使用接口wx.getLocation配置

开通时需详细描述业务&#xff0c;否则可能审核不通过 可能需要绑定腾讯位置服务&#xff0c;新建应该&#xff0c;绑定到小程序 配置 权限声明&#xff1a;在使用wx.getLocation前&#xff0c;需要在app.json的permission字段中声明对用户位置信息的使用权限&#xff0c;并提…

Unity基础(一)unity的下载与安装

目录 一:下载与安装 1.官网下载地址 2.推荐直接下载UnityHub 3.选择编辑器版本(推荐长期支持版) 4.在UnityHub安装选择相应的模块 二:创建项目 简介: Unity 是一款广泛应用的跨平台游戏开发引擎。 它具有以下显著特点&#xff1a; 强大的跨平台能力&#xff1a;能将开发的游…

Linux系统安装ODBC驱动,统信服务器E版安装psqlodbc方法

应用场景 硬件/整机信息&#xff1a;AMD平台 OS版本信息&#xff1a;服务器e版 软件信息&#xff1a;psqlodbc 12.02版本 功能介绍 部分用户在使用etl工具连接数据库时&#xff0c;需要使用到odbc驱动&#xff0c;下面介绍下服务器e版系统中编译安装此工具的相关过程。 E…

借助大语言模型快速学习金仓数据库 KES

基础概念 KES 人大金仓数据库管理系统 KingbaseES&#xff08;KES&#xff09; 是由 北京人大金仓信息技术股份有限公司 (以下简称“人大金仓”)自主研发的面向全行业、全客户关键应用的企业级大型通用数据库管理系统。产品融合了人大金仓在数据库领域几十年的产品研发和企业级…

XML文件

1.XMl&#xff08;EXtensible Markup Language 可扩展标记语言&#xff09; 本质是一种数据的格式,可以用来存储复杂的数据结构&#xff0c;和数据关系 2.XML的特点 XMl中的“<标签名>”称为一个标签或一个元素,一般是成对出现XML中的标签名可以自己定义,但必须要正确…

WINUI——Trigger(触发器)使用小结

背景 WINUI不提供原生的Trigger支持&#xff0c;推荐使用VisualStateManager进行操作&#xff1b;然对于从WPF转WINUI的开发人员而言&#xff0c;经常会想用Trigger解决问题&#xff0c;鉴于此社区推出了CommunityToolkit.WinUI.Triggers以支持Trigger的使用。 使用方法 1.项…

JS实现文字溢出隐藏效果

需求场景 由于项目原因&#xff0c;经常需要使用到canvas来将dom生成为图片供用户保存&#xff0c;但canvas的css属性&#xff08;例如本文实现的文字溢出隐藏效果&#xff09;支持并不全面&#xff0c;所有有些功能只能用JS来实现了 实现思路 用JS循环判断填充文本后的元素…

NSS题目练习9

[极客大挑战 2020]welcome 界面打开后一片空白&#xff0c;查看题目描述&#xff0c;翻译过来是 1.除了GET请求方法&#xff0c;还有一种常见的请求方法… 2.学习一些关于sha1和array的知识。 3.更仔细地检查phpinfo&#xff0c;你会发现标志在哪里。 补充&#xff1a; sh…

基于MATLAB仿真的BCC卷积码维特比译码算法

&#x1f9d1;&#x1f3fb;个人简介&#xff1a;具有3年工作经验&#xff0c;擅长通信算法的MATLAB仿真和FPGA实现。代码事宜&#xff0c;私信博主&#xff0c;程序定制、设计指导。 &#x1f680;基于MATLAB仿真的BCC卷积码维特比译码算法 目录 &#x1f680;1.BCC卷积码概…

WebGIS开发:你还在纠结的10大问题合集!

问题1&#xff1a;GIS开发到底是学Java还是Python&#xff1f; Java是后端语言&#xff0c;Python更重数据分析和算法。 假设通常说的GIS开发是指Webgis&#xff0c;Web就是指网页端&#xff0c;所以我们说的GIS开发大部分情况下是指网页端的地图可视化开发。 GIS开发需要学…