美文网首页
require.ensure

require.ensure

作者: 行走的蛋白质 | 来源:发表于2020-01-18 11:04 被阅读0次

    require.ensure(dependencies: String[], callback: function(require), errorCallback: function(error), chunkName: String)
    官方介绍 webpack medule methods require.ensure
    github实例 webpack_require_ensure


    webpack 特有的模块方法,异步加载所需的 js 文件

    原理:把 js 模块独立导出一个 .js 文件,在使用这个模块的时候 webpack 会构造 script dom 元素,即创建一个 script 标签加入到 document.head 对象中去,由浏览器发起异步请求这个 js 文件。我们可以定义一个回调函数,去定义得到这个 js 文件之后,需要做的业务逻辑操作。

    // 按钮点击跳转异步请求其他页面
    funBtn.click(() => {
        // 获取 文档head对象
        let head = document.getElementsByTagName('head')[0]
        // 构建 <script>
        let script = document.createElement('script')
        // 设置src属性
        script.async = true // 规定脚本将被异步执行
        script.src = 'https://wwww.xxxxx.com'
        // 加入到head对象中
        head.appendChild(script)
    })
    
    funBtn.click(() => {
        require.ensure([], (require) => {
            let test = require('./test.js')
        })
    })
    

    require.ensure 这个函数是一个代码分离的分割线,表示回调里面的 require 是我们想要分割出去的,即 require('./test.js'),把 test.js 分割出去形成一个 webpack 打包的单独 js 文件,当然 ensure 里面也是可以写一些同步的 require 示例如下:

    var test1 = require('./test1.js')
    
    funBtn.click(() => {
        require.ensure([], (require) => {
            let test = require('./test.js')
            var test1 = require('./test1.js') // 这个不会独立出去,因为它已经加载到模块缓存中了
        })
    })
    

    第一个参数 dependencies:字符串构成的数组,声明 callback 回调函数中所需的所有模块。

    • github 实例
      1.代码 clone 下来之后可以 build 出来双击 dist 里面的 index.html
      2.也可以 start 跑起来在本地 localhost:8087 看文件加载顺序

    相关文章

      网友评论

          本文标题:require.ensure

          本文链接:https://www.haomeiwen.com/subject/bcfhzctx.html