什么是 MVVM、mvc 模型?
MVVM 是通过分离数据、视图和逻辑,使得前端开发更模块化、可维护,并提高开发效率的设计模式。
常用的vue指令,修饰符
vue指令: v-bind、v-model、v-on、v-if
修饰符:.stop .once .prevent
vue父子组件的通信
父传子组件 子组件通过 props 来接收
子传父通过自定义事件($emit)自定义事件传递
数组的操作
arr.push(4);// 末尾添加,返回新长度
arr.pop();// 删除末尾,返回被删元素
arr.unshift(0);// 头部添加,返回新长度
arr.shift();// 删除头部,返回被删元素
arr.splice(2,1,'a','b');// 从索引2开始删除1个,插入'a','b'
变量的声明差异
var 是函数作用域,且变量提升,可能会导致不易察觉的错误。
let 和 const 是块级作用域,支持更严格的变量管理,且不在提升阶段初始化。
const 用于声明常量,不能被重新赋值,而 let 则可以重新赋值。
let 和 const 的块级作用域特点使它们在闭包和循环中表现得更加符合预期。
浏览器缓存的不同
Cookie 数据会随请求发送到服务器,而 LocalStorage 仅在浏览器端可用
Cookie 大小限制为 4KB,LocalStorage 约 5MB
Cookie 可设置路径和域名,LocalStorage 仅与当前域名关联
vue路由的实现原理
Vue Router 的核心原理是通过定义路由表、监听浏览器地址的变化、匹配路由并渲染组件,来实现页面的切换
v-model的原理
v-model在表单控件上的工作原理可以分为两个部分:
属性绑定:使用v-bind指令将Vue实例的数据绑定到表单元素的value属性上。
事件监听:使用v-on指令监听表单元素的input事件,当用户输入时,将新的值赋给绑定的数据。
vue3 为什么使用proxy
1、defineProperty 局限性,只能针对单例属性做监听。
2、Vue2 中对data中的属性,做了遍历和递归,为每个属性设置了getter和setter
3、这样就导致VUE只能对data中预定义过的属性做出响应的原因
4、如果直接添加一个不存在的话,是无法做到setter监听的Proxy 是针对整个对象的,那么对这个对象的所有操作,都会进入监听,就可以代理所5、有的属性带来很大的性能提升和代码优化
6、Proxy可以理解成,对源对象做了一层拦截,外界对这个对象的访问,都必须经过这层拦截,因此提供了一个机制,可以对外界的访问进行过滤和修改
get和post的区别
请求参数长度限制不同,回退和刷新不同、历史记录不同
状态码
一、1xx 信息性状态码
二、2xx 成功状态码
三、3xx 重定向状态码
四、4xx 客户端错误状态码
五、5xx 服务器错误状态码
前端做的性能优化
图片懒加载 减少 dom操作 减少网络请求 异步编程 代码分割 路由懒加载 使用 webp格式
一个html文件到网页上呈现的过程
当用户输入网页地址的时候,浏览器会先查看本地缓存有没有没过期的网页历史,如果没有
就会通过本地DNS服务器来解析出IP地址,当域名和服务器的IP地址匹配上,浏览器就会尝试和服务器建立TCP链接,浏览器先向服务器发起一个申请连接的包,服务器收到后会回复一个同意包,浏览器收到后再回复一个确认的包,此时 TCP 连接就建立成功了。
连接成功后,浏览器会像服务器发起请求,hared,或者get post请求,服务器收到后会给浏览器返回一个包,这个包包含了状态码,浏览器会根据状态码来解开,然后渲染div等dome节点,随后 再加载css 和js这些文件,最后就呈现出了 用户看到的网页。
入一个地址 到浏览器 到呈现内容到页面的过程
1、用户输入 URL
2、 DNS解析
3、建立TCP连接
4、发送http请求
5、服务器响应
6、浏览器开始渲染页面(接收html 渲染html 解析css 绘制)
7、js执行
8、资源加载
9、渲染完成
10、关闭链接