【开发日记】Vue项目懒加载ECharts等JS脚本文件

[问题探讨]H5移动端无限懒加载echarts图表引起的IOS闪退问题 背景:Vue+Echarts+mintUI开发移动端app 问题:Echarts图表在IOS端懒加载多个时出现闪退 问题分析: 频繁操作App直到闪退出现,监控内存使用情况后发现,在操作过程中内存一直升高,到600M时软件闪退; 考虑从两方面解决: 一,减轻echarts图表渲染的压力(只渲染视口内的图表); 二,抑制频繁请求,减轻内存压力(抑制无效请求); 一,减轻echarts图... 阅读详情

1、前言

项目使用了ECharts和WordCloud(词云图),并使用npm的方式安装,导致打包后echarts占了打包文件的一半以上,影响网页加载速度。

所以就想着能不能让通过CDN的方式加载,而且是懒加载的方式,让ECharts的CDN文件在打开Vue组件时才开始加载。

2、实现效果

图片

第一次打开界面加载网络数据

图片

第二次打开界面加载网络数据

3、实现方法

① 创建一个动态加载JS脚本文件的函数,并返回一个Promise。

export function loadScript(url) {
  return new Promise((resolve, reject) => {
    const script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;
    script.onload = resolve;
    script.onerror = reject;
    document.head.appendChild(script);
  });
}

② 创建一个用来加载ECharts和EChartsWordCloud的函数。

import { loadScript } from '@/util/LoadScript';

let echartsPromise = null;
let wordCloudPromise = null;

export function loadECharts() {
    if (!echartsPromise) {
        echartsPromise = loadScript('https://cdnjs.cloudflare.com/ajax/libs/echarts/5.4.2/echarts.min.js');
    }
    return echartsPromise;
}

export function loadEChartsWordCloud() {
    if (!wordCloudPromise) {
        wordCloudPromise = loadScript('https://cdn.jsdelivr.net/npm/echarts-wordcloud/dist/echarts-wordcloud.min.js');
    }
    return wordCloudPromise;
}

③ 在组件中使用ECharts。

import { loadECharts } from '@/utils/echartsLoader';
export default {
  async mounted() {
    await loadECharts();
    // 初始化ECharts图
    this.initECharts();
  },
  methods: {
      initECharts(){
         const chart=echarts.init(document.getElementById('echarts'));
         ...
      }
  }
}

软件推荐

让你的微信接入智能机器人,设定关键词自动回复消息,在群聊中还能通过聊天机器人与群友一起玩游戏。公众号【全栈开发日记】后台回复【聊天机器人】获取地址。

接入智能机器人icon-default.png?t=N7T8https://mp.weixin.qq.com/s/VWqcvzZ_T89OmafiA_j04A

SpringBoot宠物成长记录平台设计与实现 SpringBoot作为Java领域主流的快速开发框架,通过自动配置和起步依赖大幅简化了企业级应用开发。其与MyBatis-Plus、Vue.js等技术栈的组合,能够高效构建前后端分离系统。在宠物健康管理场景中,这种技术组合可实现成长数据可视化、智能提醒等核心功能,满足养宠人群的系统化记录需求。本文详解的宠物成长记录平台,采用ECharts实现生长曲线分析,结合Spring Schedule完成疫苗接种提醒,为计算机专业毕业设计提供了完整的技术实现方案。 阅读详情

相关推荐

echarts实战应用

echarts的基本应用到 动态数据的使用 从页面 2秒钟发送一个请求到servlet 然后从servlet返回一个json数据 然后在页面展示 包含折线 饼图 柱形

【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)

微信小程序中使用 echarts 需使用官方提供的 ec-canvas 组件。

朝阳39的博客 3322

VPI与Matlab协同仿真:相干光通信接收端DSP算法全解析

