一.HTML语义化
1.什么是HTML的语义化
简单来说就是正确的标签做正确的事。例如、头部使用<header>标签、导航使用<nav>
标签等等。
2.HTML的语义化的好处
- 网页加载慢导致css文件还未加载时,页面仍然清晰可读。
- 提升用户体验。(例如:title、alt可用于解释名词)。
- 使代码有可读性,便于团队开发和维护。
二.HTML中 !DOCTYPE 的作用
规定了浏览器文档使用哪种html或者xhtml规范三.Vue的优点和缺点
1.优点
Vue最核心的两个特点(优点),响应式和组件化
优点1.响应式
(1).什么是响应式
通过MVVM思想实现数据的双向绑定,通过虚拟DOM让我们可以用数据来操作DOM,而不必去操作真实的DOM,提升了性能。且让开发者有更多的时间去思考业务逻辑。 (简单说:当更新或者增加data(数据)时,页面(UI)会有响应,重新渲染对应的数据;)
(2).响应式的好处
对某些数据的修改就能自动更新视图,让开发者不用再去操作DOM,有更多的时间去思考业务逻辑。
(3).Vue 响应式的特点
- 对象新增加的属性,不具有响应式;
- 修改对象本存在属性,具有响应式;
- 数组的普通(非对象)元素通过索引修改,不具有响应式;
- 数组的对象元素通过索引修改,具有响应式;
- 数组通过调用 ‘push/splice/shift…’ 方法具有响应式;
- 数组通过调用 ‘push/splice/shift…’ 方法新增加的对象元素也具有响应式;
(4).数据双绑
优点2.组件化
(1).什么是组件化
把一个单页应用中的各个模块拆分到一个个组件当中,或者把一些公共的部分抽离出来做成一个可复用的组件。所以组件化带来的好处就是,提高了开发效率,方便重复使用,使项目的可维护性更强。
优点3:
vue是单页面应用,使页面局部刷新,不用每次跳转页面都要请求所有数据和dom
2.缺点
- 初次加载时耗时多
- VUE不支持IE8
- 生态环境差不如angular和react
四.Vue中的computed和watch
computed
定义:
计算属性是自动监听依赖值的变化,从而动态返回内容,监听是一个过程,在监听的值变化时,可以触发一个回调,并做一些事情。
特点:
- 数据可以进行逻辑处理,减少模板中计算逻辑。
- 对计算属性中的数据进行监视
- 依赖固定的数据类型(响应式数据)
- 计算属性的属性值必须是一个函数。
- 计算属性是可以缓存的
watch
定义:
watch中可以执行任何逻辑,如函数节流,Ajax异步获取数据,甚至操作 DOM(不建议)。
侦听属性的 immediate:true 和 deep:true
-
immediate:true:在页面一开始初始化时,watch 不会被触发,即 “第一次”不会被触发,只有后继数据改变时,watch 才会触发和监听。
-
deep:true:watch 主要通过监听数据的地址是否发生改变来监听数据模块,但是,当数据变得复杂,如一个对象里面嵌套多个对象时,当只改变子对象的地址,而父对象的地址不改变时,父对象就不会被 watch 监听到
.Vue中的computed和watch的区别是什么?
- computed和watch都基于watcher来实现的。
- computed的属性是具备缓存的,依赖的值不发生变化,对其取值时计算属性方法不会重复执行
- watch是监控值的变化,当值发生改变的时候,会调用回调函数
五. Vue中hash模式和history模式的区别
-
最明显的是在显示上,
hash模式的URL中会夹杂着#号,而history没有。 -
Vue底层对它们的实现方式不同。hash模式是依靠onhashchange事件(监听location.hash的改变),而history模式是主要是依靠的HTML5 history中新增的两个方法,pushState()可以改变url地址且不会发送请求,replaceState()可以读取历史记录栈,还可以对浏览器记录进行修改。 -
当真正需要通过
URL向后端发送HTTP请求的时候,比如常见的用户手动输入URL后回车,或者是刷新(重启)浏览器,这时候history模式需要后端的支持。因为history模式下,前端的URL必须和实际向后端发送请求的URL一致,例如有一个URL是带有路径path的(例如www.lindaidai.wang/blogs/id),如果后端没有对这个路径做处理的话,就会返回404错误。所以需要后端增加一个覆盖所有情况的候选资源,一般会配合前端给出的一个404页面。
六. Vue中v-if和v-show区别的区别
- v-show 通过控制元素的 display 属性来决定显示或隐隐,而 v-if本质是通过操纵
dom元素的添加移除来进行切换显示(条件为真,元素将会被渲染,条件 为假,元素会被销毁)。 - v-if有更高的切换开销,v-show有更高的初始渲染开销。如果需要频繁的切换,使用v-show比较好,如果运行条件很少改变,使用v-if比较好。
- v-show比v-if性能更高,因为v-show只能动态的改变样式,不需要增删DOM元素。所以当程序不是很大时候,v-if和v-show区别都不大,如果项目很大,推荐多用v-show,较少浏览器后期操作的性能。
- v-if 有配套的 v-else-if 和 v-else,而 v-show 没有。
- v-if 可以搭配 template 使用,而 v-show 不行。
七.Vue中v-for循环key的作用
- 提升v-for渲染的效率。
- 提高渲染性能
- 避免数据混乱的情况出现。
注意:如果对数据的逆序添加、逆序删除等破坏顺序操作,用index作为key值,效率低。