lazy loading:懒加载,并非图片的懒加载,而是js文件的懒加载
    前提:需要进行代码分割(code split),分割成单独的js文件,然后在需要的时候进行再加载

    • 项目目录:

    image.png

    1. // src/js/test.js
    2. console.log('test.js文件被加载了~');
    3. export function mul(x, y) {
    4. return x * y;
    5. }
    6. export function count(x, y) {
    7. return x - y;
    8. }
    1. // src/js/index.js
    2. console.log('index.js文件被加载了~');
    3. // import { mul } from './test';
    4. document.getElementById('btn').onclick = function() {
    5. // 懒加载~:当文件需要使用时才加载~
    6. // 预加载 prefetch:会在使用之前,提前加载js文件
    7. // 正常加载可以认为是并行加载(同一时间加载多个文件)
    8. // 预加载 prefetch:等其他资源加载完毕,浏览器空闲了,再偷偷加载资源
    9. import(/* webpackChunkName: 'test', webpackPrefetch: true */'./test').then(({ mul }) => {
    10. console.log(mul(4, 5));
    11. });
    12. };

    相比第4行,第11行代码的好处是:

    • test.js并不会一开始就被加载进来,只有点击按钮之后才会被加载进来
    • 第二次点击按钮,不会被重复加载

    webpackPrefetch: true 预加载

    • 懒加载~:当文件需要使用时才加载~
    • 预加载 prefetch:会在使用之前,提前加载js文件

    懒加载的弊端:在需要时再加载,会有延迟问题
    预加载的弊端:兼容性比较差,移动端慎用,PC端等高端浏览器可以考虑使用