美文网首页
webpack 学习笔记之四 , css-loader

webpack 学习笔记之四 , css-loader

作者: 人话博客 | 来源:发表于2019-02-24 21:17 被阅读0次

之前学习了 babel & babel-polyfill .
前者又来解决 ES6 -> ES5 语法的转化.
后者用来解决 ES6中一些API在老版本浏览器无法执行的问题.

这一次来学习使用 css-loader.

搭建好 bebel & babel-runtime 环境

const path = require('path')

module.exports = {
  entry: path.join(__dirname, 'app/index.js'),
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        use: 'babel-loader',
        exclude:/node_moudles/
      }
    ]
  }
}
  "build":"webpack --config webpack.config.js"

先尝试build一次.

image.png

成功,webpack.config.js 配置没有问题.安装的依赖插件也正常工作.

在webpack打包输出文件夹有一个html文件..

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>html</title>
</head>
<body>
  <p>看样式在哪里!!!!</p>
  <script src="bundle.js"></script>
</body>
</html>

尝试使用 .css 文件设置 p 元素的样式.

新建一个 index.css 并输入以下代码.

p{
  text-align: center;
  font-size: 30px;
  color: red;
  text-decoration: underline;
}

如何把 .css 的文件和 .html 文件联系起来呢?

.html文件中我们导入的 bundle.js.

这个 bunlde.jswebpack 打包生成的.

我们在webpack 打包路径所有文件链路里,随便选择一个文件,在里面键入 import .css 文件,应该可以的.

因为它会把所有依赖项,都打包进 bundle.js 文件.

我选择在 index.js 文件(也就是 webpack 的入口文件中).键入 import './assets/styles/index.css'

image.png

然后执行 npm run build

image.png

发现出错了.

说明:

  • webpack 在打包文件的时候,发现了 .css 后缀名的文件.
  • webpack 本身只认识 .js .json 文件,这个 .css 文件,它不知道该怎么处理.
  • 于是就从配置文件中,是否有 moudle.ruls[x].test=/\.css$/的配置.
  • 发现没有,于是就报错 You may need an appropriate loader to handle this file type

安装 css-loader

npm i --save-dev css-loader@0

注意,这里安装 css-loader@0的版本

配置 webpack.config.js

{
        test: /\.css$/,
        use: 'css-loader'
        
      }

运行 npm run build

image.png

编译成功.

打开 bundle.js 文件.

image.png

发现 css 的代码确实是写进了 bundle.js 文件中.

又因为 index.html 中是引用了 bunlde.js 文件的.不出意外,index.html 中的 p 元素应该样式已经生效.

发现css代码确实写进了js文件中. 但页面样式并没有生效....

image.png

当然,我看过了很多 webpack.config.js 的配置.说是还要加一个 style-loader..

于是接着安装 style-loader

npm i --save-dev style-loader

修改配置文件

 test: /\.css$/,
        use: ['style-loader','css-loader']

运行 npm run build

image.png

打开 index.html

image.png

css-loader 仅仅只是把样式代码写入 js.但只有这一步还不够.
还需要借助 style-loader 把写入js的样式代码插入到 index.html文件中.

image.png
  • css-loader,可以处理 import .css的问价.并将css代码写入 bundle.js 文件中.
  • 但仅仅只有上一步,样式代码还是无法设置到上去.
  • 还需要借助 style-loadercss-loader 获取到的代码 转交给 style-loader.让style-loadercss 插入到页面的 html.head.style标签中去.
  • 但中间的实际过程:
    • css-loadercss 写入js,然后 style-loader在去处理这些 js css.
    • 还是 css-loader 把数据直接传递给了 style-loader,然后style-loader 直接写入文件?
    • 我个人倾向后面这一种.
  • 有些资源是打包进 bundle.js中的,有的资源打进去不行,必须借助一个 loader 写入到 html中.

相关文章

网友评论

      本文标题:webpack 学习笔记之四 , css-loader

      本文链接:https://www.haomeiwen.com/subject/xutiyqtx.html