webpack入坑之旅(二)loader入门
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack 在本人有了新的理解与认识之后,会对文章有不定时的更正与更新。下面是目前完成的列表:
- webpack入坑之旅(一)不是开始的开始
- webpack入坑之旅(二)loader入门
- webpack入坑之旅(三)webpack.config入门
- webpack入坑之旅(四)扬帆起航
- webpack入坑之旅(五)加载vue单文件组件
- webpack入坑之旅(六)配合vue-router实现SPA
引子
在上一篇博客中我们已经成功的把简单的事情变得复杂了,把我们的只有几行代码的两个文件first.js、entry.js使用webpack进行文件打包生成了bundle.js。
Webpack 能做的就是这样,只能处理 JavaScript 模块。
当然它如果能做的仅仅是这样,那它也就不可能这么火了=_=。所以它可以通过引入其他的loader,进而可以处理其它类型的文件。
loader介绍
Loader可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为参数,返回转换的结果。这样,我们就可以通过require来加载任何类型的模块或文件,比如VUE、JSX、SASS 或图片。
先来看看 loader 有哪些特性?
Loader可以通过管道方式链式调用,每个loader可以把资源转换成任意格式并传递给下一个loader,但是最后一个loader必须返回JavaScript。Loader可以同步或异步执行。Loader运行在node.js环境中,所以可以做任何可能的事情。Loader可以接受参数,以此来传递配置项给loader。Loader可以通过文件扩展名(或正则表达式)绑定给不同类型的文件。Loader可以通过npm发布和安装。- 除了通过
package.json的main指定,通常的模块也可以导出一个loader来使用。 Loader可以访问配置。- 插件可以让
loader拥有更多特性。 Loader可以分发出附加的任意文件。
loader使用
安装
根据上面说的loader的知识,就这样编译是肯定不行的,所以我们安装用来读取css文件的css-loader,再用 style-loader 把它插入到页面中。
在命令行中输入:
|
1
|
npm install css-loader style-loader --save-dev
|
在package.json中,主要是devDependencies这个字段有了改变:
|
1
2
3
4
5
|
"devDependencies": {
"css-loader": "^0.23.1",
"style-loader": "^0.13.0",
"webpack": "^1.12.2"
}
|
当然你可以用一个更加方便的方式进行安装,可以直接在package.json中,添加相应的依赖(如上面的代码),之后的命令行中运行npm intall,它会自动帮我们安装相应的依赖。
安装完毕。
加载 CSS 文件
还是上一篇博客中的文件,来添加一个css文件。style.css,在里面添加
|
1
2
3
|
body {
background: red;
}
|
修改我们的entry.js,原文件不变,添加require("!style!css!./style.css");,用来引入我们的css文件。
我们继续编译:
|
1
|
webpack entry.js bundle.js
|
完成后,刷新我们的页面,背景颜色是不是已经变成了红色了呢?
扩展名自动绑定loader
这就是我们的loader的使用方式了。如果每次 require CSS 文件的时候都要写 loader 前缀!style!css!这样的东西,显然是一件很麻烦的事情。我们需要它可以根据模块类型(扩展名)来自动绑定需要的 loader。
来看看更简便的方式,将 entry.js 中的 require("!style!css!./style.css")修改为require("./style.css"),可以改变一个背景颜色让你更明显的查看到变化!然后执行:
|
1
|
webpack entry.js bundle.js --module-bind "css=style!css"
|
。。
。。。
没成功对吧!
因为!在命令行中具有特殊的含义,所以我们需要对它进行转义操作。再来试试:
|
1
|
webpack ./entry.js bundle.js --module-bind "css=style\!css"
|
成功的话,应该能再次看到背景的变化。
虽然这样可以将多个css文件进行编译打包,但是总感觉很是繁琐,我不想每次都运行那么一长串的命令怎么办?继续向下走吧。
webpack入坑之旅(二)loader入门的更多相关文章
- webpack入坑之旅(三)webpack.config入门
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- webpack入坑之旅(六)配合vue-router实现SPA
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- webpack入坑之旅(五)加载vue单文件组件
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- webpack入坑之旅(四)扬帆起航
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- webpack入坑之旅(一)不是开始的开始
最近学习框架,选择了vue,然后接触到了vue中的单文件组件,官方推荐使用 Webpack + vue-loader构建这些单文件 Vue 组件,于是就开始了webpack的入坑之旅.因为原来没有用过 ...
- webpack入坑之旅(一)入门安装
学习一个新的东西,首先第一步就是安装,有时候会遇到各种奇葩的问题 至于什么是webpack我这里就不介绍了,请参考官网:https://github.com/webpack/webpack 安装 前提 ...
- webpack入坑之旅
转自: http://guowenfh.github.io/2016/03/24/vue-webpack-01-base/ http://guowenfh.github.io/2016/03/25/v ...
- vue+ vue-router + webpack 踩坑之旅
说是踩坑之旅 其实是最近在思考一些问题 然后想实现方案的时候,就慢慢的查到这些方案 老司机可以忽略下面的内容了 1)起因 考虑到数据分离的问题 因为server是express搭的 自然少 ...
- Docker入坑系列(二)
Docker入坑系列(二) 上一篇我们为Docker创造了一个良好的生活环境,这一篇我们就开始让Docker活起来. 安装Docker ok,原文地址在这里. 当然,我只是自己翻译了一下而已- -跟着 ...
随机推荐
- linux时间不同步问题
怪问题: 时间同步失效 系统: centos 6.6 2.6.32-504.el6.x86_64 情况: 定时任务中写了每分钟同步一次系统时间,定时任务执行成功,时间却未同步,奇怪? 现象: [ro ...
- PCI在linux系统中注册与注销示例
1. pci_driver结构struct pci_driver { struct list_head node; const char *name; const struct pc ...
- Stanford机器学习笔记-4. 神经网络Neural Networks (part one)
4. Neural Networks (part one) Content: 4. Neural Networks (part one) 4.1 Non-linear Classification. ...
- Codeforces 460D Little Victor and Set --分类讨论+构造
题意:从区间[L,R]中选取不多于k个数,使这些数异或和尽量小,输出最小异或和以及选取的那些数. 解法:分类讨论. 设选取k个数. 1. k=4的时候如果区间长度>=4且L是偶数,那么可以构造四 ...
- UNITY3D单词学习 speed和velocity的区别
在日常用语中,这两个词没有区别,可以通用. 而在物理学里,velocity 是一个矢量(vector quantity)表示起点与终点间直线距离的长度除以所用时间所得的量,并注明方向;而 speed ...
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接解决办法
问题现象和http://hi.baidu.com/cara_cloud/item/193a3ee327546d395a2d64be描述的一样,就是在eclipse的console栏中一直显示java. ...
- MVC,MVP 和 MVVM 的图示
作者: 阮一峰 日期: 2015年2月 1日 复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身 ...
- HTML 学习笔记 CSS3 (2D转换)
2.scaleX(<number>) : 使用 [sx,1] 缩放矢量执行缩放操作,sx为所需参数.scaleX表示元素只在X轴(水平方向)缩放元素,他的默认值是(1,1),其基点一样是在 ...
- linux运维中的命令梳理(四)
----------管理命令---------- ps命令:查看进程 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不 ...
- Docker简明教程(以安装wget程序为例)
本文计划: 一.安装Docker(Centos) 二.注册Docker官网帐号 三.下载基础centos镜像,安装需要的软件和环境后,push到自己的repository 一.安装Docker(Cen ...