怎样使用webpack源码loader机制

这次给大家带来怎样使用webpack源码loader机制,怎样使用webpack源码loader机制的注意事项有哪些,下面就是实战案例,一起来看一下。

loader概念

loader是用来加载处理各种形式的资源,本质上是一个函数, 接受文件作为参数,返回转化后的结构。

loader 用于对模块的源代码进行转换。loader 可以使你在 import 或”加载”模块时预处理文件。因此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的强大方法。loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript,或将内联图像转换为 data URL。loader 甚至允许你直接在 JavaScript 模块中 import CSS文件!

loader和plugin区别

之前一篇文章中介绍了plugin机制,和今天研究的对象loader,他们两者在一起极大的拓展了webpack的功能。它们的区别就是loader是用来对模块的源代码进行转换,而插件目的在于解决 loader 无法实现的其他事。为什么这么多说呢?因为plugin可以在任何阶段调用,能够跨Loader进一步加工Loader的输出,在构建运行期间,触发事件,执行预先注册的回调,使用compilation对象做一些更底层的事情。

loader用法

配置

module: {  rules: [   {    test: /.css$/,    use: [     { loader: 'style-loader' },     {      loader: 'css-loader'     }    ]   }  ] }

登录后复制

内联

import Styles from 'style-loader!css-loader?modules!./styles.css';

登录后复制

CLI

webpack --module-bind 'css=style-loader!css-loader'

登录后复制

说明 上面三种使用方法作用都是将一组链式的 loader, 按照从右往左的顺序执行,loader 链中的第一个 loader 返回值给下一个 loader。先使用css-loader解析 @import 和 url()路径中指定的css内容,然后用style-loader 会把原来的 CSS 代码插入页面中的一个 style 标签中。

loader实现

//将css插入到head标签内部module.exports = function (source) {  let script = (`   let style = document.createElement("style");   style.innerText = ${JSON.stringify(source)};   document.head.appendChild(style);  `);  return script;}//使用方式1resolveLoader: {  modules: [path.resolve('node_modules'), path.resolve(__dirname, 'src', 'loaders')]},{  test: /.css$/,  use: ['style-loader']},//使用方式2//将自己写的loaders发布到npm仓库,然后添加到依赖,按照方式1中的配置方式使用即可

登录后复制

说明 上面是一个简单的loader实现,同步的方式执行,相当于实现了style-loader的功能。

loader原理

function iteratePitchingLoaders(options, loaderContext, callback) {  var currentLoaderObject = loaderContext.loaders[loaderContext.loaderIndex];  // load loader module  loadLoader(currentLoaderObject, function(err) {    var fn = currentLoaderObject.pitch;    runSyncOrAsync(      fn,      loaderContext, [loaderContext.remainingRequest, loaderContext.previousRequest, currentLoaderObject.data = {}],      function(err) {        if(err) return callback(err);        var args = Array.prototype.slice.call(arguments, 1);        if(args.length > 0) {          loaderContext.loaderIndex--;          iterateNormalLoaders(options, loaderContext, args, callback);        } else {          iteratePitchingLoaders(options, loaderContext, callback);        }      }    );  });}

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

怎样在Vue中使用Sortable

如何使用JS实现运算符重载

以上就是怎样使用webpack源码loader机制的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2756104.html

(0)
上一篇 2025年3月8日 07:26:46
下一篇 2025年3月7日 06:11:30

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何使用Vue-cli webpack移动端自动化构建rem

    这次给大家带来如何使用Vue-cli webpack移动端自动化构建rem,使用Vue-cli webpack移动端自动化构建rem的注意事项有哪些,下面就是实战案例,一起来看一下。登录后复制 相信很多小伙伴想着自己的移动端项目能够自动转换…

    编程技术 2025年3月8日
    200
  • 浅谈Webpack 持久化缓存实践

    这篇文章主要介绍了浅谈webpack 持久化缓存实践,现在分享给大家,也给大家做个参考。 前言 最近在看 webpack 如何做持久化缓存的内容,发现其中还是有一些坑点的,正好有时间就将它们整理总结一下,读完本文你大致能够明白: 什么是持久…

    编程技术 2025年3月8日
    200
  • vue数据控制视图源码解析

    本篇内容给大家详细分析了关于vue数据控制视图的源码以及重点做了注释,有兴趣的朋友参考学习下。 分析vue是如何实现数据改变更新视图的. 前记 三个月前看了vue源码来分析如何做到响应式数据的, 文章名字叫vue源码之响应式数据, 最后分析…

    编程技术 2025年3月8日
    200
  • Webpack 之 babel-loader文件预处理器详解

    这篇文章主要介绍了webpack 之 babel-loader文件预处理器详解,现在分享给大家,也给大家做个参考。 loader官方解释是文件预处理器,通俗点说就是webpack在处理静态文件的时候,需要使用 loader 来加载各种文件,…

    编程技术 2025年3月8日
    200
  • vue-cli与webpack处理静态资源的方法及webpack打包使用步奏详解

    这次给大家带来vue-cli与webpack处理静态资源的方法及webpack打包使用步奏详解,vue-cli与webpack处理静态资源的方法及webpack打包使用步的注意事项有哪些,下面就是实战案例,一起来看一下。 通过Vue-cli…

    编程技术 2025年3月8日
    200
  • 怎样利用webpack搭建react开发环境

    这次给大家带来怎样利用webpack搭建react开发环境,利用webpack搭建react开发环境的注意事项有哪些,下面就是实战案例,一起来看一下。 1.初始化项目 mkdir react-redux && cd reac…

    编程技术 2025年3月8日
    200
  • 怎样使用WebPack配置vue多页面

    这次给大家带来怎样使用WebPack配置vue多页面,使用WebPack配置vue多页面的注意事项有哪些,下面就是实战案例,一起来看一下。 WebPack虐我千百遍,我带她如初恋。一个项目前台页面写差不多了,webpack几乎零配置,也算w…

    编程技术 2025年3月8日
    200
  • vue2.0安装style/css loader的方法

    下面我就为大家分享一篇vue2.0安装style/css loader的方法,具有很好的参考价值,希望对大家有所帮助。 项目需要引用额外的ui组件库,就需要安装style-loader和css-loader 安装style-loader  …

    2025年3月8日
    200
  • 解决vue-cli创建项目的loader问题

    下面我就为大家分享一篇解决vue-cli创建项目的loader问题,具有很好的参考价值,希望对大家有所帮助。 在使用vue-cli项目创建项目中,使用sass等预编译css语言时,不需要在config中配置,只需要在项目中安装相应loade…

    编程技术 2025年3月8日
    200
  • webpack打包js的方法

    这篇文章主要介绍了webpack打包js的方法,现在分享给大家,也给大家做个参考。 Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。 在代码实践之前,先说一写…

    2025年3月8日
    200

发表回复

登录后才能评论