本文详细解析了如何利用VPI与Matlab协同仿真,构建完整的相干光通信接收端DSP算法处理闭环。重点介绍了从VPI导出数据后,在Matlab中实现时钟恢复、偏振解复用和载波相位估计等核心算法的步骤与原理,并阐述了如何通过误码率计算完成仿真验证,为相干光通信系统算法研究与验证提供了高效实用的方法。

ll5678的博客 608

动态化echarts数据和遇到的问题

echarts的动态化数据和遇到数据无法渲染的问题

qq_46131497的博客 957

Pytorch.nn.Linear 解析(数学角度)

pytorch.nn.Linear 是一个类,下面是它的一些初始化参数 in_features : 输入样本的张量大小 out_features : 输出样本的张量大小 bias : 偏置 它主要是对输入数据做一个线性变换。 y=xAT+b y=xA^T+b y=xAT+b 这里A是权重矩阵,b是偏置。他们都是根据 in_features 生成 测试代码: m = torch.nn.Linea...

Medlen 1万+

2025年从零开始:构建你的首个ComfyUI工作流-ComfyUI入门教程

然而,由于它拥有众多的插件节点,以及较为复杂的操作流程,学习起来相对困难。以前面搭建的文生图工作流为例,首先点击功能区的【保存】,然后你的浏览器会出来一个弹窗,你可以进行文件命名,点击确定后浏览器会下载该文件,也就是带“json”后缀的文件,这样我们的工作流就打包成一份文件了。思考一下前面说的,节点是不是需要下载安装才能使用,而我们复用别人的工作流,他用的节点你不一定下载了,因为目前有600多个节点,你不可能全部下载了吧,所以我们日后使用别人的工作流,你会经常出现这样的问题。

weixin_59486588的博客 1454

React使用echarts绘制超长页面时,做页面可视区域的懒加载

原先有一个使用echarts写的超级长的页面,按类型分为大标题下面的5部分,也就是页面刚开始是初始化进来,直接调用5个接口获取数据。由于后台数据量过大,每次查询数据库的时候,部分接口响应时间超过20秒,遂决定拆分接口为原先的一个接口,变为现在的4个小接口,也就相当于现在一个页面需要调用20个接口。/components/son_1.js 子组件(1)/components/son_2.js 子组件(2)/father.js 父组件。react hooks 函数方法。

weixin_46395519的博客 1191

CMake安装grpc生成gRPCTargets.cmake文件

以下是安装语句: cd grpc_folder git submodule update --init cmake .. make -j 4 sudo make install 然而编写依赖gRPC的程序,发现无法调用gRPC的CMake文件,错误提示如下所示: include could not find load file: /usr/local/lib/cmake/g...

2328

【小程序】集成echarts问题记录

最近项目在集成图表到小程序,把这其中遇到的问题记录下来,以便查询。最终效果。

MacwinWin的博客 1093

【BLE系列-第六篇】GATT解析:属性、特征、描述符的逻辑关系

本文系统介绍了BLE协议中的ATT和GATT机制。ATT以"属性"为基本数据单元,包含UUID、Handle、权限和Value四个要素。GATT则在ATT基础上构建了服务、特征和描述符的层次结构:服务(UUID:0x2800/0x2801)通过声明属性标识,特征声明(UUID:0x2803)指向特征值(UUID:0x2Axx或自定义),描述符(UUID:0x2900~0x290F)提供附加信息。GATT复用ATT发现机制,通过定义特定UUID语义实现服务发现和特征管理。这种设计使BLE设

qq_43399763的博客 1929

Lama:基于傅立叶卷积的分辨率鲁棒性大掩模修复

为了缓解修复网络和损失函数都缺乏有效的感受野这个问题,提出了大掩模修复(LaMa)。LaMa基于一种新的修复网络架构,该架构使用快速傅立叶卷积(FFC),具有图像范围的感受野;高感受野感知损失;大型训练掩码,释放前两个组件的潜力。

qq_44926214的博客 1416

基于Node.js与Vue的幼儿园管理系统开发实践

