require.ensure简单理解

所有 js模块 打包成一个 bundle.js 太大了,可以把某些 js模块 单独打包,等要用到的时候,webpack 自动创建 script 标签去请求这个js文件

require.ensure

require.ensure(
    [], // 依赖
    () => {// 回调函数,在这里按需引入模块和处理逻辑
        require('@/components/home')
    }, 
    'demo') // webpackChunk名,同名的打包进同个bundle
}

举个例子:

aClick.jsbClick.js 是点击按钮之后才会用到,所以单独打包,按需加载。假设文件很大。

util.js 是开头就要用的工具箱,直接打包进 bundle.js

entry.js 是打包入口,实现按钮事件的监听,在回调函数里用 require.ensure 实现相应模块的按需加载

// aClick.js
let data = "按钮A点击事件发生时加载"
module.exports = { data };

// bClick.js
let data = "按钮B点击事件发生时加载"
module.exports = { data };

// util.js
let data = "这个是工具箱"
module.exports = { data };

// entry.js
const util = require('./util')
alert(util.data);

document.querySelector("#A").onclick = function() {

    require.ensure([], function() { // 处理事件逻辑之前会先引入模块
        var awork = require('./aClick.js')
        alert(awork.data)
    })
}

document.querySelector("#B").onclick = function() {

    require.ensure([], function() {
        var bwork = require('./bClick.js')
        alert(bwork.data)
    })
}

打包结果:打包出3个js文件:bundle.js打包了entry和util、aclick的bundle、bclick的bundle

运行结果:先加载bundle.js,点击按钮A加载aclick的bundle,点击按钮B加载bclick的bundle

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值