zoukankan      html  css  js  c++  java
  • webpack优化分享

    webpack整个的构建过程是基于事件流

    webpack 就像一条生产线,要经过一系列处理流程后才能将源文件转换成输出结果。 这条生产线上的每个处理流程的职责都是单一的,多个流程之间有存在依赖关系,只有完成当前处理后才能交给下一个流程去处理。 插件就像是一个插入到生产线中的一个功能,在特定的时机对生产线上的资源做处理。 Webpack 通过 Tapable 来组织这条复杂的生产线。 Webpack 在运行过程中会广播事件,插件只需要监听它所关心的事件,就能加入到这条生产线中,去改变生产线的运作。 Webpack 的事件流机制保证了插件的有序性,使得整个系统扩展性很好。

    构建过程

    1. 优化webpack,初始化构造配置参数,构建compiler对象,挂载Tapable事件流钩子函数(plugin的apply方法)
    2. 入口,读取entries入口配置信息
    3. 阶段,依次读取入口文件,loader内容转换,AST语法树转换,依赖收集,逐个拉取依赖并重复上述过程,最终得到转换后的内容以及依赖关系
    4. 资源,根据入口与模块之间的依赖关系,组装chunk代码块,生成文件输出列表
    5. 成功,根据配置输出文件路径和文件名,将文件写入文件系统,完成构建

    优化

    resolve优化

    减少 resolve 的解析

    1. resolve.extensions:用来表明文件后缀列表,默认查找顺序是 ['.js', '.json'],如果你的导入文件没有添加后缀就会按照这个顺序查找文件。我们应该尽可能减少后缀列表长度,然后将出现频率高的后缀排在前面
    2. resolve.alias:可以通过别名的方式来映射一个路径,能让 Webpack 更快找到路径
    3. resolve.mainFields:[‘main’],设置尽量少的值可以减少入口文件的搜索步骤
    4. module.noParse,排除不需要扫描的文件

    loader优化

    1. Loader 的文件搜索范围
    2. cache-loader(将loader编译后的结果写入硬盘缓存)
    3. HappyPack可以将 Loader 的同步执行转换为并行的(目前基本弃用了)
    4. 排除node_modules等不需要编译的文件( exclude: /node_modules/ )
    5. 配置loader缓存参数,例如label( loader: 'babel-loader?cacheDirectory=true' )

    广州VI设计公司https://www.houdianzi.com

    plugin优化

    1. 使用 DLLPlugin打包公共代码
    2. ParallelUglifyPlugin开启多进程压缩JS文件
    3. IgnorePlugin(内置插件) 忽略某些模块
    4. LimitChunkCountPlugin合并细小的chunk代码块,减少http请求;MinChunkSizePlugin合并细小代码块

    optimization

    1. splitChunks分块,缓存复用率在minChunks上的代码块
    2. minimizer中ParallelUglifyPlugin插件并行压缩代码
    3. concatenateModules串联到单个模块中的模块图段,production模式下默认开启
    • ...production模式下默认开启的优化选项
  • 相关阅读:
    如何使用SAP Intelligent Robotic Process Automation自动操作Excel
    OpenSAML 使用引导 IV: 安全特性
    Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务
    微服务架构集大成者—Spring Cloud (转载)
    Spring Cloud Eureka 服务注册列表显示 IP 配置问题
    使用 Notification API 开启浏览器桌面提醒
    SignalR 中使用 MessagePack 序列化提高 WebSocket 通信性能
    配置 Nginx 的目录浏览功能
    关于 Nginx 配置 WebSocket 400 问题
    Migrate from ASP.NET Core 2.0 to 2.1
  • 原文地址:https://www.cnblogs.com/qianxiaox/p/14025787.html
Copyright © 2011-2022 走看看