node版本从14.16.0升到20.5.1后,vue2的一个项目运行后在安卓6上白屏了

news/2025/3/13 16:03:43/文章来源:https://www.cnblogs.com/chicidol/p/18770151

babel 配置问题

//babel.config.js

module.exports = {
  presets: [
    ["@vue/cli-plugin-babel/preset", {
      useBuiltIns: 'usage',
      corejs: 3,
      targets: {
        android: '6'
      }
    }]
  ]
}
 
 
低版本兼容问题polyfill:

直接引入 `import 'core-js/stable'` 和 `import 'regenerator-runtime/runtime'` 会有以下影响:

1. 影响打包体积
```javascript
// 这样引入会导入所有 polyfill
import 'core-js/stable'
import 'regenerator-runtime/runtime'
```
- 相当于设置 `useBuiltIns: 'entry'`
- 会引入所有的 polyfill,而不是按需引入
- 显著增加打包体积

2. 与 `useBuiltIns: 'usage'` 冲突
```javascript
// babel.config.js
module.exports = {
presets: [
['@vue/cli-plugin-babel/preset', {
useBuiltIns: 'usage', // 这个配置会与手动引入冲突
corejs: 3
}]
]
}
```

推荐做法:

1. 使用 babel 配置自动处理
```javascript
// babel.config.js
module.exports = {
presets: [
['@vue/cli-plugin-babel/preset', {
useBuiltIns: 'usage', // 按需引入
corejs: 3
}]
]
}
```

2. 移除手动引入
```javascript
// 删除这些手动引入
// import 'core-js/stable'
// import 'regenerator-runtime/runtime'
```

3. 如果确实需要全量引入,修改配置
```javascript
// babel.config.js
module.exports = {
presets: [
['@vue/cli-plugin-babel/preset', {
useBuiltIns: 'entry', // 改为 entry 模式
corejs: 3
}]
]
}
```

对比示例:

1. 手动引入(不推荐)
```javascript
// main.js
import 'core-js/stable'
import 'regenerator-runtime/runtime'

// 会导入所有 polyfill,包体积大
```

2. 自动按需引入(推荐)
```javascript
// babel.config.js
module.exports = {
presets: [
['@vue/cli-plugin-babel/preset', {
useBuiltIns: 'usage',
corejs: 3
}]
]
}

// main.js
// 不需要手动引入,babel 会自动处理
```

3. 实际效果对比
```javascript
// 使用手动引入或 entry 模式
// 打包后可能包含大量未使用的 polyfill
bundle.js: 500KB

// 使用 usage 模式
// 只包含实际使用的 polyfill
bundle.js: 200KB // 体积明显减小
```

最佳实践建议:

1. 删除手动引入的代码
- 移除 `import 'core-js/stable'`
- 移除 `import 'regenerator-runtime/runtime'`

2. 使用 babel 配置
```javascript
module.exports = {
presets: [
['@vue/cli-plugin-babel/preset', {
useBuiltIns: 'usage',
corejs: 3,
targets: {
browsers: ['> 1%', 'last 2 versions', 'not dead']
}
}]
]
}
```

3. 定期检查打包体积
- 使用 webpack-bundle-analyzer 分析
- 确保没有不必要的 polyfill

4. 根据实际需求调整
- 如果确实需要全量 polyfill,使用 entry 模式
- 否则坚持使用 usage 模式

这样可以:
- 优化打包体积
- 提高加载性能
- 保持代码整洁
- 避免重复引入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/898217.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每美搭(1)

一、团队介绍 1.1 团队概况 1.1.1 博客展示链接 团队名:每美搭子们,组长博客链接 https://www.cnblogs.com/0623-k 1.1.2 团队项目描述 每美搭:每美搭是一款专注于服装搭配推荐的APP。它能精准获取用户个人基本体型、上传服装类型等多维度数据,结合地区天气、用户心情、服装…

嵌入向量计算示例

