本文已参与「新人创作礼」活动,一起开启掘金创作之路。
浅谈 Vue 的优缺点
优点:
1、数据驱动视图,对真实 dom 进行抽象出 virtual dom(本质就是一个js 对象),并配合 diff 算法、响应式和观察者、异步队列等手段以最小代价更新dom,渲染页面 ;
2、组件化,组件用单文件的形式进行代码的组织编写,使得我们可以在一个文件里编写 html\css(scoped 属性配置 css 隔离)\js, 并且配合Vue-loader 之后,支持更强大的预处理器等功能 ;
3、强大且丰富的 API, 提供一系列的 api 能满足业务开发中各类需求;
4、由于采用虚拟 dom,让 Vue ssr(服务端渲染) 先天就足 ;
5、生命周期钩子函数,选项式的代码组织方式,写熟了还是蛮顺畅的,但仍然有优化空间(Vue3 composition-api);
6、生态好,社区活跃 。
缺点:
1、由于底层基于 Object.defineProperty 实现响应式,而这个api 本身不支持IE8及以下浏览器 ;
2、只能对 data 中预定义过的属性做出响应的原因,在Vue 中使用下标的方式直接修改属性的值或者添加一个预先不存在的对象属性是无法做到setter 监听的,这是 defineProperty 的局限性;
3、在 Vue.js 2.x 中,对于一个深层属性嵌套的对象,要劫持它内部深层次的变化,就需要递归遍历这个对象,执行 Object.defineProperty 把每一层对象数据都变成响应式的,这无疑会有很大的性能消耗;
4、csr 的先天不足,首屏性能问题(白屏) ;
5、由于百度等搜索引擎爬虫无法爬取 js 中的内容,故spa 先天就对seo 优化心有余力不足(谷歌的 puppeteer 就挺牛逼的,实现预渲染底层也是用到了这个工具)。