我的编程空间,编程开发者的网络收藏夹
学习永远不晚

微信小程序使用Echarts和分包的完整步骤

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

微信小程序使用Echarts和分包的完整步骤

前言

假期虽然结束了,但是它以另外一种形式展示我们身上(摸摸自己的小肚子)。在小程序上以图形化显示数据就是分给我的假期预研任务,查了一下网上大佬们的文章了解到了Ucharts,F2,Wx-charts和Echarts,只尝试了F2和Echarts,由于Echarts的最近更新最近和我对Echarts更为熟悉,所以我选择了Echarts,F2也试了下,虽然弄出来了,但是我不是太熟悉所以就放弃了。

进入正题

首先我是看到别人的文章写Echarts的,给了官网的传送门,然后就去官网顺着看了,比较简单,这里我也给个传送门吧。大体上的步骤

1、下载官网例子。

2、把官网例子中的ec-canvas文件夹复制到项目目录中。

3、在具体的页面中像使用组件一样引入ec-canvas。

4、在具体的页面的js中进行初始化。

在下载完官网例子后,找到ec-canvas文件夹,里面有echarts.js,wx-canvas.js还有ec-canvas四件套。然后把这个文件夹复制到自己项目的目录下,一开始我是放到utils下的,后来分包之后就放别的地方,这里就当放在utils下了。然后项目就大了700+KiB。

页面中

xxx.json


{
 "usingComponents": {
 "ec-canvas": "xxx/xxx/xxx/ec-canvas/ec-canvas"
 }
}

xxx.wxml


<view class="container-echarts margin-top-10">
 <ec-canvas class="mycharts" id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>

xxx.js 首先要引入echarts然后才能用下面的initChart方法,所以根据放置的ec-canvas的路径引入echarts。


import * as echarts from 'xxx/xxx/xxx/ec-canvas/echarts'; // 根据放置的ec-canvas的路径引入echarts
let chart = null // 用一个变量保存echarts的初始化
let options = { // 图形配置,用过echarts的人都知道是嘛意思~ 这里给出官网线图的基础例子
 xAxis: {
  type: 'category',
  data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
 },
 yAxis: {
  type: 'value'
 },
 series: [{
  data: [150, 230, 224, 218, 135, 147, 260],
  type: 'line'
 }]
} 
function initChart(canvas, width, height, dpr) { // 这里的canvas,width,height,dpr都可以不用管
 const chart = echarts.init(canvas, null, {
 width: width,
 height: height,
 devicePixelRatio: dpr // 像素
 });
 canvas.setChart(chart);
 chart.setOption(options);
 return chart;
}

Page({
 data: {
 ec: {
  onInit: initChart // 这里不要加括号哦!
 }
 }
});

保存运行,到这一步理论上echarts已经可以显示了,实际怎么样还要自己调试的。

用一个chart变量保存echarts的初始化,官网上把options也写在方法里,我给拿出来了。那chart有什么用呢?因为大部分的数据都是异步获取的,所以要动态渲染echarts。当拿到数据后,这个chart就用上了。


chart.setOption({
 xAxis: {
 data: newData.map(item => {
  return item[0];
 })
 },
 series: {
 data: newData.map(item => {
  return item[1];
 })
 }
})

这里关于data的数据格式,看每个人的options里面要渲染的是什么图吧。我这里用的是官网给的这个例子传送门,echarts的数据更新可以直接用setOption。

在开发者工具中的放大缩小滚动没有用,但是上传到体验版上后在手机上是好的。微信对canvas有type="2d",在ec-canvas中想要使用type="2d"的话,要改动ec-canvas.js


data: {
 isUseNewCanvas: true // 这里改成true, 默认是false
}

因为:isUseNewCanvas默认是false,是旧版的canvas。


<!-- 新的:接口对其了H5 -->
<canvas wx:if="{{isUseNewCanvas}}" type="2d" class="ec-canvas" canvas-id="{{ canvasId }}" bindinit="init" bindtouchstart="{{ ec.disableTouch ? '' : 'touchStart' }}" bindtouchmove="{{ ec.disableTouch ? '' : 'touchMove' }}" bindtouchend="{{ ec.disableTouch ? '' : 'touchEnd' }}"></canvas>
<!-- 旧的 -->
<canvas wx:else class="ec-canvas" canvas-id="{{ canvasId }}" bindinit="init" bindtouchstart="{{ ec.disableTouch ? '' : 'touchStart' }}" bindtouchmove="{{ ec.disableTouch ? '' : 'touchMove' }}" bindtouchend="{{ ec.disableTouch ? '' : 'touchEnd' }}"></canvas>

echarts.js体积大的问题,上传项目2MiB限制问题

就下载的ec-canvas里面的echarts.js有几百KiB,相对于2MiB的来说挺大的,当我上传项目的时候提示我超出限制,那能想到的就是减小echarts.js的体积和分包两个能即时见效的方法了。

echarts.js体积大的问题

在echarts的官网有按需构建的方法(传送门---在线定制),进入下面的在线定制,选择自己需要图,我就选了折线图,坐标系选了直角坐标系,组件里除了刷选,工具栏和自定义图形外别的都选了,其它选项把svg也勾上了,然后点击下载进入building页面,这里等它构建完成会自动下载一个echarts.min.js文件,大小最后少了200来KiB。然后把它重命名成echarts.js替换进ec-canvas里。

上传项目2MiB限制问题

echarts.js的体积减少了,但是上传的限制问题还在,那就是分包了。

在app.json里面,有一个subpackages


