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

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

内容简介: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'}
  		]
	})
},
复制代码

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

查看所有标签

猜你喜欢:

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

刷新

刷新

[美] 萨提亚·纳德拉 / 陈召强、杨洋 / 中信出版集团 / 2018-1 / 58

《刷新:重新发现商业与未来》是微软CEO萨提亚•纳德拉首部作品。 互联网时代的霸主微软,曾经错失了一系列的创新机会。但是在智能时代,这家科技公司上演了一次出人意料的“大象跳舞”。2017年,微软的市值已经超过6000亿美元,在科技公司中仅次于苹果和谷歌,高于亚马逊和脸谱网。除了传统上微软一直占有竞争优势的软件领域,在云计算、人工智能等领域,微软也获得强大的竞争力。通过收购领英,微软还进入社交......一起来看看 《刷新》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具