现代Web应用开发中,前后端分离架构已成为主流技术方案。Node.js作为高效的JavaScript运行时,配合Express框架可快速构建RESTful API服务;Vue.js则以其响应式特性和组件化开发优势,成为前端开发的优选框架。这种技术组合特别适合教育管理系统开发,能有效解决传统管理方式中的效率瓶颈和数据孤岛问题。以幼儿园管理系统为例,通过JWT认证保障多角色权限控制,结合MongoDB的灵活数据模型,实现了幼儿信息管理、智能考勤等核心功能模块。系统采用Element UI组件库提升开发效率,集成

weixin_31102231的博客 212

MeloTTS 生成 RKNN 模型

摘要: 本方案基于RK3588平台,利用RKNN工具链实现高效语音合成(TTS)。采用MeloTTS开源模型,支持中英文混合语音生成。部署流程包括:1) 导出ONNX模型;2) 转换为RKNN格式;3) 在RK3588开发板运行。关键步骤包含环境配置(RKNN Toolkit2≥1.4.0)、模型转换(非量化处理)及音频处理实现。方案充分发挥RK3588的NPU加速能力,适用于边缘设备语音合成场景

J。 346

碉堡了!14.9k star,一款基于Vue3搭建的低代码数据可视化开发平台

低代码又整出新花样了!最近,有一款可视化开发平台刚开源就火速出圈,迅速斩获14.9k star,引来无数开发者围观和尝试。只需要通过简单的拖拉拖即可快速搭建出一款数据大屏,能有这样的关注度,肯定不是“靠标题骗点击”的项目。实际体验下来,这款叫做GoView的平台,确实有两把刷子。GoView 是一款使用 Vue3 + TypeScript 构建的低代码可视化开发平台,专注于数据大屏搭建。你可以通过拖拽组件、配置参数,快速搭建一个炫酷的可视化界面,无需写一行代码。适合谁?

1588

1.为什么要学习MATLAB

学习MATLAB

FPGA/MATLAB学习教程/源码/项目合作开发 5804

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Python+Vue个人健康管理系统开发实践

Web开发中的前后端分离架构已成为现代应用开发的主流范式,通过API接口实现数据交互,既保证了系统的灵活性又便于团队协作。Python Flask作为轻量级Web框架,配合SQLite嵌入式数据库,能够快速构建中小型Web应用的数据持久层。在健康科技领域,这种技术组合特别适合开发个人健康管理系统,实现体重、血压、睡眠等健康指标的数字化管理。通过Vue.js构建响应式前端界面,结合ECharts实现数据可视化,用户可以直观追踪健康趋势。该项目不仅涵盖了Web全栈开发的核心技术,还涉及权限控制、数据验证等工程实

weixin_34174322的博客 467

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringBoot+Vue情绪宣泄平台架构设计与实现

现代Web开发中,全栈技术架构在心理健康领域展现出独特价值。SpringBoot作为Java生态的主流后端框架,通过自动配置和起步依赖显著提升开发效率;Vue.js作为渐进式前端框架,则以其响应式特性优化用户体验。这种技术组合特别适合需要处理敏感数据且注重交互性的应用场景,如情绪管理平台。系统采用JWT实现无状态认证,结合MySQL事务特性确保数据一致性,并运用NLP技术实现情绪分析。在工程实践中,通过ECharts数据可视化和RBAC权限控制,既满足了用户对情绪追踪的核心需求,又保障了隐私安全。该案例为心

weixin_32175665的博客 209

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

基于大数据分析的活动报名 笔记日记分享系统的设计与实现

设计用户表(user_id, username, password_hash)、活动表(event_id, title, capacity)、报名关系表(registration_id, user_id, event_id)、笔记表(note_id, content, privacy_setting)。采用分层架构:前端使用Vue.js/React实现响应式界面,后端基于Spring Boot或Django框架,数据库选用MySQL+Redis缓存组合,大数据分析模块集成Hadoop/Spark。

QQ_188083800的博客 30

前端学习规划

