webpack4.x学习笔记五,js支持ES6;css支持less、浏览器兼容

栏目: CSS · 发布时间: 5年前

内容简介:webpack.config.js修改后的内容更多文档参考babel-loaderapp.js修改后内容

执行命令

npm install --save-dev babel-loader @babel/core @babel/preset-env
复制代码

修改webpack.config.js

webpack.config.js修改后的内容

const path = require('path');
var htmlWebpackPlugin = require('html-webpack-plugin');
const extractTextPlugin = require("extract-text-webpack-plugin");

const extractCSS = new extractTextPlugin("css/[name]-[hash].css");
module.exports = {
  mode:'development',
  entry: './src/js/app.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename:'js/[name]-[hash].js'
  },
  module: {
		rules: [
					{
						test:/\.css$/,
						use: extractCSS.extract({
				          	fallback: "style-loader", // 编译后用什么loader来提取css文件
		          			use: [
		          				{loader:'css-loader'},
		          			]
		        		})
					},
					{
						test:/\.js$/,  //添加正则,处理js文件
						use: [
								//把ES6语法转换为ES5
								{loader:'babel-loader',options:{"presets": ["@babel/preset-env"]}} 
							]
					}
				]
	},
	plugins:[
		new htmlWebpackPlugin({
			filename:'index.html',
			template:'./src/template/index.html',
			title:'this is webpack title'
		}),
		extractCSS
	]
};
复制代码

更多文档参考babel-loader

修改src/js/app.js

app.js修改后内容

require('../css/style.css'); 

function hello(str){
	console.log(str);
}
hello('hello world!');

{
	let es6 = 'welcome es6';
	console.log(es6);
}
复制代码

浏览器访问dist/index.html

webpack4.x学习笔记五,js支持ES6;css支持less、浏览器兼容

css支持less

安装插件 less-loader

执行命令 npm install --save-dev less less-loader

添加src/css/style.less文件

*{
	padding:0;
	margin:0;
}
body{
	background-color: #f5f5f5;
}
#app{
	width: 200px;
	height: 200px;
	div {
		width: 100px;
		height:100px;
		color:green;
		border:1px pink solid;
	}
}
复制代码

修改src/template/index.html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
	<div id="app">
		<div>less 解析</div>
	</div>
</body>
</html>
复制代码

修改src/js/app.js

删除 style.css文件 引入style.less文件

require('../css/style.less'); 

function hello(str){
	console.log(str);
}
hello('hello world!');
{
	let es6 = 'welcome es6';
	console.log(es6);
}
复制代码

修改webpack.config.js

const path = require('path');
var htmlWebpackPlugin = require('html-webpack-plugin');
const extractTextPlugin = require("extract-text-webpack-plugin");

const extractCSS = new extractTextPlugin("css/[name]-[hash].css");
module.exports = {
  mode:'development',
  entry: './src/js/app.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename:'js/[name]-[hash].js'
  },
  module: {
		rules: [
					{
						test:/\.css$/,
						use: extractCSS.extract({
				          	fallback: "style-loader", // 编译后用什么loader来提取css文件
		          			use: [
		          				{loader:'css-loader'},
		          			]
		        		})
					},
					{
						test:/\.less$/,
						use: extractCSS.extract({
				          	fallback: "style-loader", // 编译后用什么loader来提取css文件
		          			use: [
		          				{loader:'css-loader'},
		          				{loader:'less-loader'}
		          			]
		        		})
					},
					{
						test:/\.js$/,  //添加正则,处理js文件
						use: [
								//把ES6语法转换为ES5
								{loader:'babel-loader',options:{"presets": ["@babel/preset-env"]}} 
							]
					}
				]
	},
	plugins:[
		new htmlWebpackPlugin({
			filename:'index.html',
			template:'./src/template/index.html',
			title:'this is webpack title'
		}),
		extractCSS
	]
};
复制代码

说明

{
    test:/\.less$/,
    use: extractCSS.extract({
      	fallback: "style-loader", // 编译后用什么loader来提取css文件
      	use: [
      		{loader:'css-loader'},
      		{loader:'less-loader'}
      	]
    })
},
复制代码

loader是由下往上解析,先处理less-loader,然后再css-loader

更多文档less-loader

src目录结构

src
├── css
│   └── style.less
├── images
│   └── avatar.png
├── js
│   └── app.js
└── template
    └── index.html

复制代码

执行打包 npm run webpack

浏览器访问dist/index.html

webpack4.x学习笔记五,js支持ES6;css支持less、浏览器兼容

css浏览器兼容

css3 目前有些语法需要添加浏览器前缀。

修改src/css/style.less文件

