当前位置: 首页 > news >正文

入门|利用 Highcharts 的 ES6/ESM 模块安装方案

Highcharts 从 v6.1 起支持 ES6(即 ECMAScript 模块,简称 ESM)方式加载;从 v11.3 起其核心文件也以 ES 模块形式发布,这意味着你可以 按需导入 模块并通过 “tree shaking”(未使用的代码被打包工具剔除)来减小最终包体积。
对于需要优化性能、减小加载延迟或构建现代前端项目(如 React、Vue、Angular)而言,这是一条值得掌握的安装路径。

1 . 直接在浏览器以 ESM 方式引入

对于调试或开发环境,你可以直接使用浏览器支持的 <script type="module"> 方式,从 CDN 加载 Highcharts 的 ES 模块版本。例如:

<script type="module">import Chart from 'https://code.highcharts.com/es-modules/Core/Chart/Chart.js';import LineSeries from 'https://code.highcharts.com/es-modules/Series/Line/LineSeries.js';new Chart('container', {series: [{ data: [1,2,3] }]});
</script>

这种方式的优点是快速启动,无需构建工具即可尝试。但缺点也明显:因多个小模块分别加载,会造成 HTTP 请求数量增多,从而可能导致加载延迟上升。官方指出 不推荐用于生产环境

2 . 在 Node.js 项目中基于 ESM 创建自定义打包

当你需要在真实项目中使用 Highcharts,推荐在 Node.js 环境里配合打包工具(如 Webpack)来创建一个自定义的高效 bundle。流程如下:

步骤

  1. 新建项目,安装 Highcharts(通过 npm)和 Webpack。

  2. 在你的 JavaScript(或 TypeScript)文件中,只导入你实际使用的模块,例如:

    // mychart.js
    import Chart from 'highcharts/es-modules/Core/Chart/Chart.js';
    import ColumnSeries from 'highcharts/es-modules/Series/Column/ColumnSeries.js';const myChart = new Chart('container', {series: [{type: 'column',data: [1,2,3]}]
    });
    
  3. 在 webpack.config.js 中配置入口与输出,例如:

    module.exports = {entry: './mychart.js',mode: 'production',output: {filename: 'mybundle.js',// 默认输出到 dist 子目录},
    };
    
  4. 执行打包命令:

    node webpack -c webpack.config.js
    
  5. 在网页中通过 ESM 方式加载打包后的文件:

    <div id="container"></div>
    <script type="module" src="./dist/mybundle.js"></script>

这样,最终加载文件中只包含你实际导入并使用的模块,从而减小体积、提升性能。官方数据表明,相比全量 highcharts.js (约 100 KB gzipped),只使用一个系列模块可节省约 17%–22%。

3 . 可选功能通过 Composition 机制加载

如果你只用了核心图表功能,但后期想启用例如 “数据标签(DataLabel)” 等可选模块,你可以通过 “compose” 机制来导入并激活额外功能。例如:

import Chart from 'highcharts/es-modules/Core/Chart/Chart.js';
import PieSeries from 'highcharts/es-modules/Series/Pie/PieSeries.js';
import PieDataLabel from 'highcharts/es-modules/Series/Pie/PieDataLabel.js';PieDataLabel.compose(PieSeries);

这样,你就可以保持 “仅加载必要模块” 的原则,而不是引入冗余功能。

4 . 优化说明:为何 ESM 更优?

  • Tree shaking 支持:通过导入特定模块,打包工具能剔除未使用的代码,最终包体积更小。

  • 异步/懒加载支持:在现代浏览器中,可以按需 import 或动态 import 模块,使图表库的加载更加灵活。官方示例:

const loadHighchartsAndCreateChart = async () => {const { default: Highcharts } = await import('https://code.highcharts.com/esm/highcharts.js');await import('https://code.highcharts.com/esm/modules/exporting.js');await import('https://code.highcharts.com/esm/modules/accessibility.js');Highcharts.chart('container', { /* …options… */ });
};
  • 模块化更清晰:代码结构更符合现代 JavaScript/TypeScript 项目组织习惯。也方便与诸如 React/Vue/Angular 框架集成。

  • 未来兼容性更强:随着 Highcharts 在 v12 中的新 UMD/ESM 支持改进,建议优先考虑 ESM 路径。

5 . 典型问题及调试建议

  • 如果你在 TypeScript 或特殊打包环境下遇到 “找不到模块声明” 的错误,比如报 TS7016: Could not find a declaration file for module 'highcharts/es-modules/Core/Chart/Chart.js',社区曾在 GitHub issue 中指出这是 ESM 路径下声明文件未被正确识别的问题。

    • 解决办法包括:确认你的 tsconfig.json 中将 moduleResolution 设为 “node”/“bundler”,并开启 allowSyntheticDefaultImports: true

  • 打包后的模块如果体积偏大或加载缓慢,建议检查是否引入了不必要的模块,或者将一些模块按需异步 import。

  • 在浏览器直接用 ESM 方式加载 多个 small 文件(如核心 + 各系列模块)时,HTTP 请求过多可能导致延迟增高,故不推荐用于生产。官方亦已说明。

6 . ESM 安装方式的价值:

  • 加载性能优化:对首屏加载速度,使用 ESM 和 tree shaking 能有效减小图表库体积。

  • 现代前端项目集成:针对客户使用 Vue3/React/微前端架构/TypeScript 的场景,推荐 ESM 方式符合其技术栈习惯。

  • 随着 Highcharts 版本变化(如 v12 对 UMD/ESM 支持的改进)若早期采用 ESM,将更具长期可持续性。

  • 使用 ESM 安装 Highcharts 是现代前端开发中推荐的方式;

http://www.dtcms.com/a/597646.html

相关文章:

  • 【NGINX的学习】
  • 重庆南坪网站建设公司学校网站总务建设
  • C++ yjx
  • 网站开发原型 图站长工具星空传媒
  • 【C++进阶】C++中的继承
  • 【大模型量化】Qwen3-VL + Lora监督微调 + 4bit量化 | VLM模型
  • 哪个网站最好微信开发者文档小程序
  • 免费黄页网站互联网众筹网站怎样建设
  • Math for Grade 1 of junior high school
  • 卓手机建网站有没有专门找装修公司的网站
  • Goer-Docker系列-1-Dockerfile的构建速度优化
  • 【20251029】如何在Ubuntu虚拟机部署本地sql,redis
  • SQL注入之SQLMAP绕过WAF(安全狗)
  • 西安注册公司网站黄页是什么东西
  • BFF 相关学习
  • 【SAA】SpringAI Alibaba学习笔记(三):ChatModel对话记忆存储和持久化
  • Excalidraw绘图软件
  • 苹果ios系统共享的ipa文件应用app签名怎么用?
  • 潍坊网站开发培训电影网站空间配置
  • 鸿蒙ef_crypto-加密组件-SM2Sync
  • windows 下的paddle ocr 部署
  • 融合之道:电科金仓数据库的“五化一体“革命
  • 微楼书网站建设全球推广
  • AR眼镜基于上下文智能识别:电力运维高效规范操作应用方案|阿法龙XR云平台
  • Linux 文件基本属性
  • 广州做外贸网站dw网页制作成品12页
  • 甘肃省两学一做专题网站哔哩哔哩网页入口
  • PostgreSQL 监控告警实战:从 “高并发卡顿才发现” 到 “提前 1 小时预警” 的守护指南
  • 利用影视网站做cpawordpress在线安装插件在哪里
  • Java 对象分配过程深度解析