摘要:这个时代对速度和性能要求越来越高,前端开发中兼容性问题是一个让人头疼的问题,也许在这台设备上明明好好的,但是换一个设备就会让人哭笑不得,对于用户体验和流量资源的开销也是要考虑的一个问题,当下我们正在学习的webpack在这方面有着怎样的措施呢?这里我们将从对Css的处理说起。

大纲:

  • 从js中提取css成单独的文件
  • Css的兼容性问题处理
  • Css文件的压缩

一、CSS文件的提取

  1. 安装插件npm install --save-dev mini-css-extract-plugin
  2. webpack.config.js配置
const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');module.exports = {entry: './src/js/index.js',output: {filename: 'js/built.js',path: resolve(__dirname, 'build')},module: {rules: [{test: /.css$/,use: [// 创建style标签,将样式放入// 'style-loader', // 这个loader取代style-loader。作用:提取js中的css成单独文件MiniCssExtractPlugin.loader,// 将css文件整合到js文件中'css-loader']}]},plugins: [new HtmlWebpackPlugin({template: './src/index.html'}),new MiniCssExtractPlugin({// 对输出的css文件进行重命名filename: 'css/built.css'})],mode: 'development'
};

3. html文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>webpack</title>
</head>
<body>
<div id="box1"></div>
<div id="box2"></div>
</body>
</html>

4. css文件

//a.css
#box1 {width: 100px;height: 100px;background-color: pink;
}//b.css
#box2 {width: 100px;height: 100px;background-color: pink;
}

5. 入口文件index.js

import '../css/a.css';
import '../css/b.css';

6. 测试结果

二、兼容性处理

  1. 安装npm install --save-dev postcss-loader postcss-preset-env
  2. 配置文件
const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');// 设置nodejs环境变量
// process.env.NODE_ENV = 'development';module.exports = {entry: './src/js/index.js',output: {filename: 'js/built.js',path: resolve(__dirname, 'build')},module: {rules: [{test: /.css$/,use: [MiniCssExtractPlugin.loader,'css-loader',/*css兼容性处理:postcss --> postcss-loader postcss-preset-env帮postcss找到package.json中browserslist里面的配置,通过配置加载指定的css兼容性样式"browserslist": {// 开发环境 --> 设置node环境变量:process.env.NODE_ENV = development"development": ["last 1 chrome version","last 1 firefox version","last 1 safari version"],// 生产环境:默认是看生产环境"production": [">0.2%","not dead","not op_mini all"]}*/// 使用loader的默认配置// 'postcss-loader',// 修改loader的配置{loader: 'postcss-loader',options: {ident: 'postcss',plugins: () => [// postcss的插件require('postcss-preset-env')()]}}]}]},plugins: [new HtmlWebpackPlugin({template: './src/index.html'}),new MiniCssExtractPlugin({filename: 'css/built.css'})],mode: 'development'
};

3. package.json中添加browserslist的配置

官方参考地址:https://github.com/browserslist/browserslist

 "browserslist": {"development": ["last 1 chrome version","last 1 firefox version","last 1 safari version"],"production": [">0.2%","not dead","not op_mini all"]}

4. 测试:

三、压缩

  1. 安装npm install --save-dev optimize-css-assets-webpack-plugin
  2. 配置文件
const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')// 设置nodejs环境变量
// process.env.NODE_ENV = 'development';module.exports = {entry: './src/js/index.js',output: {filename: 'js/built.js',path: resolve(__dirname, 'build')},module: {rules: [{test: /.css$/,use: [MiniCssExtractPlugin.loader,'css-loader',{loader: 'postcss-loader',options: {ident: 'postcss',plugins: () => [// postcss的插件require('postcss-preset-env')()]}}]}]},plugins: [new HtmlWebpackPlugin({template: './src/index.html'}),new MiniCssExtractPlugin({filename: 'css/built.css'}),// 压缩cssnew OptimizeCssAssetsWebpackPlugin()],mode: 'development'
};

3. 其他的文件和上面一样

4. 测试:

