使用webpack loader加载器
了解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格式
使用webpack loader加载器的更多相关文章
- webpack loader加载器
配置loader,通过加载器处理文件,例如css sass less等,告诉webpack每一种文件都需要使用什么来加载器来处理. 1.node.js安装好之后也会自动默认安装好npm,所以cmd c ...
- Loader加载器
今天学到了这个Loader,浅谈一下自己的看法: 1.定义 Loader是一个加载器,可以用来它访问数据,可以看做访问数据的机器(好比挖掘机).装再器从android3.0开始引进,它使得在activ ...
- webpack常用加载器和插件
css文件加载器: style-loader,css-loader,sass-loader,less-loader //style和css加载器必须放在一起使用,且style必须放前面(style!c ...
- Webpack模块加载器
一.介绍 Webpack是德国开发者 Tobias Koppers 开发的模块加载器,它能把所有的资源文件(JS.JSX.CSS.CoffeeScript.Less.Sass.Image等)都作为模块 ...
- Webpack的加载器
一.什么是加载器(loaders)loaders 用于转换应用程序的资源文件,他们是运行在nodejs下的函数 使用参数来获取一个资源的来源并且返回一个新的来源(资源的位置),例如:你可以使用load ...
- 恶意软件开发——编写第一个Loader加载器
一.什么是shellcode loader? 上一篇文章说了,我们说到了什么是shellcode,为了使我们的shellcode加载到内存并执行,我们需要shellcode加载器,也就是我们的shel ...
- webpack配置常用loader加载器
webapck中使用loader的方法有三种 使用loader之前必须运行安装 : npm install --save-dev xxx-loader (1)通过CLI : 命令行中运行 webpac ...
- Webpack 常见静态资源处理 - 模块加载器(Loaders)+ExtractTextPlugin插件
Webpack 常见静态资源处理 - 模块加载器(Loaders)+ExtractTextPlugin插件 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二: ...
- AMD加载器实现笔记(三)
上一篇文章中我们为config添加了baseUrl和packages的支持,那么这篇文章中将会看到对shim与paths的支持. 要添加shim与paths,第一要务当然是了解他们的语义与用法.先来看 ...
随机推荐
- WPF自定义滚动条
我修改了一些地方,部分代码参考了博主 https://www.cnblogs.com/xiaomingg/ <!-- ScrollViewer 滚动条 --> <Style x:Ke ...
- mysql--MySQL数据库的简单认识
一.MySQL介绍 1.mysql版本 双授权版本:社区版(完全免费,功能也够nb了)和商业版(更好,功能更多更强大一些,但是收费,VIP,有售后服务,也会参考和吸收社区版的一些nb的功能,安全性和稳 ...
- PHP 代码优化测试【Benchmark数据测试】
由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 : --> 点击这里 Benchmark测试之前我们先来了解Benchmark.直接下载:ht ...
- 北航操作系统实验2019:Lab4-1代码实现参考
北航操作系统实验2019:Lab4-1代码实现参考 部分实现参考自Github前辈们的项目,经过一定程度的勘误. 如果这份代码中存在任何问题或错误,请务必不吝在评论区指出. Exercise 4.1 ...
- 【Oracle 12c】CUUG OCP认证071考试原题解析(32)
32.choose the best answer View the Exhibit and examine the data in EMP and DEPT tables. In the DEPT ...
- kali linux之无线渗透
无线技术变化大,难度大,既新鲜刺激,又压力山大.一半协议 一半理论 无线技术特点: 行业发展迅猛 互联网的重要入口 边界模糊 安全实施缺失而且困难 对技术不了解造成配置不当 企业网络私自接入ap破坏 ...
- IE8兼容性问题 val()
IE8有时使用val()不正常,需要使用attr('value') 另外还有一些其他问题: https://blog.csdn.net/chenyiminnanjing/article/details ...
- 细化Azure RBAC权限
Azure RBAC权限的细化一直是比较繁琐的事情,以下示例抛砖引玉,供大家参考 客户需求: 新用户在指定资源组下权限需求如下: 一.禁止以下权限 1. 调整虚拟机大小配置 2. 删除&停止虚 ...
- 在eclipse中,用maven创建web项目
备注:该文档是之前学习时,根据网上其他童鞋的经验自己测试后梳理,如有侵权,请勿怪,感谢! 1.在eclipse中用maven创建项目,右键new>>Maven Project 2.点击ne ...
- Spring事务杂谈
1. 什么是事务 事务就是以一种可控的方式,对资源进行的一组操作,保证了资源在事务前后,始终应处于被期待的正确的状态.比如不会受到宕机等原因的影响.事务本身,具有如下4种属性-ACID.(所以说事务是 ...