webpack的CSS加载器的使用


Posted in Javascript onSeptember 11, 2018

什么是loader

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

loader的解析

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

webpack中常用的加载器

css-loader 处理css中路径引用等问题

用于在js中加载css,解释@import和url()

options

alias: 解析别名

importLoaders(@import): 在css-loader前应用的loader的数目,默认为0

Minimize: true or false 是否开启css代码压缩,比如压缩空格不换行

modules: 是否开启css-module

module.exports = {
 ...
 module: {
  rules: [{
   test: /\.css$/,
   use: ['style-loader', {
    loader: 'css-loader',
    options: {//当css文件中又引用了其他的css的时候,需要设置importLoaders
     importLoaders: 1
    }
   }]
  }]
 }
};

style-loader 动态把样式写入css

加载的css作为style标签内容插入到html中,以<style></style>形式在html页面中插入css代码

options

insertAt: 插入位置

insertInto: 插入到指定的dom

singleton: true or false,多个样式是否只生成一个<style></style>标签

postcss-loader

postcss-loader:为了浏览器的兼容性,有时候我们必须加上-webkitm, -ms, -moz等前缀。目的就是让页面可以在每个浏览器上正常运行。postcss是一个CSS的处理平台可以帮CSS实现更多的功能。

用法:

安装postcss: npm install postcss-loader autoprefixer

配置文件

webpack.config.js:

module: {
 rules: [{
  test: /\.css$/
  loader: 'style-loader!css-loader!postcss-loader'
 }]
}

postcss.config.js

module.exports = {
 plugins: [
  require('autoprefixer')//在postcss-loader中引入autoprefixer插件
 ]
}

或者

const autoprefixer = require('autoprefixer');
module: {
 rules: [{
  test: /\.css$/,
  use: ['style-loader', 'css-loader', {
   loader: 'postcss-loader',
   options: {
    plugins() {
     return [autoprefixer];
    }
   }
  }]
 }]
}

less-style

添加对webpack的LESS支持。当遇到less文件时,先交给less-loader处理,然后交给css-loader,最后交由style-loader处理,然后执行webpack打包

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

要启用CSS的source map,你需要将sourceMap选项传递给less-loader和css-loader

CSS SourceMap信息文件,里面存储着位置信息。随着代码增多,我们会对代码进行压缩,代码压缩之后进行调bug定位会非常困难,于是引入sourceMap记录压缩前后的位置信息,当产生错误时直接定位到未压缩前的位置,方便调试。简单来说就是记录压缩的翻译文件,通过这个文件可以找到你的对应源码

module.exports = {
 ...
 module: {
  rules: [{
   test: /\.less$/,
   use: ['style-loader', 'css-loader', {
    loader: 'less-loader',
    options: {
     sourceMap: true
    }
   }]
  }]
 }
};

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS延迟加载(setTimeout) JS最后加载
Jul 15 Javascript
在jquery中combobox多选的不兼容问题总结
Dec 24 Javascript
一个JavaScript用逗号分割字符串实例
Sep 22 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
Dec 31 Javascript
jQuery中:password选择器用法实例
Jan 03 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
Mar 28 Javascript
Vue.js实现文章评论和回复评论功能
May 30 Javascript
jquery.picsign图片标注组件实例详解
Feb 02 jQuery
原生js实现拖拽功能基本思路详解
Apr 18 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
Jun 02 Javascript
Vue filter 过滤器、以及在table中的使用介绍
Sep 07 Javascript
原生js实现下拉框选择组件
Jan 20 Javascript
JavaScript基础教程之如何实现一个简单的promise
Sep 11 #Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
Sep 11 #Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
Sep 11 #Javascript
Angular6 正则表达式允许输入部分中文字符
Sep 10 #Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
Sep 10 #Javascript
详解Eslint 配置及规则说明
Sep 10 #Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
Sep 10 #Javascript
You might like
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
php实现Mysql简易操作类
2015/10/11 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
AngularJS基础 ng-paste 指令简单示例
2016/08/02 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
python实现哈希表
2014/02/07 Python
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
python 性能提升的几种方法
2016/07/15 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
python监控nginx端口和进程状态
2019/09/06 Python
详解Django admin高级用法
2019/11/06 Python
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
售前工程师职业生涯规划
2014/03/02 职场文书
2014年纪检工作总结
2014/11/12 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
趣味运动会赞词
2015/07/22 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
Vue的过滤器你真了解吗
2022/02/24 Vue.js