Webpack2小试

前端的水很深很杂,因而前端相关的工具也像雨后春笋一个一个的冒出来。最近大热的应该就数webpack--这个模块化解决方案工具。

Gulp/Grunt VS Webpack

首先这三者都是前端工具,都等让我们高效自动化的解决一些问题。但实质上webpack和Gulp/Grunt有本质的区别。

先谈谈前者。Gulp/Grunt两者的区别,暂且不在这说了。用处的话,两者可以帮我们自动刷新页面,压缩css/js/html以及便宜sass/less。简单的说只要你配置你需要的插件,就可以把以前需要手动做的事情让它帮你完成。那官方的话来说就是----TaskRunner。可以做到node能做到的任何事。

而Webpack,简单的说:就是一个针对Javascript代码模块的打包工具。作为一个 module bundler 存在。 在我的理解来看:webpack 更多的是用来打包前端代码。 webpack 并不暴露文件处理的细节, 你只是把一堆文件丢给它,告诉它用什么 loader 来处理什么文件,然后就可以等着输出了。

webpack相比gulp来说功能单一一些,更简化一些。当然两者也有交际例如什么预编译,压缩代码之类的。

How to use Webpack2

首先需要npm install 相关的模块: npm i webpack --save-dev

之后在根目录下建一个webpack.config.js,来配置webpack。

var webpack = require('webpack');
module.exports = {
    entry: './src/app.js',
    output: {
        path: __dirname + '/dist',
        filename: 'js/[name].bundle.js',
    }}

entry为webpack寻找的入口。output便是处理之后输出文件的地址。(__dirname这里指根目录) 在entry中的js文件里我们可以通过import或者require引入依赖。 源文件都放在了src目录中: └─src └─www ├─css ├─img └─js 在src目录下有一个app.js。如下:

import './www/js/js-test.js'

分别调用了css/js文件夹的内容。 test-css.css

*{
    margin: 0;
    padding: 0;
}
div{
    width: 100px;
    height: 100px;
    /*background: red;*/
    background: url(../img/test-img.jpg);
    background-size: contain;
}
.flex{
    display: flex;
}

js-test.js

function a(){
    console.log(12345);
}

之后在命令行就可以运行webpack了。不过在这之前 我们可以在package.json文件中对webpack命令进行一下小配置: 在script下添加 "webpack": "webpack --config webpack.config.js --progress --display-modules --colors --display-reasons"

分别是显示过程 显示模块 高亮 以及执行原因

npm run webpack

在dist文件夹就生成了 打包好的js文件:main.bundle.js。

Loaders

前面 说的都是关于打包JS代码。我们的webpack当然能力不仅仅是这些。通过各种文件的loader,我们可以处理各种文件。。前提是我们将他传入js代码中。 比如处理css的css-loader/style-loader。css预处理loader:postcss-loader。处理sass的sass-loader。图片文件的file-loader和url-loader。这些loader我们都可以通过npm i 来下载使用。 这里简单说一个css-loader/style-loader。 首先我们要在app.js中引入css文件

import './www/css/test-css.css';

之后在webpack.config.js中配置插件

module: {
        loaders: [{
                test: /\.css$/,
                loader: 'style-loader!css-loader'//从右向左执行。先执行css-loader,再执行style-loader
            }

之后在命令行运行一下就ok了。 webpack的使用很灵活处理ES6=>ES5。给css代码加前缀···· github:https://github.com/laclys/webpack2_Demo/tree/master/webpack0329

以上~

END

読んでくれてありがとう~