2024-06-27

jquery和vue的区别

jquery是通过选择器查找和操作dom,是单向绑定,需要手动操作dom
vue 是数据响应式,当数据发生变化时自动更新视图,是双向绑定,不需要操作dom

性能优化

路由懒加载 图片懒加载 长列表动态加载
第三方模块按需引入
使用keep-alive缓存组件
压缩图片 雪碧图
防抖节流运用
减少HTTP请求数
精简代码

数组和链表

image.png

数据类型有哪些

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。
引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)
typeof 判断基本类型
instancesof 判断对象是否为某一数据类型的实例
{} instancesof Object
function(){} instancesof Function
construstor 不能判断Null undefined 其他可以
(1).constructor === Number
Object.prototype.toString.call('1')
数组去重

axios get和post的区别

get 参数会显示在网址后面,适合接收数据

axios.get('url?id=123')
axios.get('url',{
  params: {id:123}
}).then(function(response){
  console.log(response)
})

post 更安全,发送的数据量大,适合发送数据

axios.post('url',{
id:123,name:'haha'
}).then(function(response){
  console.log(response)
})

created和mounted的区别

created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。

promise的状态

待定(pending):初始状态,既没有被兑现,也没有被拒绝。
已兑现(fulfilled):意味着操作成功完成。
已拒绝(rejected):意味着操作失败

computed计算属性和watched监听器的区别

Computed具有缓存特性,只有当依赖的数据发生变化时,才会重新计算。
watched不具有缓存属性,每次数据变化时都会触发监听器。
computed不能执行异步任务,必须同步执行。
watched可以执行异步任务,适合处理异步操作
computed直接在模板中使用,返回计算结果。
watch 通过定义回调函数来处理数据变化

深拷贝和浅拷贝

深拷贝|浅拷贝_深拷贝和浅拷贝-CSDN博客

for in, for of, forEach的区别 哪个可以拿到原型上的属性

for in 遍历对象的属性,包括原型链上的属性,如果不想遍历原型链中的属性,可以使用 obj.hasOwnProperty(key)进行过滤
for of 遍历可迭代对象,获取值。 数组、字符串、set、map
forEach是数组的一个方法,遍历数组

跨域 什么情况会产生跨域,如何解决

处于浏览器同源策略的限制,同源策略会阻止一个域的js脚本和另一个域的内容进行交互,所谓同源就是两个页面具有相同的协议、主机和接口号
当浏览器与后端服务器地址不一样就会存在跨域问题。
1.jsonp
2.cors跨域资源共享 服务器端进行配置,前端直接请求服务器
3.中间代理器代理
4.vue的反向代理跨域解决

插槽

插槽就是子组件中的提供给父组件使用的一个占位符,父组件在这个占位符中可以填充任何模板代码

路由模式

history hash

ES6有哪些新特性

箭头函数和普通函数的区别

语法简洁:箭头函数使用箭头(=>)来定义函数,语法更加简洁,省略了function关键字和大括号。例如,(x) => x * 2是一个简单的箭头函数表示的函数表达式,相当于普通函数function(x) { return x * 2; }。

this绑定:箭头函数没有自己的this绑定,它会继承外层作用域的this值。而普通函数的this值是根据调用时的上下文决定的。

arguments对象:箭头函数没有自己的arguments对象,它会继承外层作用域的arguments对象。普通函数则会创建自己的arguments对象。

构造函数:箭头函数不能用作构造函数,不能使用new关键字实例化对象。普通函数可以被用作构造函数创建对象实例。

箭头函数没有原型属性(prototype)。

箭头函数不能通过call()、apply()或bind()方法来改变this的指向。

MVVM是什么

MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。
【模型】指的是后端传递的数据。
【视图】指的是所看到的页面。
【视图模型】mvvm模式的核心,它是连接view和model的桥梁。
它有两个方向:
一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。
二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。
这两个方向都实现的,我们称之为数据的双向绑定。


image.png

二叉树

封装过哪些组件

按钮,输入框,表格,公共提示消息,公共弹窗

flex用过哪些属性

flex-direction 子元素排列方式
justify-content 主轴对齐方式
align-items 子项在交叉轴上的对齐方式
flex-wrap 子项是否换行

子组件如何修改props传过来的值

vue的生命周期

ajax请求一般在哪个生命周期里面

数组的遍历

