关于webpack,你想知道的都在这;
咱也标题党一回 哈哈哈
要使用webpack优化项目打包构建速度,首先得知道问题出在哪,
要知道问题出在哪,首先得知道webpack 打包的基本原理才能针对性的去做优化,下面首先了解webpack基本原理
一,webpack构建执行流程
① 初始化参数
我们执行npx webpack 命令的时候,webpack首先会检测参数是否合法,然后去初始化我们的配置参数
②开始编译的准备工作
这也是编译阶段开始的部分 ,这个部分会有个概念; compiler
首先会实例化一个Compiler对象,然后添加上一步校验的参数
③编译模块
使用compiler.run 进行编译
这里实例化compilation
然后找到入口文件,通过acron 转换为ast语法树,
webpack递归找到所有依赖的模块,webpack中会通过入口递归把所有依赖的模块使用loader进行处理
这里可以插一句loader的作用就是处理文件
④完成模块编译
将上一步得到的module封装成module代码
⑤输出资源
保存到assets中
⑥输出完成
调用onCompilered 生成文件保存到目录
二,关于loader和plugin
webpack依靠的就是各种loader和plugin来完成代码的转化,文件的转化,打包等任务,webpack本身功能并不强大,只是loader和plugin赋给他强大的”外挂“功能
①loader的总体运行流程
②plugin的原理
每个插件都是一个函数,并且函数的prototype 上会绑定一个apply方法
举个栗子 一下代码会再编译过程中打印hello,参数名字
class DonePlugin {
constructor(options) {
this.options = options;
}
apply(compiler) {
compiler.hooks.done.tap("DonePlugin", (stats) => {
console.log("Hello ", this.options.name);
});
}
}
module.exports = DonePlugin;
webpack最最最重要的部分莫过于优化配置了
1 缩小范围
extensions 在导入语句import require 没有添加扩展名后缀的时候,指定extension之后会再指定的文件扩展名中寻找文件
resolve:{
extensions: ['.js','.jsx','.json','.css']
}
alias 配置别名会加快webpack查找模块的速度
关于webpack,你想知道的都在这;的更多相关文章
- 看完SQL Server 2014 Q/A答疑集锦:想不升级都难!
看完SQL Server 2014 Q/A答疑集锦:想不升级都难! 转载自:http://mp.weixin.qq.com/s/5rZCgnMKmJqeC7hbe4CZ_g 本期嘉宾为微软技术中心技术 ...
- 关于MySQL慢日志,你想知道的都在这
关于MySQL慢日志,你想知道的都在这 https://mp.weixin.qq.com/s/Ifbq0Dk13SO3WVghqWVUbA 作者介绍邹鹏,现任职于腾讯云数据库团队,负责腾讯云数据库My ...
- CYDIA装了个插件,想删除怎么都删除,电脑如何删除插件?
http://bbs.weiphone.com/read-htm-tid-3670917.html 装了个插件,想删除怎么都删除不掉不要跟我说在CYDIA里面删除.,在CYDIA里点击该插件就会闪退C ...
- Swift具体解释之三----------函数(你想知道的都在这里)
函数(你想知道的都在这里) 注:本文为作者自己总结.过于基础的就不再赘述 ,都是亲自測试的结果.如有错误或者遗漏的地方.欢迎指正.一起学习. 1. 函数的简单定义和调用 简单的无參函数就不再赘述 , ...
- 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上) 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下)
微信.QQ.新浪微博等第三方登录,你想知道的都在这了(上):https://www.jianshu.com/p/133d84042483 微信.QQ.新浪微博等第三方登录,你想知道的都在这了(下):h ...
- python学习之路------你想要的都在这里了
python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...
- KMP算法,你想知道的都在这里!
简洁 我相信很多人都听说过KMP算法(PS:在上数据结构的时候,这个算法自始至终都没想明白) 大家也知道KMP算法是用来寻找目标子串的算法,但是都没有真正搞懂KMP.之前,我也是如此,我疑惑的有: N ...
- 【高热FAQ】关于智慧康养物联网加速器 ,你想知道的都在这
摘要:从软硬件解决方案.设备接入到资源扶持,一文梳理智慧康养物联网加速器中ISV最关心的问题. 本文分享自华为云社区<[高热FAQ]关于智慧康养物联网加速器 ,你想知道的都在这>,作者:技 ...
- 你想要的都在这里,ASP.NET Core MVC四种枚举绑定方式
前言 本节我们来讲讲在ASP.NET Core MVC又为我们提供了哪些方便,之前我们探讨过在ASP.NET MVC中下拉框绑定方式,这节我们来再来重点看看枚举绑定的方式,充分实现你所能想到的场景,满 ...
随机推荐
- Angular依赖注入:全面讲解(翻译中)
在实际使用Angular依赖注入系统时,你需要知道的一切都在本文中.我们将以实用易懂并附带示例的形式解释它的所有高级概念. Angular最强大.最独特的功能之一就是它内置的依赖注入系统. 大多数时候 ...
- jarvisoj_level3
自己的第一篇博客 *其实很早就想写博客了但是自己安全学的比较晚而且也很菜,现在虽然还是比较菜但是也是有一些心得的 *第一个问题什么是ctf,根据某度来说:CTF(Capture The Flag)中文 ...
- KDT入门小讲
KDT入门小讲 为了搞讲课两天搞出来的PPT,质量不高,随便看看 附:讲课用PPT 链接: https://pan.baidu.com/s/1qHea0fEhscAsQh8-Yu_j_A 提取码: 4 ...
- 跨平台书签同步-Xmarks
原文链接 Xmarks简介 Xmarks 是一款浏览器书签同步工具,它可以实现不同设备,不同浏览器之间的书签同步,并且是免费的. 有人会说,我们为什么需要一款专门的书签同步工具呢?Safari 自带的 ...
- TypeScript-axios模块进行封装的操作与一些想法
所谓封装与模块化,对我这种初学者来说,个人理解就是解耦,比如说,当我们前端一个项目使用了现在流行的模块,但是没有对其进行封装处理,包括一些相同的代码逻辑,把他们分散在各个组件当中,这样一来整个项目对于 ...
- Seata XA 模式示例分析
@ 目录 1 下载示例 2 示例结构 3 业务服务 business-xa 3.1 模块结构 3.2 Controller 层 3.3 Service 层 3.4 stock Feign 客户端 3. ...
- 报错———http://mybatis.org/dtd/mybatis-3-mapper.dtd 报红解决方案
初次使用mybatis时,下面红线上的地址报红. 解决方法是:将http://mybatis.org/dtd/mybatis-3-mapper.dtd拷贝.添加到下面标记处.
- 萌新看过来,你还学不懂VScode插件吗?
一.前言 VSCode是微软家一个非常轻量化的编辑器,体量虽轻,但是却有异常强大的功能.原因在于VSCode许多强大功能都是基于插件实现的,IDE只提供一个最基本的框架和基本功能,我们需要使用插件来丰 ...
- 绕过WAF进行常见Web漏洞利用
前言 本文以最新版安全狗为例,总结一下我个人掌握的一些绕过WAF进行常见WEB漏洞利用的方法. PS:本文仅用于技术研究与讨论,严禁用于任何非法用途,违者后果自负,作者与平台不承担任何责任 PPS:本 ...
- [Lua游戏AI开发指南] 笔记零 - 框架搭建
一.图书详情 <Lua游戏AI开发指南>,原作名: Learning Game AI Programming with Lua. 豆瓣:https://book.douban.com/su ...