23、webpack优化(8)——懒加载(动态加载)

懒加载

在这里的懒加载,其实就是按需加载(动态加载)。需要对webpack进行相关配置。

懒加载案例

  1. 案例情景:

当我点击按钮的时候,需要动态去加载resource.js,并读取该文件导出的内容

//index.js
/*在页面上有一个按钮,点击按钮去加载资源resource.js*/
let button = document.createElement('button');

button.innerHTML = "点击";

button.addEventListener('click',function(){
 console.log('click');
 //es6草案中的语法,利用jsonp实现动态加载文件
 //直接使用不支持,需要利用语法动态导入的插件@babel/plugin-syntax-dynamic-import
 //vue的懒加载  react的懒加载都是这个原理,打包的时候会打包好resource.js文件,然后按需去动态加载
 import('./resource.js').then(data => {
  console.log(data.default);//数据是放在data的default属性里的
 })
});

document.body.appendChild(button);

//resource.js
export default 'yuhuaResource';
  1. 在上述代码中,直接使用import()去动态加载资源,是es6草案中语法,并不是正式语法,所以直接使用会报错,需要配置相关的语法动态导入的插件@babel/plugin-syntax-dynamic-import,并在webpack中做简单配置:
module.exports = {
 ...
 module:{
  rules:[
   {
    test:/\.js$/,
    use:{
     loader:'babel-loader',
     options:{
      presets:[
       '@babel/preset-env',
       '@babel/preset-react'
      ],
      plugins:[
       '@babel/plugin-syntax-dynamic-import'
      ]
     }
    }
   }
  ]
 },
 ...
}
  1. 配置完后,import()动态加载返回的是一个promise,得到的数据是存在.then的回调函数的data.default属性中的。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值