*{
	padding:0;
	margin:0;
}
body{
	background-color: #f5f5f5;
}
#app{
	width: 200px;
	height: 200px;
	div {
		width: 100px;
		height:100px;
		color:green;
		border:1px pink solid;
		transform: translate(100px,0);
	}
}
复制代码

安装插件 postcss-loader

执行命令

npm install --save-dev postcss-loader autoprefixer 
复制代码

修改 webpack.config.js

const path = require('path');
var htmlWebpackPlugin = require('html-webpack-plugin');
const extractTextPlugin = require("extract-text-webpack-plugin");

const extractCSS = new extractTextPlugin("css/[name]-[hash].css");
module.exports = {
  mode:'development',
  entry: './src/js/app.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename:'js/[name]-[hash].js'
  },
  module: {
		rules: [
					{
						test:/\.css$/,
						use: extractCSS.extract({
				          	fallback: "style-loader", // 编译后用什么loader来提取css文件
		          			use: [
		          				{loader:'css-loader'},
		          				{
									//浏览器添加前缀
						      		loader: 'postcss-loader',
							      	options: { 
							      		 ident: 'postcss',
							      		 plugins: [
								      		 require('autoprefixer')({
								      		 	broswers:['last 5 versions']
								      		 })
							      		 ]
							      	}
								}
		          			]
		        		})
					},
					{
						test:/\.less$/,
						use: extractCSS.extract({
				          	fallback: "style-loader", // 编译后用什么loader来提取css文件
		          			use: [
		          				{loader:'css-loader'},
		          				{
									//浏览器添加前缀
						      		loader: 'postcss-loader',
							      	options: { 
							      		 ident: 'postcss',
							      		 plugins: [
								      		 require('autoprefixer')({
								      		 	broswers:['last 5 versions']
								      		 })
							      		 ]
							      	}
								},
		          				{loader:'less-loader'}
		          			]
		        		})
					},
					{
						test:/\.js$/,  //添加正则,处理js文件
						use: [
								//把ES6语法转换为ES5
								{loader:'babel-loader',options:{"presets": ["@babel/preset-env"]}} 
							]
					}
				]
	},
	plugins:[
		new htmlWebpackPlugin({
			filename:'index.html',
			template:'./src/template/index.html',
			title:'this is webpack title'
		}),
		extractCSS
	]
};
复制代码

说明:

1.less解析需要注意顺序。 第一步less-loader,第二步 postcss-loader,第三步css-loader

2.autoprefixer 是 postcss-loader的其中一个插件

更多文档postcss-loader

执行打包 npm run webpack

浏览器访问dist/index.html

webpack4.x学习笔记五,js支持ES6;css支持less、浏览器兼容

总结

ES6支持

npm install --save-dev babel-loader @babel/core @babel/preset-env
复制代码
{
	test:/\.js$/,  //添加正则,处理js文件
	use: [
			//把ES6语法转换为ES5
			{loader:'babel-loader',options:{"presets": ["@babel/preset-env"]}} 
		]
}
复制代码

less支持

npm install --save-dev less less-loader
复制代码
{
	test:/\.less$/,
	use: extractCSS.extract({
      	fallback: "style-loader", // 编译后用什么loader来提取css文件
  		use: [
  			{loader:'css-loader'},
  			{loader:'less-loader'}
  		]
	})
},
复制代码

浏览器兼容

npm install --save-dev postcss-loader autoprefixer 
复制代码
{
	test:/\.less$/,
	use: extractCSS.extract({
      	fallback: "style-loader", // 编译后用什么loader来提取css文件
  		use: [
  			{loader:'css-loader'},
  			{
				//浏览器添加前缀
	      		loader: 'postcss-loader',
		      	options: { 
		      		 ident: 'postcss',
		      		 plugins: [
			      		 require('autoprefixer')({
			      		 	broswers:['last 5 versions']
			      		 })
		      		 ]
		      	}
			},
  			{loader:'less-loader'}
  		]
	})
},
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

删除

删除

[英] 维克托•迈尔-舍恩伯格(Viktor Mayer-Schönberger)著 / 袁杰 译 / 浙江人民出版社 / 2013-1 / 49.90元

《删除》讲述了遗忘的美德,为读者展现了大数据时代的取舍之道。 《删除》从大数据时代信息取舍的目的和方法分别诠释了“被遗忘的权利”。维克托首先回溯了人类追寻记忆的过程,之后提出数字技术与全球网络正在瓦解我们天生的遗忘能力。对此,他考察了促进遗忘终止4大驱动力——数字化,廉价的存储器,易于提取,全球性访问。之后,他提出了当前数字化记忆的两大威胁——信息权力与时间,并给出了应对威胁的6大对策——数......一起来看看 《删除》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具