jsp引入css文件不生效_【webpack实践】配置webpack,支持css

aaf1e4f811d35910a776874bbfe90582.png

webpack本身默认是只打包JS的代码的,所以只能支持在Js代码中写样式代码,如果独立成css文件再引入的话就会报错。所以我们需要css-loader和style-loader来帮忙处理

给定代码 app.jsx

import React from 'react'
import './app.css'

class App extends React.Component {
    constructor() {
        super()
    }
    render() {
        return (
            <div>
                <div style={style.helloWorld} >Hello World!!!!!</div>
                <div style={{background: 'green',}}>hello hello hello</div>
                <div className='chinese'>一二三四五</div>
            </div>
            )
    }
}

// 组件内使用css
const style = {
    helloWorld: {
        background: 'red',
        width: '200px',
        height: '200px'
    }
}
export default App

9e313bfeb2db6068911d10ba221eb381.png

然后是app.css

.chinese {
    background-color: blue;
}

当我们不加入css-loader 和style-loader 时,执行运行

5e93a546ef6827dbaf11ad9d6a40d8d3.png

从这里可以看出 css文件中的chinese css属性没有生效(一二三四五背景色没变化)。

当我们在webpack.config.js 中添加配置

    module: {
        rules: [
            {
                test: /.jsx?$/,
                loader: ['babel-loader'],
                exclude: /node_modules/,
            },
       +     {
       +        test: /.css$/,
       +        use: [
       +            'style-loader',
       +            'css-loader'
       +        ]
       +    }
        ]
    },

并在package.json中引入依赖

  "devDependencies": {
...
  + "css-loader": "^1.0.0",
  + "style-loader": "^0.21.0"
  }

再次执行运行时

1ddd22d143b5d50f438da5d2cc97b806.png

发现外部引入css文件就有效了。

css-loader 作用:解释(interpret)@importurl(),会import/require()后再解析(resolve)它们(即将css代码转换为CommonJS模块)。其实就是解释JS引用Css对象的关系,但仅有css-loader是不够的,因为它只是解释了引用关系,但并不难将css文件的内容加载进来

测试可见:

f9c7fd50101fc4d16dd8feee0e129c62.png

可以看出是找不到app.css的

这时需要style-loader的帮忙,style-loader会获得之前css-loader解释的引用关系,并将css文件中的内容加到了html 的heade标签中(将 JS 字符串生成为 style 节点,以style标签的方式加入)

8cc9410ba64a50405e7a9800ad0ea632.png

源码参考:

ZhongJinHacker/react-practise​github.com
91297ef1cf00fec4950a75e185304c30.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值