使用webpack loader加载器

简介: 了解webpack请移步webpack初识!什么是loaderloaders 用于转换应用程序的资源文件,他们是运行在nodejs下的函数 使用参数来获取一个资源的来源并且返回一个新的来源(资源的位置),例如:你可以使用loader来告诉webpack去加载一个coffeescript或者j...

了解webpack请移步webpack初识!

什么是loader

loaders 用于转换应用程序的资源文件,他们是运行在nodejs下的函数 使用参数来获取一个资源的来源并且返回一个新的来源(资源的位置),例如:你可以使用loader来告诉webpack去加载一个coffeescript或者jsx

loader 特性

  • loaders可以串联,他们应用于管道资源,最后的loader将返回javascript,其它的可返回任意格式(传递给下一个loader)
  • loaders 可以同步也可以异步
  • loaders在nodejs下运行并且可以做一切可能的事
  • loader接受参数,可用于配置里
  • loaders可以绑定到extension/RegExps 配置
  • loaders 可以通过npm发布和安装
  • 正常的模块儿可以到处一个loader除了
  • loaders 可以访问配置
  • 插件可以给loaders更多的特性
  • loaders可以释放任意额外的文件

如果你对loader的例子感兴趣可以去看下现有的loader列表

解析loaders

loaders的解析类似模块儿,一个loader模块会导出一个方法并且可被nodejs写为可兼容的javascript,通常情况下通过npm来管理loaders,但你也可以把loader放在自己的应用里

引用loaders

按照惯例,虽然不是必须的,但loaders通常被命名为XXX-loader, XXX是上下文名称,比如json-loader.
你可能引用loaders通过完整的(真实的)名字例如(json-loader)或者通过他的速记名(.json)
loader的名称约定和优先级搜索是通过webpack内置api esolveLoader.moduleTemplates所定义
loader的名称约定很有用处,特别是当你通过require()声明来引用的时候,下面会讲到用法

安装loaders

如果这个loader可以在npm上安装,你可以安装这个loader通过

$ npm install xxx-loader --save

或者

$ npm install xxx-loader --save-dev

用法

有很多种方法在你的app中使用loaders

  • 明确的require声明(在想要试用的js文件夹里直接加载)
  • 通过配置文件配置
  • 通过CLI配置

require

提示:如果可以的话尽量不要使用require ,如果你想让你的脚本可运行在服务端和客户端(nodejs和浏览器)使用约定配置文件来配置

通过require声明(define,require.ensure,等等)来加载指定的loaders ,使用!来分割资源loaders,每一部分会被解析到当前的文件

可以在配置文件里通过加!前缀这种规则重写任意的loader

require("./loader!./dir/file.txt");

require("jade!./template.jade");
 
require("!style!css!less!bootstrap/less/bootstrap.less");

配置文件

你可以通过正则在配置文件里绑定loaders

{
    module: {
        loaders: [
            { test: /\.jade$/, loader: "jade" },
            // => "jade" loader 用于.jade文件

            { test: /\.css$/, loader: "style!css" },
            // => "style" 和 "css" loader 用于 ".css" 文件
            //另一种语法
            { test: /\.css$/, loaders: ["style", "css"] },
        ]
    }
}

CLI(命令行界面)

CLI
可以通过命令行来绑定加载器

$ webpack --module-bind jade --module-bind 'css=style!css'
 // 使用loader'jade'来加载'.jade'的文件 ,使用loaders 'style'和'css'加载'.css'文件

查询参数

loader可以使用查询参数通过字符串(像web上的一样)查询字符串被插在?后面例如url-loader?mimetype=image/png.

提示:查询参数的格式由loader决定,查看loader格式文档大多数的loaders接受如下格式的参数形式(?key=value&key2=value2)和JSON 对象格式 (?{"key":"value","key2":"value2"}).

require里

require("url-loader?mimetype=image/png!./file.png");

配置文件里

{ test: /\.png$/, loader: "url-loader?mimetype=image/png" }

或者

{
    test: /\.png$/,
    loader: "url-loader",
    query: { mimetype: "image/png" }
}

CLI方式

webpack --module-bind "png=url-loader?mimetype=image/png"

个人理解

