webpack实战css加载

webpack实战

1. 加载css的2中情况

  • 行内加载

  • 单独生成css文件加载

    1.1 行内加载

    我们使用webpack2对不同的css,stylus,已经bootstrap进行编译和加载,废话不多说,直接上代码结构

css配置.png
// 把css变成style放入页面
npm install --save style-loader
// 解析css的loader
npm install --save css-loader
// 解析stylus的stylus-loader
npm install --save stylus-loader
// 安装bootstrap 
npm install --save bootstrap
// 由于bootstrap有一些字体图标,所以需要安装url-loader解析路径
npm install --save url-loader
// 习惯性的安装下webpack编译
npm install --save webpack
  • 开始编写webpack.config.js

    // main.js
    const path = require('path');
    module.exports = {
      entry: './main.js',
      output: {
        path: path.resolve(__dirname,'./build'),
        filename: 'index.js'
      },
      module: {
        rules: [
          {test: /\.styl$/,use: ['style-loader','css-loader','stylus-loader']},
          {test: /\.(svg|woff|woff2|eot|ttf)$/,use:['url-loader']},
          {test: /\.css$/, use:['style-loader', 'css-loader']}
        ]
      }
    }
    
  • 编译文件main.js

    // 像引入js一样的引入css
    import  './src/index.css'
    import 'bootstrap/dist/css/bootstrap.css'
    import './src/stylus.styl'
    
    console.log('hello world');
    
  • 相应的源文件

    /*index.css*/
    .sty {
      padding: 50px;
    }
    /*stylus.styl*/
    .sty 
      color red
      background green
    .test 
      color blue
    
  • 执行文件

    一定不要觉得css行内样式,你引入导出后的js文件干嘛,不引进肯定是没有效果的,因为这个js的作用就是给你创建一个style标签,并把样式给你塞进去

    <!DOCTYPE html>
    <html lang="en">
    <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>my Vue App</title>
    </head>
    <body>
      <div id="app">
        <h1 class="sty">代码分割--css</h1>
        <h2 class="test">测试代码测试代码</h2>
        <nav aria-label="Page navigation">
      <ul class="pagination">
        <li>
          <a href="#" aria-label="Previous">
            <span aria-hidden="true">«</span>
          </a>
        </li>
        <li><a href="#">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
        <li><a href="#">4</a></li>
        <li><a href="#">5</a></li>
        <li>
          <a href="#" aria-label="Next">
            <span aria-hidden="true">»</span>
          </a>
        </li>
      </ul>
    </nav>
      </div>
      <script src="./build/index.js"> </script>
    </body>
    </html>
    

    1.2 导出成一个单独的css文件

    如果想单独的把css分离出来,就需要一个插件

  • extract-text-webpack-plugin

    1. 安装extract-text-webpack-plugin npm install --save-dev extract-text-webpack-plugin

    2. 可以在webpack.config.js的plugins使用

      const ExtractTextPlugin = require("extract-text-webpack-plugin")
      plugins: [
        new ExtractTextPlugin("styles")  //接受一个导出的名字
      ]
      // 在相应的module中使用 ExtractTextPlugin.extract()
      // 接受一个对象参数1. 执行的回调函数 2. 使用的各种loader
       {
         test: /\.css$/,
         exclude: ['node_modules'],
         use: ExtractTextPlugin.extract({
             fallback: 'style-loader',
             use: 'css-loader' // 也可以是一个数组
         })      
      }
      
  • webpack.config.js的编写

    const path = require('path');
    const ExtractTextPlugin = require('extract-text-webpack-plugin')
    module.exports = {
      entry: './main.js',
      output: {
        path: path.resolve(__dirname,'./build'),
        filename: 'index.js'
      },
      module: {
        rules: [
          {
            test: /\.styl$/,
            use: ExtractTextPlugin.extract({
            fallback: 'style-loader',
            use: ['css-loader', 'stylus-loader']
          })
          },
          {test: /\.(svg|woff|woff2|eot|ttf)$/,use:['url-loader']},
          {
            test: /\.css$/,exclude: ['node_modules'],
            use: ExtractTextPlugin.extract({
              fallback: 'style-loader',
              use: 'css-loader'
            })      
          }
        ]
      },
      plugins: [
        new ExtractTextPlugin('styles.css')
      ]
    }
    
  • index.html的不同

    由于我们已经把css导出到一个文件中了,需要如果只是样式的话,可以不再导入js的文件, 可以看看webpack导出的js文件,没有样式了。

    <!--需要引入相应的css文件-->
    <link rel="stylesheet" href="./build/styles.css">
    
打包后的文件.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 12,550评论 7 35
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 13,853评论 0 21
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 14,340评论 7 110
  • 原文http://www.cnblogs.com/libin-1/p/6596810.html 版本号 vue-c...
    tengrl阅读 9,141评论 0 0
  • 无意于真诚的依恋 心海中,总莫名波澜 或许已太多自我感受 夜,灯火辉映里 一杯酒,已过半 抬头望,车流人缓 霓虹灯...
    垄上行云阅读 1,378评论 0 1

友情链接更多精彩内容