当前位置: 首页 > news >正文

13. CSS 处理

提取 Css 成单独文件

CSS 文件目前被打包到 js 文件中,当 js 文件加载时,会创建一个 style 标签来生成样式,加载一个页面的时候,先 html -> js -> css,会有页面闪屏现象,用户体验不好。应该是单独的 Css 文件,通过 link 标签加载性能才好。

下载包:npm i mini-css-extract-plugin -D

配置:

  • webpack.prod.js

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");module.exports = {entry: "./src/main.js",output: {path: path.resolve(__dirname, "../dist"), // 生产模式需要输出filename: "static/js/main.js", // 将 js 文件输出到 static/js 目录中clean: true,},module: {rules: [{// 用来匹配 .css 结尾的文件test: /\.css$/,// use 数组里面 Loader 执行顺序是从右到左use: [MiniCssExtractPlugin.loader, "css-loader"],}],},plugins: [new HtmlWebpackPlugin({template: path.resolve(__dirname, "../public/index.html"),}),// 提取css成单独文件new MiniCssExtractPlugin({// 定义输出文件名和目录filename: "static/css/main.css",}),]mode: "production",
};

CSS 兼容性处理

解决 CSS 的兼容性问题

下载包:

npm i postcss-loader postcss postcss-preset-env -D

放在在 css-loader 之后,less-loader或者scss-loader之前

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");module.exports = {entry: "./src/main.js",output: {path: path.resolve(__dirname, "../dist"), // 生产模式需要输出filename: "static/js/main.js", // 将 js 文件输出到 static/js 目录中clean: true,},module: {rules: [{// 用来匹配 .css 结尾的文件test: /\.css$/,// use 数组里面 Loader 执行顺序是从右到左use: [MiniCssExtractPlugin.loader,"css-loader",{loader: "postcss-loader",options: {postcssOptions: {plugins: ["postcss-preset-env", // 预设,能解决大多数样式兼容性问题],},},},],},{test: /\.less$/,use: [MiniCssExtractPlugin.loader,"css-loader",{loader: "postcss-loader",options: {postcssOptions: {plugins: ["postcss-preset-env", // 能解决大多数样式兼容性问题],},},},"less-loader",],}],},plugins: [new HtmlWebpackPlugin({template: path.resolve(__dirname, "../public/index.html"),}),// 提取css成单独文件new MiniCssExtractPlugin({// 定义输出文件名和目录filename: "static/css/main.css",}),]mode: "production",
};

控制兼容性

我们可以在 package.json 文件中添加 browserslist 来控制样式的兼容性做到什么程度。browserslist 文档

{// 其他省略"browserslist": ["ie >= 8"]
}

实际开发中我们一般不考虑旧版本浏览器了,所以我们可以这样设置:

{// 其他省略"browserslist": ["last 2 version", "> 1%", "not dead"]
}

CSS 压缩

下载包:npm i css-minimizer-webpack-plugin -D

配置:

  • webpack.prod.js

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");// 获取处理样式的Loaders
const getStyleLoaders = (preProcessor) => {return [MiniCssExtractPlugin.loader,"css-loader",{loader: "postcss-loader",options: {postcssOptions: {plugins: ["postcss-preset-env", // 能解决大多数样式兼容性问题],},},},preProcessor,].filter(Boolean);
};module.exports = {entry: "./src/main.js",output: {path: path.resolve(__dirname, "../dist"), // 生产模式需要输出filename: "static/js/main.js", // 将 js 文件输出到 static/js 目录中clean: true,},module: {rules: [{test: /\.css$/,use: getStyleLoaders(),},{test: /\.less$/,use: getStyleLoaders("less-loader"),},{test: /\.s[ac]ss$/,use: getStyleLoaders("sass-loader"),},{test: /\.styl$/,use: getStyleLoaders("stylus-loader"),}],},plugins: [new HtmlWebpackPlugin({template: path.resolve(__dirname, "../public/index.html"),}),// 提取css成单独文件new MiniCssExtractPlugin({filename: "static/css/main.css",}),// css压缩new CssMinimizerPlugin(),]mode: "production",
};

http://www.lryc.cn/news/38282.html

相关文章:

  • One-hot编码
  • Java中的深克隆与浅克隆
  • 如何使用MyBatis框架实现对数据库的增删查改?
  • 结构体内存大小
  • gerrit操作和jinkens编译合入代码
  • 网络工程师面试题(面试必看)(3)
  • 第N次重装系统之Ubtntu
  • 一个 适用 vue3 ts h5移动端 table组件
  • Vue.js 生产打包上线实战
  • C语言指针的算术运算
  • 快速排序/快速选择算法
  • 【数据结构初阶】单链表面试题|内含链表带环问题
  • 一文解析ethtool 命令的使用
  • 深度学习训练营之yolov5训练自己的数据集
  • Java中的AQS
  • Spring——案例-业务层接口执行效率和AOP通知获取数据+AOP总结
  • 国外SEO舆情处理最佳黄金时间
  • ROC和AUC
  • Dopamine-PEG-cRGD,DOPA-PEG-cRGD,多巴胺-聚乙二醇-crgd细胞穿膜肽
  • 动态规划回文子串
  • windows 域控提权CVE-2014-6324CVE-2020-1472CVE-2021-42287CVE-2022-26923
  • 1、JDK 安装 Java环境变量配置
  • [c++]list模拟实现
  • 实用的仓库管理软件有哪些,盘点2023年5大仓库管理软件!
  • (八十二)透彻研究通过explain命令得到的SQL执行计划(1)
  • 【Linux】旋转锁 | 读写锁
  • EasyExcell导出excel添加水印
  • SpringCloud:Nacos配置管理
  • 正则表达式引擎NFA自动机的回溯解决方案总结
  • 卷积神经网络之AlexNet