美文网首页
webpack 基础到构建(一)

webpack 基础到构建(一)

作者: 王清水 | 来源:发表于2021-01-20 23:19 被阅读0次

注意:

1:本次演示使用webpack@4 和webpack-cli@4, 如果webpack是@5,那么会html资源的时候会出现TypeError: Cannot read property 'createSnapshot' of undefined;如果还有其他的异常,请耐心百度,不要急躁放弃;
2:资源下载使用 npm, 文中所需的loader,都是使用命令:npm i xxx -D 下载

一,webpack5个核心概念

    1.1 Entry: 指示webpack以某文件为起点开始打包,分析并构建内部依赖图

    1.2 Output:指示webpack打包后的资源bundles输出设置,其中包括生成的文件命名和文件路径

    1.3 Loader:处理非js文件【webpack能理解js/json资源】

    1.4 Plugins:插件用于范围更为广阔的任务,如优化和压缩

    1.5 Mode:设置打包环境,'development' or ‘production’,本地环境较为简单,生产环境更为复杂,比如压缩js代码;

二, webpack简单体验

    2.1:构建项目流程
        ---npm init
        ---npm i webpack webpack-cli -g  //全局安装
        ---npm i webpack webpack-cli -D  //开发依赖 
        ---项目内创建src,src内创建webpack入口文件index.js 和 index.html
        ---根目录下创建webpack.config.js,用于写webpack配置

webpack.cong
        
    2.2:打包命令
        a),webpack ./src/index.js -o ./dist/main.js --mode=development 
        b),webpack
        这里不要纠结哪种命令可行与否,只要能完成初始打包即可,本块构建可参考自行百度

webpack.config.js

三, webpack打包css资源
    ---需要的loader有:css-loader和style-loader;

    3.1 在src中创建index.css文件【其中添加css样式,将背景变为黑色,高度设置为100%】,在index.html中引入打包后的js文件,即dist下的main.js;
    3.2 在入口文件index.js中引入index.css, 使用 import './index.css'
    3.3 在module中设置css资源loader配置:

css资源

终端运行webapck打包成功后,运行html,将得到背景为黑色的效果;可通过浏览器Elements调试,发现网页head中多了一个style标签;

注意这里的use数组中的loader顺序,是自后向前的;而解析是默认采用commonjs

    3.4 打包less资源文件
        ---需要less / less-loader,步骤同上,需要配置不同的loader;

less-loader配置,需要下载!!!

运行命令后,切记运行打包命令! 效果出现!记得less里面写些玩意!

四,webpack打包html资源
    ---使用过vue-cli的朋友知道,单页面应用打包后dist文件夹会有一个.html文件,之前我们使用的是src的代码编辑文件夹内的html文件,实际生产环境的使用是使用的dist中的
    ---而且,之前我们index.html文件内的js是我们手动引用的,这里完全不是自动化打包;
    ---so.... 使用plugins插件配置

    4.1 删除src下的html文件内的js文件引用;
    4.2 使用 html-webapck-plugin插件;
        ---引入插件  在配置中 添加const HtmlWebpackPlugin = require('html-webpack-plugin');
        

插件配置,配置之前要引入哦

同样,打包后,会发现dist下有html文件,这是运行该html,将会得到我们的效果;
值得注意的是,loader过程是 下载->配置使用;而plugin过程则是:下载->引入->配置使用

五,webpack配置图片资源
    ---使用loader处理,需要下载包 url-loader / file-loader

    5.1 将src中index.html添加div,背景使用css中添加图片作为实验背景,图片找大中小个几张,这里要做实验;
    5.2 配置loader

loader配置

关于base64使用的优缺点:
    ---网页上的图片资源如果采用http形式的url的话都会额外发送一次请求,网页发送的http请求次数越多,会造成页面加载速度越慢。而采用Base64格式的编码,将图片转化为字符串后,图片文件会随着html元素一并加载,这样就可以减少http请求的次数,对于网页优化是一种比较好的手段;
    ---大量的base64会使渲染流程卡顿;大图使用base64体积将变很大,一次请求时间延长;而且还有兼容问题

    5.3 打包后会发现小于8kb的变成了base64,可在打包后的main.js中寻找,而两张大于8kb则在dist里面生成了2个图;打开html文件,则会看到图了;
    5.4 上面的图片都是css/less中的样式,当其他情况下呢?是否还有其他可配置项呢?
            --- 代码编辑区的index.html中添加img标签,打包,运行 ==》 没有出现图片。。
            --- 下载 html-loader 

配置html-loader

打包后,打开dist下的html文件,这里你会发现,img标签里可能是个非正常值;我这里说的是可能,因为我看到某些版本下,是非正常的,如果非正常,则需要配置url-loader的options,添加配置 eModule: false【关闭url-loader的es6模块化】,其原因是url-loader默认es6模块化解析,而html-loader引用的是commonjs;
    5.5 其他:将生成的图片名字长度减少  使用 name: '[hash:10].[ext]'

完整图片配置

后面将继续介绍webpack的相关知识,有错误或改进请感谢指出

相关文章

网友评论

      本文标题:webpack 基础到构建(一)

      本文链接:https://www.haomeiwen.com/subject/aknyaqtx.html