1.vuejs 与 AngularJS 以及 react 的区别?
1. 与 AngularJS 的区别
相同点:
都支持指令: 内置指令和自定义指令.
都支持过滤器: 内置过滤器和自定义过滤器.
都支持双向数据绑定.
都不支持低端浏览器.
不同点:
1.AngularJS 的学习成本高, 比如增加了 Dependency Injection 特性, 而 vue.js 本身提供的 API 都比较简单, 直观.
2. 在性能上, AngularJS 依赖对数据做脏检查, 所以 Watcher 越多越慢.
vue.JS 使用基于依赖追踪的观察并且使用异步队列更新. 所有的数据都是独立触发的.
对于庞大的应用来说, 这个优化差异还是比较明显的.
2. 与 React 的区别
相同点:
React 采用特殊的 JSX 语法, Vue.JS 在组件开发中也推崇编写. vue 特殊文件格式, 对文件内容都有一些约定, 两者都需要编译后使用.
中心思想相同: 一切都是组件, 组件实例之间可以嵌套.
都提供合理的钩子函数, 可以让开发者定制化地去处理需求.
都不内置列数 Ajax,Route 等功能到核心包, 而是以插件的方式加载.
在组件开发中都支持 mixins 的特性.
不同点:
React 依赖 Virtual DOM, 而 Vue.JS 使用的是 DOM 模板. React 采用的 Virtual DOM 会对渲染出来的结果做脏检查.
Vue.JS 在模板中提供了指令, 过滤器等, 可以非常方便, 快捷地操作 Virtual DOM.
2.<keep-alive></keep-alive > 的作用是什么?
<keep-alive></keep-alive> 包裹动态组件时, 会缓存不活动的组件实例, 主要用于保留组件状态或避免重新渲染.
大白话:
比如有一个列表和一个详情, 那么用户就会经常
执行打开详情 =>返回列表 =>打开详情... 这样的话列表和详情都是一个频率很高的页面,
那么就可以对列表组件使用 < keep-alive></keep-alive > 进行缓存,
这样用户每次返回列表的时候, 都能从缓存中快速渲染, 而不是重新渲染
3.SCSS 是什么? 在 vue.cli 中的安装使用步骤是? 有哪几大特性?
CSS 的预编译.
使用步骤:
第一步: 用 NPM 下三个 loader(Sass-loader,CSS-loader,node-Sass)
第二步: 在 build 目录找到 webpack.base.config.JS, 在那个 extends 属性中加一个拓展. SCSS
第三步: 还是在同一个文件, 配置一个 module 属性
第四步: 然后在组件的 style 标签加上 lang 属性 , 例如: lang="scss"
有哪几大特性:
1, 可以用变量, 例如($ 变量名称 = 值);
2, 可以用混合器, 例如()
3, 可以嵌套
4.vue 为什么不直接操作 dom?
因为操作 dom 对象后, 会触发一些浏览器行为, 比如布局 (layout) 和绘制(paint).
paint 是一个耗时的过程, 然而 layout 是一个更耗时的过程,
我们无法确定 layout 一定是自上而下或是自下而上进行的, 甚至一次 layout 会牵涉到整个文档布局的重新计算.
浏览器的 layout 是 lazy 的, 也就是说:
在 JS 脚本执行时, 是不会去更新 DOM 的, 任何对 DOM 的修改都会被暂存在一个队列中,
在当前 JS 的执行上下文完成执行后, 会根据这个队列中的修改, 进行一次 layout.
5.WeakMap 和 Map 的区别?
WeakMap 结构与 Map 结构基本类似, 唯一的区别是它只接受对象作为键名( null 除外),
不接受其他类型的值作为键名,
而且键名所指向的对象, 不计入垃圾回收机制.
WeakMap 最大的好处是可以避免内存泄漏.
一个仅被 WeakMap 作为 key 而引用的对象, 会被垃圾回收器回收掉.
WeakMap 拥有和 Map 类似的 set(key, value) ,get(key),has(key),delete(key) 和 clear() 方法,
没有任何与迭代有关的属性和方法.
来源: http://www.jianshu.com/p/74c6efcc712c