前端性能优化篇

防抖和节流

对搜索框和提交按钮防抖,用户频繁点击只会最后发送请求
对监听页面滚动进行节流

路由懒加载和图片懒加载

路由懒加载采用箭头函数和import引入组件
图片懒加载采用监听滚动距离,当滚动距离加可视化高度大于图片的offsetTop时再设置图片的src,可以用loading组件占位

减少回流与重绘

回流是dom元素尺寸或结构改变,重绘是元素的样式改变。
回流一定重绘。
即不要频繁操作dom

图片优化

小图片使用base64
使用雪碧图(多图合一)

webpack优化

利⽤CDN加速: 在构建过程中,将引⽤的静态资源路径修改为CDN上对应的路径。通过externals加载外部CDN资源
1.默认情况下,通过import语法导入的第三方依赖包,最终会被打包合并到同一个文件中,从而导致打包成功后,单文件体积过大的问题,为了解决上述问题,可以通过webpack的externals节点,来配置并加载外部的CDN资源。凡是声明在externals中的第三方依赖包都不会被打包。
在这里插入图片描述

Tree Shaking: 将代码中永远不会⾛到的⽚段删除
掉。可以通过在启动webpack时追加参数 --optimize-minimize 来实现
代码压缩:只需要将 mode 设置为 production 就可以默认开启,如果使用 Webpack 4 的话,开启生产环境就会自动启动这个优化功能。
代码分包
对于一些不需要立即使用的组件,我们可以单独对它们进行拆分,拆分成一些小的代码块chunk.js; 这些chunk.js会在需要时从服务器加载下来,并且运行代码,显示对应的内容;
通过import函数导入文件打包出来的代码是分包的
如果我们的项目过大了,对于某些组件我们希望通过异步的方式来进行加载(目的是可以对其进行分包处理),那么Vue中给我们提供了一个函数:defineAsyncComponent。
异步导入组件

 import { defineAsyncComponent } from 'vue';
 const AsyncCategory = defineAsyncComponent(() => import("./AsyncCategory.vue"))

到时候这个组件会被打包到单独的包里,一般是把路由写成异步组件形式

loader优化

对于 Loader 来说,影响打包效率首当其冲必属 Babel 了。因为 Babel 会将代码转为字符串生成 AST,然后对 AST 继续进行转变最后再生成新的代码,项目越大,转换代码越多,效率就越低。当然了,这是可以优化的。
首先我们优化 Loader 的文件搜索范围

module.exports = {
  module: {
    rules: [
      {
         js 文件才使用 babel
        test: /\.js$/,
        loader: 'babel-loader',
         只在 src 文件夹下查找
        include: [resolve('src')],
         不会去查找的路径
        exclude: /node_modules/
      }
    ]
  }
}

对于 Babel 来说,希望只作用在 JS 代码上的,然后 node_modules 中使用的代码都是编译过的,所以完全没有必要再去处理一遍。

Happypack(plugin)-提高项目构建速度

受限于 Node 是单线程运行的,所以 Webpack 在打包的过程中也是单线程的,特别是在执行 Loader 的时候,长时间编译的任务很多,这样就会导致等待的情况。
HappyPack 可以将 Loader 的同步执行转换为并行的,这样就能充分利用系统资源来加快打包效率了

seo优化

SEO优化
●服务端渲染SSR
SSR也就是服务端渲染,也就是将Vue在客户端把标签渲染成HTML的工作放在服务端完成,然后再把htmI直接返回给客户端

代码优化

第三方模块按需导入
SPA页面采用keep-alive缓存组件
key保证唯一
如果需要使用v-for给每项元素绑定事件时使用事件代理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值