发布时间:2025-04-08 11:20 浏览次数:211
最近有几个小程序用到了图表,把我一顿折腾。所以来讲一下使用图表时所遇到的问题。
我们所用到的是 ECharts 的微信小程序版本 ;它提供了一个小程序原生的组件,然后我们只需要在相关页面引用改组件就好了。
使用前准备
先下载 ecomfe/echarts-for-weixin 中 ec-canvas 整个文件夹里面的文件
引用:然后在你的页面中 的 json文件中 引用。当然你也可以作为全局组件写在app.json 中。
{
"usingComponents": {
"ec-canvas": "../../components/ec-canvas/ec-canvas"
}
}
注意:上面的 ec-canvas 引用组件名不能随意改变,因为在封装的组件 ec-canvas.js 中,需要找到 该节点 。
使用
我们要手动给 我们的图表设置宽高,不然页面只会显示空白。也就是给.container 设置宽高。
id="mychart-dom-bar"
canvas-id="mychart-bar"
ec="{{ ec }}">
其中 ec 是一个我们在 我们页面 中定义的对象,它使得图表能够在页面加载后被初始化并设置。初始化图表的方法如下:
function initChart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // 像素
});
canvas.setChart(chart);
// 图表数据初始化
var option = {
...
};
chart.setOption(option);
return chart;
}
这对于所有 ECharts 图表都是通用的,用户只需要修改上面 option 的内容,即可改变图表。 option 的使用方法参见 ECharts 配置项文档 。对于不熟悉 ECharts 的用户,可以参见 [5 分钟上手 ECharts]( echarts.baidu.com/tutorial.ht… 分钟上手 ECharts) 教程。
因为我们一般都是需要延迟加载的, 也就是获取数据后才加载图表的,所以我们不能直接使用,
我们需要在获取数据重新设置 options 之后才能使用。
代码入下:
**.wxml 文件 **
wx:if="{{hasGetOption}}"
class="map-chart"
id="map-chart"
canvas-id="map-chart"
ec="{{ ec }}">
.js 文件
// 页面中需要引入 ec-canvas 文件夹中的 echcrts.js
import * as echarts from '../../components/ec-canvas/echarts';
page({
data: {
hasGetOption: false,
ec: {
// 当我们设置lazyLoad 为true 的时候,我们需要手动初始化图表。
lazyLoad: true,
}
},
ready() {
// 在ready 的时候获取组件的实例。否则可能获取不到。
this.echartInstance = this.selectComponent('.map-chart');
},
setOption () {
let option = {
title: {
// text: '全国疫情新增趋势'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: [ '确诊']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
data: []
},
yAxis: {
type: 'value'
},
series: [{
name: '确诊',
type: 'line',
stack: '总量',
data: [120, 132, 101, 134, 90, 230, 210],
smooth: true
}
]
}
},
initChart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(chart);
let option = this.getOption();
chart.setOption(option);
return chart;
},
getPageData() {
wx.request({
...
success: (res) => {
// 获取到数据后再手动初始化
this.echartInstance.init(this.initChart);
this.setData({
hasGetOption: true,
...
})
}
})
}
})
在之前的版本中会出现这么一个问题:
因为最新基础库版本中 支持 Canvas 2d,这个可以提升渲染性能,解决非同层渲染问题。
解决这个问题只需要在 ec-cnavas.js 的data 中将 isUseNewCanvas 设为true即可。
在 Taro 中使用
因为 Taro 中可以使用 微信中的原生组件,以及微信中的自定义组件。 所以使用方法同微信小程序类似。
页面引用
config = {
navigationBarTitleText: '首页',
usingComponents: {
"ec-canvas": "../../components/ec-canvas/ec-canvas"
}
}
使用:
state = {
ec: {
lazyLoad: true,
}
};
// 获取组件实例。
setCanvasRef = node => this.canvasRef = node;
render () {
return (
id="price-chart"
canvas-id="price-chart"
ref={this.setCanvasRef}
ec={ec} />
)
}
然后在数据请求完后 再图表初始化。 init 是再组件中定义的
this.canvasRef.init (this.initChart);
小程序页面效果--如何实现滚动列表左右半透明为了更好的体验左右滑动,而且更加美观,我们常常会做如下效果:通过伪类+渐变实现左右半透明的滚动列表,微信小程序同样也适用,渐变的兼容性不太好,所以我们需要针对不同的浏览器写不同的代码。
内置对象Request & Response可以在 Context 的实例上获取到当前请求的 Request( ctx.request ) 和 Response( ctx.response ) 实例。ctx.response.body= 和 ctx.body= 是等价的。
半个月前给客户做了一个老小程序的 SEO 的初步优化计划,合计费时约 2 天左右,个中细节比较多, 这里举例两个比较重要,但是又不算难改的优化点。前端优化:跳转的 URL 可以直接打开简单可以测试为,分享出去的卡片,均可以直接打开(请务必测试是否登录,神坑)。这里牵扯到两个问题。页面渲染逻辑query 所携带的参数组件内 URL 问题第一个问题会牵扯到后端接口下发的内容,比如这样的场景:后端下发了一个列表数据,种种原因导致列表中就包含了点击列表后详情所要展示的所有内容,然后分享出去的是详情。
最近有几个小程序用到了图表,把我一顿折腾。所以来讲一下使用图表时所遇到的问题。我们所用到的是 ECharts 的微信小程序版本 ;它提供了一个小程序原生的组件,然后我们只需要在相关页面引用改组件就好了。使用前准备先下载 ecomfe/echarts-for-weixin 中 ec-canvas 整个文件夹里面的文件引用:然后在你的页面中 的 json文件中 引用。当然你也可以作为全局组件写在app.json 中。
增强微信小程序API,远离回调地狱增强微信小程序API为什么要增强微信小程序API微信小程序因其双线程框架,导致大部分API都是异步API,比如,最常用的wx.request。而小程序的API的设计,都是采用回调形式。这样,业务过于复杂的时候,就会陷入回调地狱中,而且代码的可读性也变差。材料准备提到异步编程,Promise就该闪亮登场了。Promise微信小程序有众多的API,总不能用到哪个,封装哪个,这样太繁琐了,还是得统一封装一下,复制一套微信小程序API,代理异步方法,封装成Promise。
小程序开发的未来方向在全球科技创新的浪潮中,小程序以其独特的优势和潜力,正逐渐成为连接用户与服务的桥梁。深圳,这座科技创新的前沿城市,更是小程序开发的热土。小程序被看作是未来科技发展的重要方向,其应用场景正在不断扩展,从电商、教育到医疗等行业,都看到了小程序带来的便捷和高效。专家预测,随着AI技术的融入,小程序将更加智能化,提供更加个性化的服务。深圳的小程序开发行业有着得天独厚的优势。这里聚集了大量的高科技企业和创新人才,为小程序的开发提供了强大的支持。同时,政府的扶持政策也为这个行业注入了活力。
深圳,这座充满创新与活力的城市,是小程序开发的热土。想要打造一个高效、用户友好的小程序?以下步骤将指引你从零开始,成功构建你的小程序。市场研究和用户洞察了解你的目标市场和用户需求是第一步。通过问卷调查、用户访谈等方式,收集关于用户期望和市场需求的信息。明确小程序目标与功能确定你的小程序要解决的问题,明确业务目标和提供的服务类型。清晰的产品定位是成功的关键。选型技术栈和开发平台选择适合的开发工具和平台,如微信小程序、支X宝小程序等。
小程序作为一种新兴的应用程序,具有用户体验好、流量入口丰富、营销渠道新颖等优势,能够为企业带来更多的商业机会和竞争优势。以下是一些关键原因:流量入口成为竞争焦点微信拥有超过10亿的日活跃用户,相较于日活用户仅1亿的百度,其流量优势显而易见。小程序通过微信这一庞大平台,为企业提供了巨大的流量入口。小程序推动互联网变革公主号让每个人都有机会成为自媒体,商家可以根据产品定位和目标人群进行精准匹配,激活和变现流量。小程序进一步推动了互联网的变革,为企业提供了更多的营销机会。