JavaScript loader原理简单总结示例解析

 更新时间:2023年08月25日 11:22:44   作者:loong  
这篇文章主要为大家介绍了JavaScript loader原理简单总结示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

loader

  • loader 其实就是一个函数,会返回处理文件的结果
  • 当webpack解析资源时,会调用相应的loader 去处理 (从下往上,从右往左的顺序调用)
// context 文件内容
// map SourceMap (传入SourceMap传入的相关数据)
// meta 其他loader 传的参数
module.exports = function (context,map,meta){
    console.log(context
    return context
}

同步loader

  • 如果在同步loader中添加异步代码 程序会报错 The callback was already called( 已调用回调 )再次调用 就会报错
// 第一种
module.exports = function (context,map,meta){
    console.log(context)
    return context
}
// 第二种  (如有下一个loader 需要处理可以采用这种)
module.exports = function (context,map,meta){
    // 一个参数  如果有错误信息,就传错误信息  如果没有  就是null
    // context 文件内容
    // map SourceMap (传入SourceMap传入的相关数据) 继续传递 SourceMap
    // meta 其他loader 传的参数
    this.call(null, context, map, meta)
}

异步loader

module.exports = function (context,map,meta){
    const callback = this.async()
    setTimeout(()=>{
        callback(null, context, map, meta)    
    }, 1000)
}

raw Loader

  • raw loader接收的context 是 Buffer 数据 (二进制数据)
  • 同步loader 和 异步loader 都可以
  • 需要 配置 module.exports.raw = true
module.exports = function loader(context,map,meta){
    console.log(context)
    return context
}
module.exports.raw = true

pitch Loader

  • pitch loader 中可以是异步loader 和 同步loader
  • 需要暴露一个 pitch方法
  • 当在 use 中设置多个loader时, 执行顺序是 先执行 pitch loader pitch loader 执行完了会再执行普通loader
module.exports = function loader(context,map,meta){
    console.log(context)
    return context
}
module.exports.pitch = function (){
    console.log(pitch)
}

以上就是JavaScript loader原理简单总结示例解析的详细内容,更多关于JavaScript loader原理总结的资料请关注脚本之家其它相关文章!

相关文章

  • JS面试之异步模拟超时重传机制详解

    JS面试之异步模拟超时重传机制详解

    这篇文章主要为大家介绍了JS面试之异步模拟超时重传机制详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 微信小程序 在Chrome浏览器上运行以及WebStorm的使用

    微信小程序 在Chrome浏览器上运行以及WebStorm的使用

    这篇文章主要介绍了微信小程序 在Chrome浏览器上运行以及WebStorm的使用的相关资料,需要的朋友可以参考下
    2016-09-09
  • JS数组去重详情

    JS数组去重详情

    这篇文章主要介绍JS数组去重,关于去重实际应用中,最常用的方法就是使用Set,也可以使用第三方库lodash来处理,下面一起来看看文章是怎么介绍JS数组去重的
    2021-11-11
  • package.json依赖环境相关属性详解

    package.json依赖环境相关属性详解

    这篇文章主要为大家介绍了package.json依赖环境相关属性详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 微信小程序(十九)radio组件详细介绍

    微信小程序(十九)radio组件详细介绍

    这篇文章主要介绍了微信小程序radio组件详细介绍的相关资料,需要的朋友可以参考下
    2016-09-09
  • Google 地图API Map()构造器详解

    Google 地图API Map()构造器详解

    本文主要介绍Google 地图API Map(),这里对Map()构造器的知识做了一下整理以及提供简单的代码示例,开发Google 地图应用的朋友可以参考下
    2016-08-08
  • 微信小程序 常见问题总结(4058,40013)及解决办法

    微信小程序 常见问题总结(4058,40013)及解决办法

    这篇文章主要介绍了微信小程序 常见问题总结及解决办法的相关资料,这里首先对微信小程序的结构进行了介绍,然后对常见问题进行说明讲解,需要的朋友可以参考下
    2017-01-01
  • JavaScript API ResizeObserver使用示例

    JavaScript API ResizeObserver使用示例

    这篇文章主要为大家介绍了JavaScript API ResizeObserver的使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 微信小程序 location API实例详解

    微信小程序 location API实例详解

    这篇文章主要介绍了微信小程序 location API实例详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • 浅谈JavaScript作用域

    浅谈JavaScript作用域

    这篇文章主要介绍了JavaScript作用域详情,作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突,下面文章我们一起来了解更多的详细内容,需要的小伙伴也可以参考一下
    2021-12-12

最新评论