以上文段皆翻译自webpack官网若有错误请指正,接下来说下个人对loader的理解,我觉得loader是一个很于意思的功能,webpack其实运行在node下的一个编译站,她可以将各种个样的文件打包起来,包括图片呀,css呀,视频呀,但无论怎么打包最后导出的都是javascrit,但是我们最终被客户端拉出的页面需要css的渲染 需要图片的路径,而loader她可以把各种各样的资源文件进行转变编译,最后用正确的格式加载到浏览器中,比如css被转换为style插入到页面,图片被转换为base64格式

目录
相关文章
|
1月前
|
前端开发 UED
Webpack 中处理 CSS 和图片资源的多 Loader 配置
【10月更文挑战第12天】 处理 CSS 和图片资源是 Webpack 配置中的重要部分。通过合理选择和配置多个 Loader,可以实现对这些资源的精细处理和优化,提升项目的性能和用户体验。在实际应用中,需要不断探索和实践,根据项目的具体情况进行灵活调整和优化,以达到最佳的处理效果。通过对 Webpack 中多 Loader 处理 CSS 和图片资源的深入了解和掌握,你将能够更好地应对各种复杂的资源处理需求,为项目的成功构建和运行提供坚实的基础。
55 1
|
1月前
|
前端开发 JavaScript
Webpack 中多个 Loader 的配置
【10月更文挑战第12天】使用多个 Loader 进行配置是 Webpack 中常见的操作,可以实现对各种资源的精细处理和优化。在配置时,需要根据具体需求合理选择和排列 Loader,并注意它们之间的顺序和交互关系。同时,不断了解和掌握新的 Loader 以及它们的特性,有助于更好地发挥 Webpack 的强大功能,提升项目的开发效率和质量。通过深入理解和熟练运用多个 Loader 的配置方法,你将能够更加灵活地处理各种资源,满足项目的多样化需求。
45 2
|
1月前
|
前端开发 JavaScript
Webpack 常用 Loader 和 Plugin
【10月更文挑战第12天】Webpack 是一个强大的模块打包工具,能够将各种资源模块进行打包和处理。Loader 用于转换模块的源代码,如 `babel-loader` 将 ES6+ 代码转换为 ES5,`css-loader` 处理 CSS 文件等。Plugin 扩展 Webpack 功能,如 `HtmlWebpackPlugin` 自动生成 HTML 文件,`UglifyJsPlugin` 压缩 JavaScript 代码。通过合理配置和使用 Loader 和 Plugin,可以构建高效、优化的项目。
21 2
|
1月前
|
前端开发 JavaScript 数据可视化
Webpack加载器和插件之间有什么区别
【10月更文挑战第13天】Webpack加载器和插件之间有什么区别
|
2月前
|
设计模式 前端开发 JavaScript
webpack实战之手写一个loader和plugin
该文章详细讲解了如何从零开始编写一个自定义的Webpack Loader和Plugin,包括它们的工作原理、开发步骤以及如何将自定义的Loader和Plugin集成到Webpack配置中。
webpack实战之手写一个loader和plugin
|
3月前
|
缓存 JSON JavaScript
Webpack 传递给 Loader 的原始内容是一个 UTF-8 格式编码的字符串
本文详细介绍了Webpack中Loader的概念及其重要性。Webpack仅支持处理JS和JSON文件,而对于CSS、图片等其他类型文件,则需要Loader来转换。文章列举了多种常见Loader,如css-loader、style-loader、babel-loader等,并提供了具体配置示例。此外,还介绍了如何自定义Loader,包括初始化项目、实现基本功能及处理异步操作等内容。通过本文,读者可以全面了解Loader的作用及其实现方法。
32 3
|
4月前
|
缓存 JSON JavaScript
用Webpack写一个Loader
在Webpack写一个Loader
24 1
|
3月前
webpack——You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.
webpack——You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.
463 0
|
JavaScript 前端开发
2.2.3 使用webpack loader
loader 是作用于应用中资源文件的转换行为。它们是函数(运行在 Node.js 环境中),接收资源文件的源代码作为参数,并返回新代码。举个栗子,可以通过jsx-loader将 Reac t的 JSX 代码转换为 JS 代码,从而可以被浏览器执行style-loader:将 ...
976 0
|
2月前
|
JavaScript
webpack打包TS
webpack打包TS
132 60