html-loader的作用

  • 在开发中,如果需要在.HTML文件中使用到模板字符串,字符串中使用到了变量,那么HTML-Plguin是无法处理的,所以会报错,如果想解决这个问题,我们需要借助一个loader----html-loader

css-loader的作用

  • 在开发vue项目的过程中,因为代码太多太混乱,导致有的时候看不清那个ele元素的样式需要一个个去找,这个是框架出来之前一直都存在的通病,现在通常都会使用less或者sass配合组件化开发,让每个子元素的样式都可以嵌套在一个父元素中,提高代码观赏性。
  • Less是css预处理预处理语言,扩展了CSS语言,增加了变量、Mixin、函数等特性,Less-loader的作用就是将less代码转译为浏览器可以识别的CSS代码。
// demo.less
@base: #f938ab;.box-shadow(@style, @c) when (iscolor(@c)) {-webkit-box-shadow: @style @c;box-shadow:         @style @c;
}
.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {.box-shadow(@style, rgba(0, 0, 0, @alpha));
}
.box {color: saturate(@base, 5%);border-color: lighten(@base, 30%);div { .box-shadow(0 0 5px, 30%) }
}

上面的less会被less-loader解析成为

// demo.css
.box {color: #fe33ac;border-color: #fdcdea;
}
.box div {-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}

css-loader

  • css-loader的作用主要是解析css文件中的@import和url语句,处理css-modules,并将结果作为一个js模块返回。在项目中我有用到的就是通常我们需要给软件定义一个主题色,如果是移动端页面的话,还需要根据尺寸定义字体大小,或者说可以定义三种字体大小,让项目中所有地方都可以用的到,就可以定义css样式中的变量,再在需要该主题色或者字体的直接引入即可。

假如我们有a.css、b.css、c.css:

// a.css
@import './b.css'; // 导入b.css.a {font-size: 16px;
}// b.css
@import './c.css'; // 导入c.css.b {color: red;
}// c.css
.c {font-weight: bolder;
}

再看一下css-loader对上面css的解析

// css-loader输出exports = module.exports = require("../../../node_modules/css-loader/lib/css-base.js")(false);// imports
// 文件需要的依赖js模块,这里为空// module
exports.push([ // 模块导出内容module.id, ".src-components-Home-index__c--3riXS {\n  font-weight: bolder;\n}\n.src-components-Home-index__b--I-yI3 {\n  color: red;\n}\n.src-components-Home-index__a--3EFPE {\n  font-size: 16px;\n}\n", ""
]); // exports
exports.locals = { // css-modules的类名映射"c": "src-components-Home-index__c--3riXS","b": "src-components-Home-index__b--I-yI3","a": "src-components-Home-index__a--3EFPE"
};

可以理解为css-loader将a.css、b.css和c.css的样式内容以字符串的形式拼接在一起,并将其作为js模块的导出内容。

style-loader

  • 经过css-loader的转译,我们已经得到了完整的css样式代码,style-loader的作用就是将结果以style标签的方式插入DOM树中。

直觉上似乎我们只需要像下面这样返回一段js代码,将css-loader返回的结果插入DOM就行:

module.exports = function (content) {return `const style = document.createElement('style');style.innerHTML = '${content}';document.head.appendChild(style);`;
};

此文对照原文加工学习
原文链接:https://juejin.cn/post/6944668149849522213