{
 "subPackages": [
 {
  "root": "xxx/xxx",
  "name": "xxx",
  "independent": false,
  "pages": [
  "pages/xxx",
  "pages/xxx",
  "pages/xxx"
  ]
 },
 {
  "root": "baoziTask/",
  "name": "baozi",
  "pages": [
  "pages/roubaozi/roubaozi"
  ]
 }
 ],
}

这个分包在官网上讲的挺简单的,但是在我使用时是这样理解的。

root是要分包的路径,我是放到根目录的。那么baoziTask下的所有文件都会被认为是一个包。那不在这个baoziTask路径下的文件都会被打包进app这个主包内。

name就是分包的别名,预下载的时候会用,这个预下载就当在某个页面的时候,想主动下载这个可能被使用的分包,以提高访问速度。比如当我进入某个页面的时候,很大可能会点击某处跳转到某个分包里面,这个时候可以预下载这个分包,而不用跳转的时候才下载这个分包。

independent是分包是否独立,但是我没用过就没有直观的感觉。说是可以单独运行,不依赖app这个主包。这个需要配置,不是代码的下载,配置preloadRule,具体的话得看官网和自己尝试了。传送门---分包预下载

pages就更好理解了啊,就是包内的页面呗。

想要跳转到这些分包内的页面的时候给跳转的url写对路径就可以了,就比如跳转到roubaozi的时候url写⬇️面这样:


url: '/baoziTask/pages/roubaozi/roubaozi'

那怎么查看分包成功呢?

在开发者工具右上角有一个详情按钮,点击查看详情侧滑框,可以看到"本地代码"这一行,后面的大小可以点击,点击后可以看到主包和各个分包的大小。看到主包没有超过2MiB的话,那就可以上传成功了!

群众:为什么你要在KB和MB中间加个 i ?小傲娇:因为要准确表达是1024

总结

到此这篇关于微信小程序使用Echarts和分包的文章就介绍到这了,更多相关微信小程序Echarts和分包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

微信小程序使用Echarts和分包的完整步骤

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【详讲】微信小程序分包流程步骤

【详讲】微信小程序分包流程步骤 本文基于微信小程序的官方文档,对分包的概念以及具体的操作流程进行讲解。 一、为什么要使用分包? 主要原因就是微信小程序规定了主包大小不能超过 2M ,但我们随着开发的更新迭代,一个小程序往往是大于 2M
2023-08-21

微信小程序斗地主完整代码及步骤

微信小程序斗地主完整代码及步骤详解。创建项目,导入依赖,设计游戏界面,实现游戏逻辑,搭建后端服务器,代码示例,部署注意事项,包含前端和后端代码,涉及网络通信技术,强调严谨的逻辑和良好的用户体验。
微信小程序斗地主完整代码及步骤
2024-04-02

使用uniapp打包上架微信小程序完整教程

这篇文章主要介绍了uniapp打包上架微信小程序完整教程,需要的朋友可以参考下
2022-12-24

uni-app微信小程序使用echarts的详细图文教程

为了兼容小程序Canvas,ECharts提供了一个小程序的组件,用这种方式可以方便地使用ECharts,下面这篇文章主要给大家介绍了关于uni-app微信小程序使用echarts的相关资料,需要的朋友可以参考下
2022-11-13

微信小程序中使用vant框架的具体步骤是什么

本篇文章为大家展示了微信小程序中使用vant框架的具体步骤是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.说到vant框架相信大家应该并不陌生了吧,做过移动端开发的小伙伴们应该都知道它吧。2
2023-06-22

使用uniapp打包微信小程序时主包和vendor.js过大解决(uniCloud的插件分包)

每个使用分包小程序必定含有一个主包,所谓的主包,即放置默认启动页面/TabBar页面,以及一些所有分包都需用到公共资源/JS脚本,下面这篇文章主要给大家介绍了关于使用uniapp打包微信小程序时主包和vendor.js过大解决的相关资料,,需要的朋友可以参考下
2023-02-21

微信小程序嵌套的H5使用小程序分享(分享微信好友或朋友圈)

需求说明 嵌套在微信小程序中的H5想要使用小程序自带分享功能,分享H5的页面给微信好友或朋友圈 实现原理 H5中可使用wx.miniProgram.postMessage向小程序的webview发送消息,会触发组件的message事件,在小
2023-08-21

微信小程序如何使用Promise对wx.request()封装详解(附完整代码)

微信小程序的wx.request是微信小程序最早生成的数据库传输模式,数据传输简单明确,下面这篇文章主要给大家介绍了关于微信小程序如何使用Promise对wx.request()封装的相关资料,需要的朋友可以参考下
2023-03-13

ECharts的三维可视化及在微信小程序中使用示例

这篇文章主要为大家介绍了ECharts的三维可视化及在微信小程序中使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-23

使用uniapp打包微信小程序时主包和vendor.js过大如何解决

这篇文章主要介绍“使用uniapp打包微信小程序时主包和vendor.js过大如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“使用uniapp打包微信小程序时主包和vendor.js过大如何解
2023-07-05

开发微信应用程序使用阿里云服务器的步骤

本文将指导您使用阿里云服务器开发微信应用程序。我们将详细解释如何使用阿里云服务器来构建微信应用程序,并提供必要的步骤和建议。阿里云服务器是阿里巴巴集团提供的基于云计算技术的基础设施服务,为用户提供了高效、灵活、安全的计算资源。您可以使用阿里云服务器来开发、运行、测试和部署微信应用程序。下面是一些具体的步骤和建议:
开发微信应用程序使用阿里云服务器的步骤
2023-11-22

编程热搜

目录