每天三道前端题(1)

一、为什么Vue中的 v-if 和 v-for 不建议一起用?

1、作用方面做对比:

v-if是用于条件性的渲染一块内容,当判断指令返回为true时,才会进行渲染

v-for 是基于一个数组来渲染一个列表。v-for 指令需要使用 item in list 形式和特殊语法,其中 list 是源数据数组或对象,而 item 则是被迭代的数组元素的别名。

v-for建议设置 key 值,保证每个key 值是独一无二的,这样的话 便于 diff 算法进行优化

两者的用法实例:

<div v-if="isShow"></div>

<div>
   <li v-for="item in list :key="item.id"">
      {{ item.name }}
   </li>
</div>

2、优先级上做对比

优先级主要是要看源码是怎么写的。

vue2中v-for的优先级高于v-if,当v-for和v-if写在同一个标签上时,仍然会渲染出列表,然后再在每个列表上判断各个v-if。

vue3中由于做了改动,将v-if的优先级高于v-if,所以当v-for和v-if写在同一个标签上时,会报错;因为优先级的问题,所以在执行的v-if是找不到item的,所以会报错。

3、注意事项

3.1、永远不要把v-if 和v-for同时在同一个元素上使用,会带来性能方面的浪费(每次渲染都会先循环再做条件判断)

3.2、如果避免出现这种情况,则在外层嵌套 template(页面渲染不生成dom节点),在这一层进行v-if的判断,然后 再到内部进行 v-for的循环。(先判断 再循环)

<template v-if="isShow">

        <p v-for="item in list"> {{ item.name }}</p>

</template>        

3.3、如果条件出现在循环内部,可以通过计算属性computed提前过滤掉那些不需要显示的项

computed:{

        list : function(){

                return this.filter(item => item.isShow)

        }

}

二、display:none 和 visibility: hidden 有什么区别?

表面上:

        display:none是彻底消失,不会再文档流中占位置,浏览器也不会解析该元素

        visibility:hidden是视觉上消失了,可以理解为透明度为0的效果,在文档流中占位,浏览器会解析该元素

性能上:

        使用visibility:hidden比display:none性能上更好。

        display:none切换显示时,页面产生回流(当页面中的一部分元素需要改变规模尺寸、布局、显示隐藏等,页面重新构建,此时就是回流。所有页面第一次加载时需要产生一次回流)。

        visibility:hidden切换是否显示时 不会引起回流。

三、下面这行代码输出什么?

console.log(String.raw`Hello\nworld`);

 

String.raw函数是用来获取一个模板字符串的原始字符串的,它返回一个字符串,其中忽略了转义符(\n,\v,\t 等)。但反斜杠可能造成问题,因为你会遇到下面这种类似情况:

const path = `C:\Documents\Projects\table.html`

String.raw`${path}`

 这将导致"C:DocumentsProjects able.html" 直接使用String.raw

String.raw`C:\Documents\Projects\table.html`

 他会忽略转义字符并打印:

C:\Documents\Projects\table.html 上述情况,字符串是Hello\nworld被打印出。

### 前端开发面试目及答案汇总 #### 面试分类概述 为了帮助更好地准备前端开发岗位的面试,在接下来的内容中,将提供一系列覆盖HTML、CSS、JavaScript以及框架相关的重要知识点。这些问是基于实际招聘过程中常见的考察方向整理而成。 #### HTML基础问 1. 解释DOCTYPE的作用是什么?[^1] 2. 如何定义语义化标签及其重要性? 3. `<meta>` 标签有哪些常见属性? #### CSS布局与样式 4. Flexbox 和 Grid 的主要区别在哪里? 5. 使用媒体查询实现响应式设计的方法。 6. BFC (Block Formatting Context) 是如何工作的? #### JavaScript核心概念 7. 变量声明方式 var, let 和 const 之间的差异。 8. 函数作用域链的概念及其实现机制。 9. Promise 对象的工作流程和应用场景。 #### DOM操作技巧 10. 获取页面元素的方式有哪些? 11. 动态创建并插入新节点的具体方法。 12. Event Loop 工作原理简介。 #### 浏览器兼容性和性能优化 13. 处理不同浏览器间样式的不一致现象的最佳实践。 14. 图片懒加载的技术方案介绍。 15. Webpack 打包工具的基础配置要点。 #### Vue.js/React/Angular等主流框架特性 16. 单页应用(SPA)相对于传统多页网站的优势所在。 17. React 中 JSX 表达式的语法特点。 18. Vuex/Vuex Store 在Vue中的角色定位。 #### HTTP协议理解 19. GET 请求和 POST 请求的主要差别。 20. RESTful API 设计原则说明。 21. CORS 跨域资源共享策略解析。 #### TypeScript入门指南 22. 类型推断(Type Inference)的功能描述。 23. 接口(interface) vs 抽象类(abstract class)的选择依据。 24. 泛型(generics)的实际用途举例。 #### 安全意识培养 25. CSRF 攻击防范措施总结。 26. XSS 注入漏洞预防手段探讨。 27. HTTPS 加密传输的意义阐述。 --- 以上只是精选的一部分典型问列表,完整的100道库涵盖了更广泛的主和技术细节。针对每一个主领域都有深入浅出的回答模板可供参考学习。 ```javascript // 示例代码片段:简单的事件监听器设置 document.getElementById('myButton').addEventListener('click', function() { console.log('按钮被点击'); }); ``` #### 两周复习计划建议 - **第1周** - 每天集中精力掌握一组特定技能集内的基础知识,如第一天专注于HTML/CSS,第二天转向JS基础等等。 - 结合官方文档或优质教程加深印象,尝试动手编写简单案例来巩固所学内容。 - **第2周** - 开始模拟真实场景下的编码挑战,利用LeetCode或其他平台练习算法目的解答能力。 - 查漏补缺阶段,回顾之前遇到困难的地方重新梳理思路直至完全理解为止。 - 将重点放在高频考点上反复训练直到能够流畅应对各类变体形式的问
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值