# CSS/Style-Loader

如果在 Webpack 配置中,只配置了 css-loader ,而没有配置 style-loader ,打包后我们会发现样式并没有应用于DOM 元素中

// vue.deploy.config.js
{
    test: /.css$/,
    loader: 'css-loader',
}
// public.css
.div{
    background-color: red;
    width: 100px;
    height: 100px;
}
import './public.css';
let div = document.createElement("div");
div.className = "div";
div.innerText = "hello div";
document.getElementsByTagName("body")[0].appendChild(div);

样式内容并没有应用到 div 上面,原因是 css-loader 只是帮我们解析了 css 文件里面的 css 代码,默认 Webpack 是只解析 js 代码的,所以 css-loader 的作用就是把 css 文件打包成 js 模块而已,想要应用样式我们要把解析完的 css 代码应用到 DOM 元素中

我们在 index.js 打印看下 css 解析后的内容

根据这个格式我们更改一下 index.js 代码

import css from './public.css';

let div = document.createElement("div");
div.className = "rect";
div.innerText = "hello div";

let body = document.getElementsByTagName("body")[0];

let style = document.createElement("style");
style.innerText = css[0][1];

body.appendChild(style);
body.appendChild(div);

运行后就看到效果了

但是手动将 style 标签加入到 html 文档中很麻烦,所以就有了 style-loader

style-loader 就是帮我们直接将 css-loader 解析后的内容挂载到 html 页面当中,我们来看一下