zoukankan      html  css  js  c++  java
  • webpack基础

    1. 简介

    webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。

    当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。

    2. webpack的作用

    转换ES6语法 

    css前缀补全/预处理器(less、sass)

    压缩混淆

    3.优点

    社区生态丰富

    配置灵活和插件化扩展

    官方更新迭代速度快

    4.webpack安装

    1)npm init -y   //初始化

    2)npm install webpack webpack-cli --save-dev   //安装

    3)npx webpack  //打包(npm5.2+)

    5.webpack配置组成

     1)entry

    entry用来指定webpack的打包入口

    单入口:entry是个字符串

    多入口:entry是个对象

     

    简单规则:

    每个 HTML 页面都有一个入口起点。

    单页应用(SPA):一个入口起点。

    多页应用(MPA):多个入口起点。

    2) output

    output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist

    单入口配置:

    多入口配置:

    3)loader

    webpack开箱即用只支持js、json两种文件类型,通过Loader去支持其他文件类型并转换成有效的模块添加到依赖图中

    常见的Loader :

    loader的用法:

    4)plugins

    插件用于bundle文件的优化,资源管理和环境变量注入,作用于整个构建过程

     

    Plugins用法:

    要使用一个插件,你只需要 require() 它,然后把它添加到 plugins 数组中。

    多数插件可以通过选项(option)自定义。

    你也可以在一个配置文件中因为不同目的而多次使用同一个插件,这时需要通过使用 new 操作符来创建它的一个实例

    const HtmlWebpackPlugin = require('html-webpack-plugin');

    5) mode

    提供 mode 配置选项,告知 webpack 使用相应模式的内置优化。

    默认值是production.

     资源解析:

    1.解析ES6

    使用babel-loader

    安装: npm install @babel/core @babel/preset-env babel-loader --save-dev

    babel的配置文件是: .babelrc

     

    在rules的对应:

    2.解析Vue

    使用vue-loader

    安装vue:

    npm install vue --save-dev (用于解析.vue文件的模板)

    npm install vue-loader --save-dev

    npm install vue-template-compiler --save-dev

    引入VueLoaderPlugin插件

     3.解析ts

    使用ts-loader

    安装:

    npm install typescript ts-loader --save-dev

    配置tsconfig.json

    4.解析css

    css-loader用于加载.css文件,并且转换成commonjs对象

    style-loader将样式通过<style>标签插入到head中

    npm install style-loader css-loader --save-dev

    // 针对css文件使用的loader,注意有先后顺序,数组项越靠后越先执行

     

    5.解析less/sass

    less-loader将less转换成css npm install less-loader --save-dev

    sass-loader将sass转换成css npm install sass-loader --save-dev

     

    6.解析文件

    file-loader用于处理图片、字体

    npm install file-loader --save-dev

     

    url-loader也可以处理文件、字体,可以设置较小资源自动base64     

    npm install url-loader --save-dev

     

    webpack中的文件监听

    文件监听是在发现源码发生变化时,自动重新构建出新的输出文件

    webpack开启监听模式,有两种方式:

    1)启动webpack命令时,带上 --watcch参数

    2)在配置webpack.config.js中设置watch:true

    缺陷:每次都要手动刷新浏览器

     文件监听的原理:

    轮询判断文件的最后编辑时间是否变化 某个文件发生了变化,并不会立刻告诉监听者,而是先缓存起来,等aggregateTimeout

     

    热更新: webpack-dev-server

    不需要手动刷新浏览器 不输出文件,放到内存中

    安装:npm install webpack-dev-server --save-dev

    在webpack.dev.js配置://会自动添加HotModuleReplacementPlugin插件

     

    在package.json中配置

     文件指纹:

    打包后输出文件名的后缀

    hash:和整个项目的构建相关,只要项目文件有修改,整个项目构建的hash值就会更改

    Chunkhash: 和webpack打包的chunk有关,不同的entry会生成不同的chunkhash值

    Contenthash: 根据文件内容来定义hash,文件内容不变,则contenthash不变

    Js文件指纹的设置:

     

    CSS文件指纹的设置: 用MiniCssExtractPlugin提取css文件

     代码压缩

     

     自动清理构建目录

    使用clean-webpack-plugin默认删除output指定的输出目录

    CSS3前缀

    使用postcss-loader autopreffixer自动补齐CSS3前缀

    移动端CSS px自动转换成rem

     

  • 相关阅读:
    General error: 1364 Field 'id' doesn't have a default value
    数据库 主键、外键和索引的区别
    宝塔升级
    服务器数据库性能调优
    关于TP5.1的跳转
    用PHP写九九乘法表
    Java中的接口
    Java中的继承
    超市库存管理系统
    Java中的封装
  • 原文地址:https://www.cnblogs.com/150536FBB/p/11347666.html
Copyright © 2011-2022 走看看