博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack4.x实战五,js支持ES6;css支持less、浏览器兼容
阅读量:6847 次
发布时间:2019-06-26

本文共 8247 字,大约阅读时间需要 27 分钟。

ECMAScript 6.0, 是JaveScript的下一个版本标准, 2015.06发版。

js支持ES6

安装插件 babel-loader

执行命令

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    ]};复制代码

更多文档参考

修改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

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

	
<%= htmlWebpackPlugin.options.title %>
less 解析
复制代码

修改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

更多文档

src目录结构

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

执行打包npm run webpack

浏览器访问dist/index.html

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的其中一个插件

更多文档

执行打包npm run webpack

浏览器访问dist/index.html

总结

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' }        ]    })}复制代码

思考:如何打包图片呢

请看

转载地址:http://ufmul.baihongyu.com/

你可能感兴趣的文章
unity, GUI.Button texture is black
查看>>
CSharpGL(10)两个纹理叠加
查看>>
Linux 删除用户
查看>>
WebApi系列~dynamic让你的省了很多临时类
查看>>
urllib2的异常处理
查看>>
架构之路(九)Session Per Request
查看>>
Educational Codeforces Round 7 E. Ants in Leaves 贪心
查看>>
REST_FRAMEWORK加深记忆-第二次练习官方文档2
查看>>
hdu5188 加限制的01背包问题
查看>>
Volley(四)—— ImageLoader & NetworkImageView
查看>>
[UML]转:UML类图集中关系的总结
查看>>
串口驱动
查看>>
Python学习
查看>>
TNS-12535 TNS-00505的处理方法
查看>>
线段树
查看>>
常用应用软软件
查看>>
UTF-8 带签名和不带签名的区别
查看>>
php错误级别的设置方法
查看>>
C# WinForm开发系列学习 地址 很详细
查看>>
WIN10常用快捷键
查看>>