内容简介:上面的方式虽然可以加载样式文件,但是加载出来的全部的以
一、 webpack
使用 css
样式
webpack
默认是支持 js
的,对于别的 css
或者 typescript
必须要安装加载器
-
1、安装包
npm install style-loader css-loader less less-loader -D 复制代码
-
2、在
webpack.config.js
中的module
配置规则(use
中是一个数组,从后面解析到前面)... module: { rules: [ { test: /\.css$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' } ] }, { test: /\.less$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'less-loader' }, // 是从右边开始读取到左边的 ] } ] }, ... 复制代码
-
3、在
src
中创建一个css
的文件夹,里面创建a.css
和b.less
文件 -
4、在
index.js
中引入样式文件import './css/a.css'; import './css/b.less'; 复制代码
-
5、启动服务,查看浏览器
Elements
栏
二、将样式文件抽取成一个单独的文件
上面的方式虽然可以加载样式文件,但是加载出来的全部的以 <style type="text/css">....</style>
的方式到页面中(我们在开发的时候可以这样,但是项目上线后的就希望是单独的文件),增加了 js
文件的体积,如果项目大,可能会造成 js
文件过大加载慢,甚至加载不出的弊端。
-
1、抽取单独的
css
目前主要有2个包可以选择extract-text-webpack-plugin@next mini-css-extract-plugin
-
2、安装包
npm install extract-text-webpack-plugin@next mini-css-extract-plugin -D 复制代码
-
3、使用
extract-text-webpack-plugin@next
插件的方式-
1.引包
const ExtractTextWebpackPligin = require('extract-text-webpack-plugin'); 复制代码
-
2.修改
module
中的加载器module: { rules: [ { test: /\.css$/, use: ExtractTextWebpackPligin.extract({ use: [ // { loader: 'style-loader' }, 注意这个地方要删除 { loader: 'css-loader' } ] }) }, { test: /\.less$/, use: ExtractTextWebpackPligin.extract({ use: [ { loader: 'css-loader' }, { loader: 'less-loader' } ] }) } ] }, ... 复制代码
-
3.使用插件
plugins: [ ... new ExtractTextWebpackPligin({ filename: 'css/index.css', }), new HtmlWebpackPlugin({ template: './src/index.html', title: 'webpack测试', hash: true, // 先注释下面的代码,更好看结果 // minify: { // removeAttributeQuotes: true, // 去除双引号 // collapseWhitespace: true, // 合并代码到一行 // } }) ], 复制代码
-
4、在
index.js
中依然是导入css
文件import './css/a.css'; import './css/b.less'; 复制代码
-
-
4、使用
mini-css-extract-plugin
插件方式-
1.导包
const MiniCssTractPlugin = require('mini-css-extract-plugin'); 复制代码
-
2.在
module
中配置module: { rules: [ { test: /\.css$/, use: [ MiniCssTractPlugin.loader, { loader: 'css-loader' } ] }, { test: /\.less$/, use: [ MiniCssTractPlugin.loader, { loader: 'css-loader' }, { loader: 'less-loader' } ] } ] }, 复制代码
-
3.配置插件
plugins: [ ... new MiniCssTractPlugin({ filename: 'css/css.css', }), ] 复制代码
-
4.一样的在
index.js
中导包 -
5.测试
-
三、对上面抽取样式优化(抽取出多个样式文件)
-
1、上面的方法是将全部的
css,less
抽取成一个css
文件,如果我们要抽取成单独的文件... // 定义两个文件 let cssExtract = new ExtractTextWebpackPligin('css/css.css'); let lessExtract = new ExtractTextWebpackPligin('css/less.css'); plugins: [ // 使用前面定义的插件 cssExtract, lessExtract, new webpack.HotModuleReplacementPlugin(), // 热更新,每次修改后会自动刷新 new CleanWebpackPlugin(), // 每次打包清空dist文件夹 ...HtmlPlugin, ], module: { rules: [ { test: /\.css$/, use: cssExtract.extract({ use: [ { loader: 'css-loader' } ] }) }, { test: /\.less$/, use: lessExtract.extract({ use: [ { loader: 'css-loader' }, { loader: 'less-loader' } ] }) } ] }, 复制代码
-
2、打包
四、关于抽取样式修改后不刷新的问题(开发的时候依然是加上 style
中)
-
1.定义
disable
const cssExtract = new ExtractTextWebpackPligin({ filename: 'css/a.css', disable: true, }); const lessExtract = new ExtractTextWebpackPligin({ filename: 'css/b.css', disable: true, }); 复制代码
-
2.在
modul
中使用module: { rules: [ { test: /\.css$/, use: cssExtract.extract({ fallback: 'style-loader', use: [ { loader: 'css-loader' } ] }) }, { test: /\.less$/, use: lessExtract.extract({ fallback: 'style-loader', use: [ { loader: 'css-loader' }, { loader: 'less-loader' }, ] }) } ] }, 复制代码
五、关于抽取样式的时候删除未使用的样式(减少样式打包的体积)
-
1、安装包
npm install purifycss-webpack purify-css glob -D 复制代码
-
2、导入
const PurifycssWebpack = require('purifycss-webpack'); const glob = require('glob'); 复制代码
-
3、使用
... // 注意必须要在HtmlWebpackPlugin后面使用 new PurifycssWebpack({ paths: glob.sync(path.resolve('src/*.html')) }) ... 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Genesis框架从入门到精通(10): 样式函数
- 1.6 常用CSS样式2:其它样式
- 1.5 常用CSS样式1:文本样式
- 圣思园《精通Spring Boot/Cloud》与《精通Java并发》课程现已宣布
- CSS 样式防御
- 代码样式的另类风格!开眼
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Definitive Guide to HTML5 WebSocket
Vanessa Wang、Frank Salim、Peter Moskovits / Apress / 2013-3 / USD 26.30
The browser is, hands down, the most popular and ubiquitous deployment platform available to us today: virtually every computer, smartphone, tablet, and just about every other form factor imaginable c......一起来看看 《The Definitive Guide to HTML5 WebSocket》 这本书的介绍吧!