这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack 在本人有了新的理解与认识之后,会对文章有不定时的更正与更新。下面是目前完成的列表:

引子

在上一篇博客中我们已经成功的把简单的事情变得复杂了,把我们的只有几行代码的两个文件first.jsentry.js使用webpack进行文件打包生成了bundle.js

Webpack 能做的就是这样,只能处理 JavaScript 模块。

当然它如果能做的仅仅是这样,那它也就不可能这么火了=_=。所以它可以通过引入其他的loader,进而可以处理其它类型的文件。

loader介绍

Loader可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为参数,返回转换的结果。这样,我们就可以通过require来加载任何类型的模块或文件,比如VUEJSXSASS 或图片。

先来看看 loader 有哪些特性?

  • Loader可以通过管道方式链式调用,每个loader可以把资源转换成任意格式并传递给下一个loader,但是最后一个loader必须返回JavaScript。
  • Loader可以同步或异步执行。
  • Loader运行在node.js环境中,所以可以做任何可能的事情。
  • Loader可以接受参数,以此来传递配置项给loader
  • Loader可以通过文件扩展名(或正则表达式)绑定给不同类型的文件。
  • Loader可以通过npm发布和安装。
  • 除了通过package.jsonmain指定,通常的模块也可以导出一个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入门的更多相关文章

  1. webpack入坑之旅(三)webpack.config入门

    这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...

  2. webpack入坑之旅(六)配合vue-router实现SPA

    这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...

  3. webpack入坑之旅(五)加载vue单文件组件

    这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...

  4. webpack入坑之旅(四)扬帆起航

    这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...

  5. webpack入坑之旅(一)不是开始的开始

    最近学习框架,选择了vue,然后接触到了vue中的单文件组件,官方推荐使用 Webpack + vue-loader构建这些单文件 Vue 组件,于是就开始了webpack的入坑之旅.因为原来没有用过 ...

  6. webpack入坑之旅(一)入门安装

    学习一个新的东西,首先第一步就是安装,有时候会遇到各种奇葩的问题 至于什么是webpack我这里就不介绍了,请参考官网:https://github.com/webpack/webpack 安装 前提 ...

  7. webpack入坑之旅

    转自: http://guowenfh.github.io/2016/03/24/vue-webpack-01-base/ http://guowenfh.github.io/2016/03/25/v ...

  8. vue+ vue-router + webpack 踩坑之旅

    说是踩坑之旅 其实是最近在思考一些问题 然后想实现方案的时候,就慢慢的查到这些方案   老司机可以忽略下面的内容了 1)起因  考虑到数据分离的问题  因为server是express搭的   自然少 ...

  9. Docker入坑系列(二)

    Docker入坑系列(二) 上一篇我们为Docker创造了一个良好的生活环境,这一篇我们就开始让Docker活起来. 安装Docker ok,原文地址在这里. 当然,我只是自己翻译了一下而已- -跟着 ...

随机推荐

  1. Jquery 的遍历,祖先、后代、同胞以及其过滤

    什么是遍历? jQuery 遍历,意为“移动”,用于根据其相对于其他元素的关系来“查找”(或选取)HTML 元素.以某项选择开始,并沿着这个选择移动,直到抵达您期望的元素为止. 下图展示了一个家族树. ...

  2. Linux学习书籍推荐

    入门书: <鸟哥的私房菜(基础篇)> <鸟哥的私房菜(服务篇)> <Linux命令行与Shell脚本编程大全(第2版)> <UNIX/Linux 系统管理技术 ...

  3. 网络错误定位案例 ICMP host *** unreachable - admin prohibited

    1. 环境 一台物理服务器 9.115.251.86,上面创建两个虚机,每个虚机两个网卡: vm1:eth0 - 9.*.*.232 eth1:10.0.0.14 vm2: eth0 - 9.8.*. ...

  4. Gprinter热敏打印机光栅位图点阵数据解析工具

    最近参与的项目有一个需求,解析佳博热敏打印机的光栅位图点阵数据并保存为图片文件.数据是通过Bus Hound抓取的,如下图所示. 其中1b 40为初始化打印机的指令,对应的ASCII码为ESC @,1 ...

  5. 树网的核[树 floyd]

    描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并设T ...

  6. 02章《深入C#数据类型》项目经理评分

    一:创建MyOffices项目,创建UserInfo类,用来存储员工 工号,姓名,年龄,评价,年度得分 二:创建查看评分窗体(frmShow),添加定义员工数组,将员工数据绑定到frmShow窗体的L ...

  7. jmeter-HTTP COOKIE Manager

    http://wangsheng14591.blog.163.com/blog/static/327797102012829101351887/

  8. Centos下Tomcat 安装Apache Portable Runtime

    APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server 2.x的核心. APR有很多用途,包括访问高级IO功能(例如sendfile,epo ...

  9. PL/SQL Block Structure

    [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORAC ...

  10. FSL - MELODIC

    Source: http://fsl.fmrib.ox.ac.uk/fsl/fslwiki/MELODIC; https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/MELODI ...