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 相关文章推荐
用javascript获取地址栏参数
Dec 22 Javascript
对采用动态原型方式无法展示继承机制得思考
Dec 04 Javascript
jquery.validate使用攻略 第三部
Jul 01 Javascript
字符串的replace方法应用浅析
Dec 06 Javascript
javascript通过元素id和name直接取得元素的方法
Apr 28 Javascript
js实现鼠标划过给div加透明度的方法
May 25 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
Nov 19 Javascript
javascript单页面手势滑屏切换原理详解
Mar 21 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
Apr 05 Javascript
AngularJS ng-bind 指令简单实现
Jul 30 Javascript
js学习笔记之事件处理模型
Oct 31 Javascript
详解Python中logging日志模块在多进程环境下的使用
Dec 26 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
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
python打印异常信息的两种实现方式
2019/12/24 Python
python中图像通道分离与合并实例
2020/01/17 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
美国内衣品牌:Leonisa
2016/08/14 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
物流管理专业大学生自荐信
2013/10/04 职场文书
应届行政管理专业个人自我评价
2013/12/28 职场文书
水电工岗位职责
2014/02/12 职场文书
党员倡议书
2015/01/19 职场文书
财务人员个人工作总结
2015/02/27 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
Python Matplotlib库实现画局部图
2021/11/17 Python
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技