HTML5:CSS3:JavaScript:渲染机制:事件循环:安全机制:存储方案:HTTP/HTTPS:WebSocket:WebRTC:打包工具:任务管理:代码质量:自动化:部署策略:监控体系:加载优化:运行时优化:渲染优化:React:Vue:Angular:移动端:桌面端:小程序:数据流模式:异步处理:持久化:Node.js基础能力:数据库:API设计:BFF层(Backend For Frontend)聚合层:性能优化:安全控制:函数计算:边缘计算:Web与原生通信:原生功能调用:Hybrid A

zxz86的博客 922

基于Springboot的克州旅游网站的设计与实现

摘要:本项目基于SpringBoot框架开发克孜勒苏柯尔克孜自治州旅游网站,整合当地旅游资源提供一站式服务。系统采用Java语言开发,使用MySQL数据库和Redis缓存,包含用户端、企业端和管理端三大模块。核心功能包括景点推荐、线路规划、在线预订、社区互动等,特色功能涵盖民族文化展示、边境旅游服务和多语言支持。技术架构采用微服务设计和Docker容器化部署,支持高并发访问和快速扩容。项目旨在推动克州旅游业数字化转型,为游客提供智能化服务,助力当地经济发展。

QQ1039692211的博客 575

从零到一构建情感疗愈应用:暖屿 (Warm Isle) 全栈技术架构深度解析

摘要 《暖屿技术实现讲解文档》详细介绍了情感疗愈应用暖屿的全栈技术架构。项目基于FastAPI+Vue3前后端分离架构,采用Docker容器化部署,核心功能包含情绪管理、AI陪伴等。文档系统讲解了后端基础设施(配置管理、依赖注入)、业务逻辑、实时通信等设计,以及前端Vue3的状态管理、组件化实践。关键技术包括异步架构、AI集成、支付系统等,并涵盖测试、代码规范及扩展建议。目标读者为开发者、技术学习者和项目维护者,提供了现代Web应用的完整技术实现参考。

2402_83239589的博客 1635

vue2 实现echarts图表进入可视区域后再加载动画,以及 使用了resize之后,动画失效问题解决

是一个现代的浏览器 API,用于监测一个或多个目标元素与其祖先元素或视窗(viewport)之间的交叉状态(intersection)的变化。它可以有效地监听元素是否进入或离开可视区域,从而实现一些懒加载、无限滚动、图表加载等需求。

weixin_45776545的博客 2239

微信小程序使用Echarts-for-weixin实现图表动态更新数据、懒加载(干货满满!!!)

微信小程序开发 + Echarts图表动态数据统计

weixin_52017722的博客 1万+

微信小程序(一):小程序中使用EChart、控制EChart显示隐藏及数据懒加载

效果 引入ECharts 参见 https://github.com/ecomfe/echarts-for-weixin 目录 源码 pages/index/index.json { "usingComponents": { "ec-canvas": "../../ec-canvas/ec-canvas" } } pages/index/index.wxml <!--index.wxml--> <view class="container"> <b

You瞧谁不起 - 道不尽世间的沧桑,诉不完人生的悲凉 2850

vue_按需引入elment、echarts和路由懒加载,减少打包体积

按需引入

编程知识分享,主打前端 3万+

突破前端性能瓶颈:vue-echarts 代码分割与懒加载实战指南

当你的 Vue 应用集成 Apache ECharts™ 图表库后,是否遇到过首屏加载缓慢的问题?特别是在包含多个复杂图表的仪表盘场景中,echarts 核心库(约 500KB+)加上各类图表组件的完整引入,会显著增加应用的初始加载体积。通过代码分割(Code Splitting)与懒加载(Lazy Loading)技术,可将图表相关代码从主包中分离,实现按需加载,这对移动端用户体验提升尤为明显。

gitblog_00888的博客 949
上一篇: 【软件推荐】“聊崽”聊天机器人
下一篇: 【开发日记】如何让指定用户执行sudo命令时无需输入密码
二饭
博客等级 码龄7年 1806粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值