html-loader、css-loader、style-loader简单描述相关推荐

  1. 加载html动画logo,仅CSS实现的加载动画 – Loader.css

    仅CSS实现的加载动画 – Loader.css 4月 13, 2015 评论 (6) Sponsor 当网页的页面大小较大,用户加载可能需要较长的时间,在这些情况下,我们一般会用到(加载)loadi ...

  2. vue-cli Webpack之Loader原理及自定义Loader

    文章目录 1. Loader 分类与执行顺序 1.1 Loader 分类 1.2 Loader 执行顺序 1.3 使用Loader方式 1.3.1 内联 Loader 2. 开发 Loader 步骤 ...

  3. Webpack之Loader原理及自定义Loader

    文章目录 1. Loader 分类与执行顺序 1.1 Loader 分类 1.2 Loader 执行顺序 1.3 使用Loader方式 1.3.1 内联 Loader 2. 开发 Loader 步骤 ...

  4. webpack loader解析及自定义loader

    自定义实现webpack loader加载模块,解析指定的类型文件 loader loader是一个导出为函数的node模块,可通过this访问上下文. 特点: loader单一职责,只负责解决单一的 ...

  5. CSS背景图像的简单响应

    本文设有很多,最理想的解决方案,响应图像只是其中之一.我们建议您查看不同的方法,然后再选择一个特定的响应图像解决方案,包括这两个:如何避免重复下载响应图像中选择响应图像解决方案. 大家都在谈论的的sr ...

  6. JavaScript修改css中style,classname,cssText实例

    一.局部改变样式  分为改变直接样式,改变className和改变cssText三种.需要注意的是:  注意大小写:  javascript对大小写十分敏感,className不能够把"N& ...

  7. CSS实验案例02简单专业介绍网页

    文章目录 CSS实验案例02简单专业介绍网页 2.1CSS 2.2HTML CSS实验案例02简单专业介绍网页 2.1CSS body {/* 主体*/font-size: 24px;text-ali ...

  8. 简单描述下微信小程序的相关文件类型?

    简单描述下微信小程序的相关文件类型? 微信小程序项目结构主要有四个文件类型,如下: .WXML 是框架设计的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构.内部主要是微信自己定义的一套组件 ...

  9. css画钟表_利用css+原生js制作简单的钟表

    利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期 ...

  10. css 修改文字基准线_HTML4/HTML5 用CSS或style属性修改 hr 实线 虚线 点线 双实线样式 ... ......

    HTML4/HTML5 用CSS或style属性修改 实线 虚线 点线 双实线样式 HTML 是 Hyper Text Markup Language 的英文缩写,中文称为超文本标记语言.HTML 是 ...

最新文章

  1. mysql数据库DDL操作
  2. jQuery利用JSONP解决AJAX跨域请求
  3. 在你迷茫时不如学好一门语言(送给大一的学弟学妹)
  4. vs2010上opencv配置
  5. oracle sql 取最大分组,oracle sql 按某个字段分组然后从每组取出最大的一条纪录...
  6. 医库软件-珍立拍 成功晋级黑马大赛总决赛
  7. FL Studio20.9进阶版 果味版 高级版 完整版区别
  8. 快速排序(填坑与交换)
  9. ROS(sub,pub)测试 Plotjuggler
  10. pyqt任务栏图标显示问题
  11. 关于 移动硬盘数据丢失问题 的解决方法
  12. Python OpenCV3 计算机视觉秘籍:1~5
  13. 使用MPC设计控制器
  14. git 命令git 地址_5个高级Git命令来启动您的Git游戏
  15. 解决java关键字和bean变量名内容冲突的神器
  16. *和multiply
  17. hiper – web_Web设计行业分析–专业人士与业余者[信息图]
  18. 后台数据管理——firebase和野狗
  19. 基于C++的文件加密解密(密码学课程设计)
  20. 手机地图渲染的方式讨论

热门文章

  1. AndroidStudio更改SDK路径以及AVD模拟器路径
  2. myEclipse(MyEclipse)下VSS的安装和使用
  3. [AV1] Motion Vector Prediction
  4. 【资源分享】一周整理的,这是价值10W的32个Python项目!
  5. 磁盘管理找不到新加硬盘,借助DG(DiskGenius)实现新加硬盘初始化分区和之前硬盘的数据迁移
  6. 机试算法题-敲击计数器
  7. Java配置文件找不到指定,使用@ContextConfiguration注解后,提示找不到配置文件
  8. 【2022年对话机器人chatbot】SaleSmartly如何解决客服难题
  9. zbb20180619 mysql windows环境下MySQL重启的命令行说明
  10. 【转载】Cmd Markdown 数学公式指导手册