frame中src怎么设置成一个变量_webpack中Css的处理相关推荐

  1. frame中src怎么设置成一个变量_在 Figma 中如何选择 group(组)或 frame(画框)?...

    导读:在 Figma 中可以使用 group(组)或 frame(画框)来组织元素,但它们又有一些不同.合理地选择如何使用它们,能够帮助我们更好地设计.本文来自 Figma 官方博客,由卓浩翻译. 你 ...

  2. frame中src怎么设置成一个变量_自动格式化打印变量HMLog介绍

    作者 | mao2020 来源 | 掘金,点击阅读原文查看作者更多文章 前言 在我初学iOS的时候,经常需要NSLog打印用于调试,有时候还需要打印多个变量: NSLog(@"xxxx fr ...

  3. frame中src怎么设置成一个变量_Go 语言设计哲学之七:变量声明须一致

    Go 语言,使用变量之前需要先进行变量的声明. var s string = "Golang"n := 666 Go 语言有两类变量 包级别(package varible):在 ...

  4. frame中src怎么设置成一个变量_OpenCV图像人脸检测及视频中的人脸检测(附源码)...

    文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检测 3. 视频中人脸检测 ...

  5. 已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在tab表中,要查的学生学号放在变量no中,查表结果放在变量english中。

    已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在tab表中, 要查的学生学号放在变量no中,查表结果放在变量english中. data segmenttab db 68,78,42,84 ...

  6. python中函数可以赋值给一个变量_python中函数赋值给变量时的问题注意详解

    变量赋值是我们在日常开发中经常会遇到的一个问题,下面这篇文章主要给大家介绍了关于python中将函数赋值给变量时需要注意的一些问题,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的 ...

  7. 【VMware】虚拟机中给Linux设置ip——解决在linux中设置了ip地址,却还是连不上的问题

    大家好,我是好学的小师弟,最近在搭建虚拟机的时候,发现我虽然在linux中设置了ip地址却还是用MobaXterm连不上.后来查询相关文档,解决了该问题 进入虚拟机,点击编辑-虚拟网络编辑器 进入到N ...

  8. VMware中的虚拟机设置开启VT虚拟化 虚拟机中创建虚拟机

    打开虚拟机设置,编辑处理器,勾选虚拟化引擎

  9. matlab中for循环设置二维数组,MATLAB中定义赋值一个二维数组

    MATLAB中定义赋值一个二维数组 答: 分号:; 因特网能提供的最基本服务 答:E-mail, WWW, FTP 劳动合同中,用人单位给予劳动者低于当地工资最低水平的违反了()合法原则 答:内容合法 ...

最新文章

  1. powerDesign设计随笔
  2. Python 爬虫使用pyppeteer 网页进行向下翻页操作
  3. github入门必备概念
  4. 如何在Eclipse中查看Android源码或者第三方组件包源码
  5. 网络分流器-网络分流器的应用领域
  6. Session.run() Tensor.eval()
  7. 主库创建存储过程时从库显示 Error 1049
  8. find函数常见错误_终于找到你,查找函数,find必不可少
  9. Bootstrap 3之美03-独立行,文字环绕,图片自适应,隐藏元素
  10. 2021-07-31
  11. matlab 换热器仿真,基于MATLAB的换热器温度控制仿真研究.doc
  12. leopard 全部搞定状态截图
  13. Python爬取百思不得姐段子
  14. 虚幻引擎UE4背包系统(如何制作可拖动(Drag and Drop)的背包(Scrollbox))
  15. C/S系统快速开发框架/winform快速开发框架源码(C#+SQL)
  16. 分辨率变化的数据from mydrivers 显卡评测
  17. NR modulation 4-AM
  18. 微软企业文化中的“工作激情”
  19. Runc 容器初始化和容器逃逸
  20. kali linux amd显卡驱动,AMD 显卡安装debian

热门文章

  1. 快速实现MySQL迁移到Redis
  2. TOP计划猿10最佳实践文章
  3. Linux shell实例精讲 (一)
  4. 华为鸿蒙系统备用,就只有华为有备用系统?其实谷歌也准备了一个,不输鸿蒙系统!...
  5. http协议报文体_http协议详解之响应报文 3
  6. FreeRTOS源码分析与应用开发11(完):编译、链接与部署
  7. 【git系列】github同步原作者代码
  8. 微型计算机及接口技术考试卷,微机原理与接口技术考试试题及答案 2
  9. php 用户数,php-获得最高数量,产品/用户数
  10. 圣诞祝福网页_平安夜圣诞节适合发朋友圈的文案,快快收藏起来!