2020-12-22

2020-12-22  本文已影响0人  二荣xxx

webpack

webpack官方文档,webpack是一个模块打包器(module bundler),它可以用loader和plugin来扩展。webpack本身结构精巧,基于tapable的插件架构,扩展性强,众多的loader或者plugin让webpack稍显复杂

webpack打包生成css、js文件,每次会对文件的内容做一个hash/md5,来生成文件名,因此文件内容更改相应的文件名也会改变。由于缓存是跟着文件名变的,让浏览器更新内容只需更改文件名,当浏览器发现用户电脑缓存的文件名与新文件名不一致时,会重新下载文件,达到实时更新的目的。

上面说到了缓存,这里我就来解释一下缓存:当用户首次访问一个URL,就会有一个HTTP缓存,缓存css、js之类的文件到用户硬盘/内存,用户再次访问浏览器就只需从硬盘/内存读取相应的内容,实现超快访问

webpack自带js转译功能(转译为低版本js)无需安装配置插件、loader

安装webpack

yarn init -y
yarn add webpack webpack-cli --dev

运行webpack

npx  webpack或
rm -rf dist && npx webpack

安装webpack-dev-server

webpack-dev-server作用:提供server方便开发预览,文件内容变化自动转译代码并刷新页面

yarn add webpack-dev-server  --dev
start //运行

loader(加载器)

因为 webpack 只能理解 JavaScript 和 JSON 文件,对于其他资源例如 css,图片,或者其他的语法集,比如 jsx, coffee,是没有办法加载的。 这就需要对应的loader将资源转化,加载进来。loader是用于加载的,它作用于一个个文件上。

常用loader:
file-loader(加载图片)、style-loader、css-loader、sass-loader(加载scss、依赖dart-sass),stylus-loader、less-loader

module: {
        rules: [
            ...base.module.rules,
            {
                test: /\.css$/, //css-loader读所有以.css结尾的css文件到js
                use: ['style-loader', 'css-loader']
                //style-loader把css-loader读到的内容,转换成一个style标签放到header里面(js生成style)
            }
        ]
    }

plugin(插件)

plugin 用于扩展webpack的功能

它直接作用于 webpack,扩展了它的功能。当然loader也是变相的扩展了 webpack ,但是它只专注于转化文件(transform)这一个领域。而plugin的功能更加的丰富,而不仅局限于资源的加载。

常用plugin:
html-webpack-plugin:--webpack自动生成html文件
MiniCssExtractPlugin:--css代码单独提取文件

 plugins: [
        new HtmlWebpackPlugin({
            title: 'webpack-demo',
            template: 'src/assets/test.html'
        }),
    ]
module: {
        rules: [
            ...base.module.rules,
            {
                test: /\.css$/, //css-loader读所有以.css结尾的css文件到js
                use: [  //css抽成文件,再引入到html
                    {
                        loader: MiniCssExtractPlugin.loader,
                        options: {
                            publicPath: '/public/path/to/',
                        },
                    },
                    'css-loader',
                ],
            }
        ]
    }
上一篇下一篇

猜你喜欢

热点阅读