for 循环:适用于需要手动控制索引或在循环中进行复杂操作的场景。
for...of 循环:适用于需要简洁代码且不需要索引的场景。
forEach:适用于需要对每个元素执行相同操作的场景。
map:适用于需要对数组元素进行转换并生成新数组的场景。
filter:适用于需要筛选符合条件的元素并生成新数组的场景。
reduce:适用于需要对数组元素进行累加或合并操作的场景。
some:适用于需要判断是否存在至少一个满足条件的元素的场景。
every:适用于需要判断所有元素是否都满足条件的场景。
find:适用于需要找到第一个满足条件的元素的场景。
findIndex:适用于需要找到第一个满足条件的元素的索引的场景。

forEach 和filter map的区别

forEach:用于遍历数组中的每个元素,并对其执行指定 的操作。 它没有返回值, 主要用于数组的遍历和对元素 的修改。 例如, 在一个学生成绩数组中, 我们可以使用 forEach_来计算每个学生的平均成绩并打印出来。
map:用于对数组中的每个元素进行转换,返回一个新 的数组。它不会修改原数组。例如,我们可以使用map 将一个数组中的每个元素乘以 2,生成一个新的数组。
filter:用于从数组中过滤出符合特定条件的元素, 返回 一个新的数组。 它不会修改原数组。例如,我们可以使 用 filter 从一个学生数组中过滤出成绩高于某个值的 学生。

数组转换为字符串

join():灵活,可自定义分隔符。
toString():简单,等同于 join(',')。
模板字符串:简洁,适合与其它字符串混合使用。
JSON.stringify():生成标准JSON字符串,适合数据传输和存储。
自定义函数:适用于复杂转换需求。

字符串转换为数组

split():适用于已知分隔符的字符串。
Array.from() 或 split(''):适用于将字符串拆分为字符数组。
JSON.parse():适用于JSON格式的数组字符串。
match():适用于需要正则表达式匹配的复杂场景。
...扩展运算符

深拷贝和浅拷贝

浅拷贝是指在复制对象时,只复制对象的第一层属性。如果对象的属性是引用类型(如对象、数组等),浅拷贝只会复制这些属性的引用,而不是它们的实际内容。因此,源对象和目标对象的这些属性仍然指向同一个内存地址。
Object.assign({}, obj);
扩展运算符
深拷贝是指在复制对象时,不仅复制对象的第一层属性,还递归地复制所有嵌套的对象,确保源对象和目标对象之间完全独立。这样,修改目标对象的嵌套属性不会影响到源对象。
使用JSON.stringify()和JSON.parse()
手写递归

防抖和节流

闭包是干啥的

js的本地存储

localStorage:持久化存储
localStorage是一种持久化存储机制,数据在浏览器关闭后仍然存在,除非被手动清除。它适用于需要长期保存的数据,比如用户的偏好设置、登录状态等。
sessionStorage:会话存储
sessionStorage是一种会话存储机制,数据只在当前会话期间有效。一旦浏览器关闭,数据就会被清除。它适用于需要临时保存的数据,比如表单提交前的缓存、当前页面的浏览历史等。

vue的自定义指令

自定义指令可以通过两种方式注册:全局注册和局部注册。全局注册使用Vue.directive方法,局部注册则在组件的directives选项中进行。
让我尝试写一个简单的自定义指令。假设我想创建一个v-focus指令,当元素被插入到DOM中时,自动获取焦点。这在表单输入中非常有用,特别是当用户第一次访问页面时,焦点自动定位到输入框,提升用户体验。
首先,我需要在Vue实例中注册这个指令。使用Vue.directive方法,第一个参数是指令的名称,第二个参数是一个对象,包含bind、inserted、update等生命周期钩子函数。
在inserted钩子函数中,我可以让元素获取焦点。代码大概是这样的:

Vue.directive('focus', {
  inserted: function (el) {
    el.focus();
  }
});

然后,在模板中使用这个指令:

<input v-focus>

vue的组件通信方式

v-if 和v-show

key的作用

组件缓存,如何使用

弹性盒子

相对定位 绝对定位 固定定位 粘性定位

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.说说你对盒子模型的理解 当对一个文档进行布局(layout)的时候,浏览器的渲染引擎会根据标准之一的 CSS ...
    Ysrenacer1_bcfd阅读 2,198评论 0 19
  • 0 HTML5相关 websocket WebSocket 使用ws或wss协议,Websocket是一个持久化的...
    可爱多小姐阅读 921评论 0 0
  • vue2的: 1.生命周期函数: 1.1 什么是生命周期函数 我理解的生命周期函数就是 vue 实例从创建到销毁的...
    tang温暖阅读 293评论 0 0
  • 事件轮询
    鸿泽云码阅读 218评论 0 1
  • 一、xue的生命周期是什么 vue每个组件都是独立的,,每个组件都有一个属于他的生命周期,从一个组件创建、数据初始...
    康娜阅读 988评论 0 0