面试题答案
一键面试CSS模块化配置
- 安装相关loader:
npm install css - loader style - loader --save - dev
- Webpack配置:
module: { rules: [ { test: /\.css$/, use: [ 'style - loader', { loader: 'css - loader', options: { modules: true } } ] } ] }
style - loader
将CSS插入到DOM中。css - loader
用于处理CSS文件,options.modules: true
开启CSS模块化,生成唯一的类名。
Sass模块化配置
- 安装相关loader:
npm install sass - loader node - sass css - loader style - loader --save - dev
- Webpack配置:
module: { rules: [ { test: /\.scss$/, use: [ 'style - loader', { loader: 'css - loader', options: { modules: true } }, 'sass - loader' ] } ] }
sass - loader
将Sass编译成CSS,node - sass
是其依赖的Sass编译器。css - loader
和style - loader
作用同CSS配置。
Less模块化配置
- 安装相关loader:
npm install less - loader less css - loader style - loader --save - dev
- Webpack配置:
module: { rules: [ { test: /\.less$/, use: [ 'style - loader', { loader: 'css - loader', options: { modules: true } }, 'less - loader' ] } ] }
less - loader
将Less编译成CSS,less
是其依赖的Less编译器。css - loader
和style - loader
作用同CSS配置。
优化样式表打包体积和加载性能
-
优化打包体积:
- MiniCssExtractPlugin:
- 安装:
npm install mini - css - extract - plugin --save - dev
- 配置:
const MiniCssExtractPlugin = require('mini - css - extract - plugin'); module.exports = { module: { rules: [ { test: /\.(css|scss|less)$/, use: [MiniCssExtractPlugin.loader, 'css - loader','sass - loader', 'less - loader'] } ] }, plugins: [ new MiniCssExtractPlugin({ filename: 'css/[name].[contenthash].css' }) ] };
- 该插件将CSS从JavaScript中提取出来,生成单独的CSS文件,减少JavaScript体积。
filename
指定CSS文件输出路径和命名规则。
- 安装:
- OptimizeCSSAssetsPlugin:
- 安装:
npm install optimize - css - assets - plugin --save - dev
- 配置:
const OptimizeCSSAssetsPlugin = require('optimize - css - assets - plugin'); module.exports = { optimization: { minimizer: [ new OptimizeCSSAssetsPlugin({}) ] } };
- 此插件用于压缩CSS文件,去除冗余代码,减小文件体积。
- 安装:
- MiniCssExtractPlugin:
-
实现样式按需加载:
- 使用
@babel/plugin - proposal - dynamic - import
:在JavaScript中动态导入CSS模块。例如:- 安装:
npm install @babel/plugin - proposal - dynamic - import --save - dev
- Babel配置(.babelrc或babel.config.js):
{ "plugins": ["@babel/plugin - proposal - dynamic - import"] }
- 代码中使用:
async function loadStyles() { await import('./styles.css'); }
- 安装:
- 结合
mini - css - extract - plugin
:它支持按需加载CSS。通过上述MiniCssExtractPlugin
配置,Webpack会将每个按需加载的CSS模块生成单独的CSS文件,在运行时根据需要加载。
- 使用