首页 > 其他分享 >关于Webpack的原理

关于Webpack的原理

时间:2024-07-18 23:25:04浏览次数:16  
标签:env Webpack xx 关于 模块 原理 打包 加载

目录

具体原理

一句话解释就是:解析配置、构建依赖图、解析模块并自动化代码分割,生成文件、输出到指定目录中
以下是具体说明:
1.解析配置:Webpack 根据配置确定入口文件、输出路径、加载器和插件等。
2.构建依赖图: 从配置的入口文件开始,递归地解析和分析模块的依赖关系,生成一个包含各模块及其依赖关系的依赖图。每个模块在解析时都会被处理,以确定其依赖的其他模块。
3.加载和转换模块:Webpack 使用加载器将不同类型的文件(如 ES6、TypeScript、SCSS、图片等)转换成浏览器能够理解的 JavaScript 模块。

4.代码分割:为了优化打包结果,Webpack 支持代码分割。这意味着它可以将应用程序的代码拆分成多个小包,以便实现按需加载。这样可以减少初始加载时间,提高应用程序性能。

5.生成代码:在所有模块都被加载和转换之后,Webpack 会根据依赖图将所有模块打包成一个或多个 bundle 文件。生成的代码会包含模块的定义和加载逻辑,以便在浏览器中正确运行。

6.输出文件:将生成的 bundle 文件输出到指定的目录中,过程可能会包括压缩、混淆、哈希命名等,以优化文件大小和加载速度。

多环境打包的具体问题

1.环境变量的打包,关于静态值与动态值:
在打包时,环境变量会被替换为静态值。例如,axios.js文件中的 baseURL 打包后使用的是打包时设定的环境变量值。
2.在Vue.CLI中,不同的环境配置文件有不同的优先级。
(1).env
(2).env.[development / production …]
而第二类的环境配置会覆盖.env文件内相同变量的配置,如.env.production、.env.development等,代码举例如下:

NODE_ENV=production
VUE_APP_AUTH_PATH=http://xx.xxx.xx.xx:3000
VUE_APP_DEFAULT_PATH=http://xx.xxx.xx.xx:3000

当.env有“VUE_APP_AUTH_PATH=http://aa.aaa.aa.aa:3000”时,如果.env.development也有“VUE_APP_AUTH_PATH=http://xx.xxx.xx.xx:3000”,那么最后打包得到的“VUE_APP_AUTH_PATH=http://xx.xxx.xx.xx:3000”。

相应注解

1.加载器(Loaders):一种预处理器,它可以在模块加载前对模块内容进行转换,例如将 ES6 转换成 ES5,将 SCSS 转换成 CSS 等。
2.插件(Plugins)
3.依赖图(Dependency Graph)
4.代码分割(Code Splitting)
5.按需加载(Lazy Loading)

标签:env,Webpack,xx,关于,模块,原理,打包,加载
From: https://blog.csdn.net/m0_52690634/article/details/140533544

相关文章

  • 关于MySQL主从复制的详细流程
    目录一、准备工作二、配置主服务器(Master)三、配置从服务器(Slave)四、数据同步(可选)五、验证复制关于MySQL主从复制的详细流程,可以分为以下几个主要步骤:一、准备工作确保环境:准备至少两台服务器,一台作为主服务器(Master),另一台作为从服务器(Slave)。确保两台服务器间的......
  • DLP显示原理
    DLP原理参考内容:1.视频DLP显示原理,即数字光处理,利用DMD数字光处理芯片实现光处理的技术,将光源发出的光通过透镜,光棒均匀化处理后再通过一个色轮将光分为RGB三色,再由透镜透射到DMD芯片后再反射到投影镜头,实现投影成像,其核心在于DMD芯片,在其上面分布这数百万比头发更小的镜片,这些......
  • 浅谈:HTTP 和 HTTPS 通信原理
    1.HTTP基本概念1.1HTTP是什么? HTTP (超文本传输协议)协议被用于在Web浏览器和网站服务器之间传递信息, HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此, HTTP 协议不适合传......
  • webpack 打包后复制文件
    写在前面项目中使用一些特定依赖的时候,会定义全局暴露的变量,不希望webpack将其压缩混淆,期望在打包后的成果物中保留原样。copy-webpack-plugin首先想到使用webpack插件copy-webpack-plugin,可以直接复制原始资源到输出目录中(非最优解!)安装依赖npminstallcopy-webpack-pl......
  • 关于《给博客园的几点现实建议》
     为了不占用各位园友的资源,整整48小时后,我删除了《给博客园的几点现实建议》当然,有关内容我已经作了导出,有兴趣的可以看看。下载  我写《给博客园的几点现实建议》并不是为了改变谁,虽然有些朴素的愿望,但是并非胁迫,也非利益相关。既然已经表达了想法,传达了意愿,也就应该回归......
  • TCP/IP协议,以及对等网络通信原理!
    TCP/IP模型协议分层应用层:HTTP:超文本传输协议(网站访问WEB)(Apache、nginx)(IIS)FTP:文件传输协议(网络文件传输)TFTP:简单文件传输协议(交换机和路由器重装)SMTP:简单邮件传输协议(发信)POP3:邮局协议3代(收信)SNMP:简单网络管理协议(服务器监控)DNS:域名系统(域名与IP解析)传输层:TCP:传......
  • Spring - AOP - 底层原理
    目录:Spring-AOP-底层原理1.代理模式2.静态代理3.JDK动态代理4.CGlib动态代理5.注意事项Spring-AOP-底层原理1.代理模式代理模式是一种比较好的理解的设计模式。简单来说就是:使用代理对象来增强目标对象(targetobiect),这样就可以在不修改原目标对......
  • C++中关于异常的知识点
    C++中关于异常的知识点异常基本概念异常处理的基本思想C++异常处理的实现异常基本语法栈解旋(unwinding)异常接口声明异常变量生命周期异常的多态使用C++标准异常库标准库介绍编写自己的异常类异常基本概念异常是一种程序控制机制,与函数机制独立和互补函数是一......
  • 计算机网络-IGMPv3的工作原理
    一、SSM模型带来的挑战出于安全考虑,组播组成员可以只选择接收从特定组播源发来的组播数据。组成员需要告知组播网络,接收来自哪些特定组播源的组播流量。IGMPv1与IGMPv2的报文中均无法携带组播源的信息,因此无法配合SSM使用(可使用SSMMapping功能解决这个问题)。回顾我们......
  • 优化原理 (1)高斯牛顿 线性
        /**Gauss-Newtoniterationmethod*author:Davidwang*date:2020.08.24*/#include<iostream>#include<chrono>#include<opencv2/opencv.hpp>#include<Eigen/Core>#include<Eigen/Dense>usingnamespacestd;u......