webpack2学习(二)

webpack 最难理解的点是 ‘编译’这个概念

在main.js中操作dom 修改页面内容

eg

document.getElementById('app').innerHTML = 'hello xxx'

热更新:在工程启动时, 保存main.js, 会发现页面自动更新了,这是webpack-web-server的热更新功能(通过建立一个Websocket连接来实现响应代码的修改)

完善webpack配置文件

webpack最重要的功能 - 加载器(Loaders)

webpack中每个文件都是一个模块,不同的模块,需要不同的加载器来加载, 所以就需要安装不同的加载器对各种后缀名的文件进行处理。
eg: css样式
安装 style-loader css-loader

yarn add css-loader --save-dev
yarn add style-loader --save-dev

安装后, 在webpack.config.js中配置loader

在module对象的rules属性中去指定一系列的loaders,
每个loader必须包含test和use两个选项。

// 解释: 当webpack编译过程中遇到require() 或import语句导入一个后缀为.css的文件时,现将它通过css-loader转换,再通过style-loader转换,然后继续打包
// (use选项的值可以是数组也可是字符串,如果是数组编译顺序为从下至上)
module: {
        rules: [
            {
                test: /\.css$/,
                use: [
                    'style-loader',
                    'css-loader'
                ]
            }
        ]
    }

新建文件style.css,随便写几个样式
将style.css文件引入到main.js中

// 新建文件 打开文件 (当然你也可以手动打开)
touch style.css
open style.css

// style.css
#app {
    font-size: 30px;
    color: lightblue;
}

//main.js
import './style.css'

重新执行yarn run dev

页面会加载你写的样式

webpack的插件功能

插件功能强大 并且可以定制

这里以 extract-text-webpack-plugin的插件为例

  • 作用: 把散落在各地的css提取出来,并生成一个main.css文件,最终在index.html里通过link的形式加载它

安装

 yarn add extract-text-webpack-plugin --dev

改写配置

module: {
        rules: [
            {
                test: /\.css$/,
                use: ExtractTextPlugin.extract({
                    use: 'css-loader',
                    fallback: 'style-loader'
                })
            }
        ]
    },
    plugins: [
        //重命名提取后的css文件
        new ExtractTextPlugin("main.css")
    ]

在index.html中通过link添加main.css

    <link rel="stylesheet" type="text/css" href="/dist/main.css">

执行

yarn run dev

总结

webpack看似复杂,其实只不过是一个js配置文件
只要弄清楚4个概念:

  • 入口 entry
  • 出口 output
  • 加载器 Loaders
  • 插件 Plugins
posted @ 2018-11-20 21:03  白白白白白白白  阅读(217)  评论(0编辑  收藏  举报