嵌入向量计算示例 1. 问题设定场景:电影推荐系统中用户对电影类型的偏好嵌入 输入特征:4种电影类型(动作片、喜剧片、科幻片、爱情片) 嵌入维度:n_e = 2 词汇大小:n_v = 42. 数据表示 (1)独热编码电影类型 独热编码向量动作片 [1, 0, 0, 0]喜剧片 [0, 1, 0, 0]科幻片 […

塔石串口服务器的工作模式有哪些

串口服务器通过支持多种工作模式,实现了串行接口与网络接口之间的数据透明传输,提供了灵活的网络通信解决方案。以下是串口服务器的几种常见工作模式:| TCP Server模式 在TCP Server模式下,串口服务器作为TCP服务器,等待客户端的连接请求。这种模式下,串口服务器会监听一…

【正点原子】全志T113-i开发板震撼上市!异核开发、工控设计方案!新品上市,限时低价!

【正点原子】全志T113-i开发板震撼上市!异核开发、工控设计方案!新品上市,限时低价!ATK-DLT113IS开发板是正点原子基于全志T113-i处理器而研发的一款用于嵌入式Linux领域的开发板,其拥有高性能、高可靠性、低成本和丰富的接口资源,适用于嵌入式系统开发!T113-i芯片框架 …

Stochastic Orders 理解和相关运算(_随时补充)

Recall数学里,用\(o\)和\(O\)表示the order the terms. \(a_n = o(1)\). \(a_n = O(1)\).Stochastic order notation 是一种用来表示随机变量序列概率收敛的速记方法。 \(O_p(1)\)依概率有界; \(o_p(1)\)依概率收敛到0. \(X_n= O_p(a_n)\Leftrightarrow \frac{X_n}{a_n} =O_p…

DCC控制器模型铁路-蓝牙版本

蓝牙版本: 该单元加上App提供了一个完整的DCC控制器,具有击败更昂贵系统的功能。物有所值,可靠,使用简单,定制系统,以匹配您的火车头花名册。 包括F1到F32功能按钮兼容最新的声音解码器 添加您自己的loco名称和函数标题。 -在Android设备(手机或平板电脑)上安装App 对于初…

jMeter的下载和安装

jMeter简介: JMeter 是一款由 Apache 软件基金会开发的开源性能测试工具,主要用于模拟高负载场景下的应用程序行为,帮助开发者评估系统的性能、稳定性和可靠性。 核心功能1. 协议支持广泛:支持 HTTP/HTTPS、FTP、JDBC、SOAP、REST、WebSocket 等多种协议,可对 Web 应用、A…

测试方法代码以及示例源码都已经上传至代码库,有兴趣的可以看看。

合集 - LeetCode 题集(10)1.LeetCode题集-1- 两数之和2024-08-312.LeetCode题集-2 - 两数相加2024-09-053.LeetCode题集-3 - 无重复字符的最长子串2024-09-094.4 - 寻找两个有序数组的中位数,图文并茂,六种解法,万字讲解2024-09-165.LeetCode题集-5 - 最长回文子串(一)202…

主从搭建innobackupex恢复从库报错Unable to open undo tablespace undologundo001

近日,用innobackupex重新搭建从库时报Unable to open undo tablespace undologundo001错误 下面是解决的过程: 启动从库时报错如下2025-01-16T14:43:16.367875+08:00 0 [ERROR] InnoDB: Unable to open undo tablespace undolog/undo001. 2025-01-16T14:43:16.367904+08:00 0…

DIY自动药丸分配器

经过三年的工作,我终于完成了我的自动给药机。我有时候很健忘。每次出门前,我都要提醒自己带上钱包、手机、钥匙和眼镜,通常至少要提醒五次。在大多数情况下,我已经建立了常规和流程来帮助我处理它,当然,除了我的日常补品(你知道,多种维生素,ω - 3,以及类似的东西)。…

Laravel11 从0开发 Swoole-Reverb 扩展包(五) - Laravel Echo 介绍

前情提要 上一节我们完整的梳理了整个通信过程,接下来我们需要来看前端的处理过程。 Laravel Echo Laravel Echo 是一个 JavaScript 库,它让您可以轻松订阅频道并监听服务器端广播驱动程序广播的事件。您可以通过 NPM 包管理器安装 Echo。在此示例中,我们还将安装 pusher-js…

远程——汇总篇(远程桌面、VNC、向日葵、ssh等)

关于远程的博客写了不少,这里汇总下,当个总目录。基本都需要外接物理显示器。 1、Windows远程 直接用下图方式,啥都不用装。Ubuntu22.04系统(其他版本未测)需开启远程桌面2、向日葵远程,需有网 Ubuntu安装amd64、arm64向日葵远程控制、及必要的设置 - 夕西行 - 博客园3、…