Vue.js 谈谈常见性能优化

1.编码优化:

  • ​​​​​​不要将所有的数据都放在data中,data中的数据都会增加getter和setter,会收集对应的watcher (vue 2.x 响应式原理Object.defineProperty
  • vue 在 v-for 时给每项元素绑定事件需要用事件代理 (多个子元素绑定事件的场景下,可以把事件帮给父元素(wrapper层),通过e.target事件冒泡抓住事件原来写逻辑)
  • SPA页面采用keep-alive缓存组件 (SPA即单页面应用,通过js切换元素显示与隐藏,不会刷新页面重新加载数据)
  • 拆分组件( 提高复用性、增加代码的可维护性,减少不必要的渲染 )
  • v-if 当值为false时内部指令不会执行,具有阻断功能,很多情况下使用v-if替代v-show(反之经常切换显示隐藏的元素应当使用v-show)
  • key保证唯一性 ( 默认vue会采用就地复用策略 )
  • Object.freeze 冻结数据
  • 合理使用路由懒加载、异步组件 (路由配置 component:()=>import('xxx.vue'))
  • 尽量采用runtime运行时版本 (上线版本的vue.runtime.min.js,不包含编译器,不提示错误,体积小)
  • 数据持久化的问题 (防抖、节流,(事件频繁触发的控制方案 相关链接) )

2.Vue加载性能优化:

  • 第三方模块按需导入 (babel-plugin-component)
  • 滚动到可视区域动态加载 ( vue-virtual-scroll-list )
  • 图片懒加载 (相关链接)

3.用户体验:

  • app-skeleton  骨架屏
  • app-shell  app壳
  • pwa

4.SEO优化:

  • 预渲染插件 prerender-spa-plugin
  • 服务端渲染 ssr

5.打包优化:

  • 使用cdn的方式加载第三方模块
  • 多线程打包 happypack
  • splitChunks 抽离公共文件
  • sourceMap生成 (利于debug上线版本)

6.缓存,压缩

  • 客户端缓存、服务端缓存
  • 服务端gzip压缩
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值