webpack ——代码分割ensure

require.ensure 异步加载(代码切割)
 把js模块给独立导出一个.js文件,然后使用这个模块的时候,
 webpack会构造script dom元素,由浏览器发起异步请求这个js文件。

 
mapBtn.click(function() {
 require.ensure([], function() {
 var baidumap = require('./baidumap.js') //baidumap.js放在我们当前目录下
 })
 })

分析: require.ensure这个函数是一个代码分离的分割线,表示 回调里面的require 是我们想要进行分割出去的,即require(’./baidumap.js’),把baidumap.js分割出去,形成一个 webpack打包的单独js文件。当然ensure里面也是可以写一些同步的require的,比如
var sync = require('syncdemo.js')   //下面ensure里面也用到
 mapBtn.click(function() {
 require.ensure([], function() {
 var baidumap = require('./baidumap.js') //baidumap.js放在我们当前目录下
 var sync = require('syncdemo.js')  //这个不会独立出去,因为它已经加载到模块缓存中了
 })
 })

ensure的第一个参数[] 是它依赖的异步模块的数组;第二个参数为回调函数,第三个参数为模块名,用于构建时生成文件名使用。
注意:require.ensure模块只会被下载下来不会被执行,只有当回调函数使用require时这个模块才会被执行
实例:
//同步加载:util-sync是立即马上依赖的工具箱。但是它又非常的大,所以将其配置打包成一个公共模块, 利用浏览器的并发加载,加快下载速度
 var util_sync = require('./util-sync.js')

 alert(util_sync.data)

 document.getElementById("aBtn").onclick = function() {

 require.ensure([], function() {
 //workA-async不是entry.js必须有的,即可能发生的操作,那么我们把 他们利用异步加载,当发生的时候再去加载就行了
 var awork = require('./workA-async.js')
 alert(awork.data)
 //异步里面再导入同步模块--实际是使用同步中的模块
 var util1 = require('./util-sync.js')
 })
 }

 document.getElementById("bBtn").onclick = function() {

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值