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 select下拉框操作常用方法
Nov 09 Javascript
javascript代码加载优化方法
Jan 30 Javascript
目前流行的JavaScript库的介绍及对比
Sep 29 Javascript
2014最热门的JavaScript代码高亮插件推荐
Nov 25 Javascript
实例详解angularjs和ajax的结合使用
Oct 22 Javascript
基于Jquery插件实现跨域异步上传文件功能
Apr 26 Javascript
jQuery实现下拉菜单的实例代码
Jun 19 jQuery
Material(包括Material Icon)在Angular2中的使用详解
Feb 11 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
Jun 07 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
Sep 19 Javascript
js 实现ajax发送步骤过程详解
Jul 25 Javascript
vue 实现用户登录方式的切换功能
Apr 14 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 Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
JS trim去空格的最佳实践
2011/10/30 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
node文字生成图片的示例代码
2017/10/26 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
[01:46]新英雄登场
2019/09/10 DOTA
Python基于DES算法加密解密实例
2015/06/03 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
Python 支持向量机分类器的实现
2020/01/15 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
Python 代码调试技巧示例代码
2020/08/11 Python
python 如何快速复制序列
2020/09/07 Python
python3中数组逆序输出方法
2020/12/01 Python
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
建筑公司文秘岗位职责
2013/11/29 职场文书
超市活动计划书
2014/04/24 职场文书
雷人标语集锦
2014/06/19 职场文书
2016年情人节问候语
2015/11/11 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers