webpack 引入css link,demo11 webpack处理css

2023-05-16

在 webpack 中,所有类型的文件都是模块,比如 js、css、图片、字体、json(可以说是万物皆模块)。

但是,在普通的 js 代码中,我们直接 import (或require) 一张图片或css是会报错的。

但在 webpack 构建的项目中,归功于 loader(加载器),webpack 能够把 js 的模块化推广至其他类型文件,比如:

import('xxx.css'); // 通过css-loader处理

复制代码

2.处理 css 为什么要通过 webpack

传统引用 css 代码的方式是在 html 通过

标签来引入样式。

但是这样不是很方便,借助 webpack 的 style-loader

和 css-loader

等 loader (或plugin),我们可以实现在 .js 或者 .ts 中引用 css 文件,并让样式以

或者

的方式自动添加到 html 文件中。

3.相关 loader 或 plugin

css-loader: 实现在 js 代码中加载 css 文件,并把 css 代码转化为 js 的一个 module ,比如 import('./xxx.css')

style-loader: 实现把加载的 css 代码作为 style

标签内容插入到 html 中

style-loader/url: 实现把加载的 css 代码以 link

内容插入到 html 中

file-loader: 实现对文件进行处理,比如修改文件名,并且输出到指定的路径,

file-loader 可以单独使用,也可以和 url-loader 一起使用

4.分别实现以

的方式引用 css

4.1 以

方式引用 css 需要的 loader 为: css-loader

+ style-loader

webpack.config.js 关键配置如下:

rules: [

{

test: /\.css$/,

// 以

use: [

{

loader: "style-loader",

options: {

singleton: true // 处理为单个style标签,注释掉试试看?

}

},

"css-loader"

]

}

],

复制代码

4.2 以

方式引用 css 需要的 loader 为: file-loader

+ style-loader/url

(与 style-loader 是同一个包)

webpack.config.js 关键配置如下:

rules: [

{

test: /\.css$/,

// 以标签形式引用css

use: [

"style-loader/url",

"file-loader"

]

}

]

复制代码

5.安装相关依赖

npm install -D css-loader

npm install -D style-loader

npm install -D file-loader

复制代码

6.目录结构

// `--` 代表目录, `-` 代表文件

--demo11

--src

-app.js

-style1.css

-style2.css

-index.html

-webpack.config.js

复制代码

src/app.js

// 同步加载

const style1 = import("./style1.css");

const style2 = import("./style2.css");

// window.addEventListener("click", function () {

// // 试试异步加载? 查看控制台试试

// const style1 = import("./style1.css");

// const style2 = import("./style2.css");

// });

复制代码

src/style1.css

body {

background-color: red;

}

/* console.log('11111'); */

复制代码

src/style2.css

body {

color: black;

}

复制代码

7.编写 webpack 配置文件

webpack.config.js

const path = require("path");

module.exports = {

entry: {

app: "./src/app.js"

},

output: {

publicPath: __dirname + "/dist/", // 打包后资源文件的引用会基于此路径

path: path.resolve(__dirname, "dist"), // 打包后的输出目录

filename: "[name].bundle.js"

},

module: {

rules: [

{

test: /\.css$/,

// 以

use: [

{

loader: "style-loader",

options: {

singleton: true // 处理为单个style标签,注释掉试试看?

}

},

"css-loader"

]

}

],

// rules: [

// {

// test: /\.css$/,

// // 以标签形式引用css

// use: [

// "style-loader/url",

// {

// loader: "file-loader",

// options: {

// name: '[name].[hash].css'

// }

// }

// ]

// }

// ]

}

};

复制代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webpack 引入css link,demo11 webpack处理css 的相关文章

  • jquery:当我在文档上附加一层时,如何重置文档滚动条?

    当我在文档上附加图层时 如何重置文档滚动条 例如 它就像 Facebook 页面 当您有一个很长的文档时 您需要向下滚动才能查看较旧的图像 帖子 当你点击照片时 滚动条发生了变化 从顶部开始 但文档页面根本不跳转 当关闭照片查看器图层时 滚
  • 如何使 jQuery 向上动画

    我有一些 jquery 运行得相当好 但是当我将鼠标悬停在有问题的元素上时 底部向下扩展 这并不意外 但不是所需的效果 我希望元素的底部保持静止 而元素的顶部向上扩展 如果您想查看我目前拥有的内容 您可以导航至http demo ivann
  • 如何在 Bootstrap 3 中指定行高?

    使用 Bootstrap 3 我将 row 类的高度设置为 3 5em 我在行中有几个输入 它们与行的顶部对齐 我想让它们底部对齐 我尝试过垂直对齐 底部的样式 但这似乎不起作用 我想让东西底部对齐的原因是我有一个浮动标签 我在输入字段上方
  • gwt 中的垂直居中

    如何使用垂直面板在 gwt 中垂直居中 或者请告诉我有什么方法可以进行垂直居中 如果你想直接使用VerticalPanel从代码中 您需要使用setVerticalAlignment HasVerticalAlignment ALIGN M
  • 由于绝对定位的抽屉,移动键盘可以向上推内容

    我正在制作一个带有 3 个抽屉的网站 元素绝对位于屏幕外 一个在左侧 一个在右侧 一个在底部 看看这里的网站 看看我在说什么https sjbuysse github io javascriting index html https sjb
  • 如何将 .env 文件变量传递给 webpack 配置?

    我是 webpack 的新手 几乎完成了所有构建部分 但现在的问题是我想将环境变量从 env 文件传递 到 webpack 配置 以便我可以通过以下方式将该变量传递到我的构建文件webpack DefinePlugin plugin 目前我
  • 是否可以仅针对 Chrome,而不是所有支持 Webkit 的浏览器?

    隐约相关这个问题 https stackoverflow com questions 2447511 can you target google chrome 但又不完全相同 我只想定位 Chrome 而不定位 Safari 我使用了以下媒
  • 使用 RGBA 颜色覆盖背景图像,并使用 CSS3 过渡

    今天早些时候我问使用 rgba 背景颜色覆盖背景图像 https stackoverflow com q 17134929 1544337 我的目标是拥有一个带有背景图像的 div 当有人将鼠标悬停在 div 上时 背景图像会覆盖有 rgb
  • 具有客户端/服务器节点设置的 Webpack?

    我正在尝试为带有节点后端服务器的 Angular2 应用程序设置基于 webpack 的流程 经过几个小时的努力 我已经成功地让客户端愉快地构建了 但我现在不知道如何集成我的服务器构建 我的服务器使用生成器 因此必须以 ES6 为目标 并且
  • data:image/png;base64 是什么意思?

    我从一个在线网站上举了一个例子 CSS 包含一个指向 png 的 URL 和一些随机字母 在这两种情况下 任何人都可以告诉我如何制作这样的代码 或者更确切地说 这些代码是关于什么的 这是html
  • 使 html svg 对象也成为可点击的链接(在 iPhone 上)

    这个问题与使 html svg 对象也成为可点击的链接 https stackoverflow com q 11374059 4825796 但给出的答案似乎不适用于 iPhone ios 9 3 safari 和 chrome 浏览器 我
  • 为什么插入符号在具有position:relative的contenteditable中不可见?

    When a contenteditable元素有position relative和背景颜色 插入符号放置在该元素中时是不可见的 这是一个例子 bug position relative background color lightgre
  • CSS - 100% 高度,带页眉和页脚

    我正在尝试设计一个带有页眉 延伸至 100 垂直景观 减去页眉和页脚 的主 div 和页脚的页面 就像这张照片 我可以让标题和主 div 正常工作 像这样 div div class header div HEADER div div cl
  • CSS @font-face 有时在 Internet Explorer 中有效,但并非总是有效

    我在使用 Internet Explorer 11 中的网络字体时遇到问题 该字体适用于某些使用 IE11 的用户 但不适用于其他用户 即使它们是同一浏览器 对于遇到问题的用户 Modernizr fontface 仍然返回 true 因此
  • 正常显示截断的文本,但悬停时显示完整文本

    我有一个 div 里面有一段左右的文本 我希望它正常显示前几个单词 但在悬停时展开以显示全文 理想情况下 我想仅使用 CSS 来完成此操作 而不需要重复数据 这是我尝试过的 div 1 ONE div
  • 使用非常大的背景位置偏移是否存在性能问题?

    我正在构建一个进度条控件 并且正在研究它实际上并不显示进度 而只是旋转 正在发生某事 的指示器的情况 我的设计基本上是交替的对角条纹 本质上是一个像这样的理发杆 但是 旋转 由于希望将尽可能多的负载转移给渲染引擎 我想为此使用 CSS 过渡
  • CSS 网格/布局框架,专注于固定元素和单页全屏布局

    经验法则 如果您在布局中过多地使用 CSS 请切换到框架 我已经研究了数十个网格 布局框架 其中大多数都专注于传统的文档网格布局 我的页面更像是一个 SPA 单页应用程序 它类似于桌面应用程序使用的布局 显然 HTML 不能很好地处理这个问
  • 未捕获的异常:数据表编辑器 - 不允许远程托管代码

    我正在尝试使用 Datatables 使用 datatableseditor 来实现 CRUD 操作 但是我收到错误消息 1 未捕获的异常 数据表编辑器 不允许远程托管代码 请参见http editor datatables net有关如何
  • 什么时候可以使用Javascript,什么时候不可以?

    不使用太多 javascript jquery 是个好习惯吗 我们应该尽可能避免它 为了良好的可访问性 吗 什么时候可以使用 JavaScript 什么时候不能在网页设计和开发中使用 JavaScript 在什么场景 什么条件下 Updat
  • 将 monaco 编辑器集成到 ember 辛烷中

    我尝试整合摩纳哥代码 https github com Microsoft monaco editor编辑到我的 ember 辛烷应用程序中 目前我正在使用 ESM 导入样式并确认手册 我安装了 webpack 加载器插件并将其集成到我的

随机推荐