这是一个专门为前端快速绘制可交互的复杂图形而设计的框架!
咱们这里演示基于webpack的搭建方式,更多方式请查阅接口文档进行学习。html
首先,你须要安装clunch.js:前端
npm install --save clunch
安装好了之后,直接在webpack.config.js配置文件中添加loader配置:node
module.exports = { ...... module: { rules:[ { test: /\.clunch$/, exclude: /node_modules/, loader: ['clunch/loader.js'] }, ...... ] };
通过上面的配置之后,环境就搭建好了。webpack
假如如今有一个这样的需求:一个进度条,范围是0~100,咱们每隔1.5s随机生成一个数(值的范围是0~100),进度实时显示。git
你须要新建一个.clunch文件,好比demo.clunch,而后在里面添加下列代码:github
<!-- 显示当前的值 --> <text c-bind:x='value * 5' align='center' y='0' c-bind:content='"当前随机生成的值:" + value' baseline='top'/> <!-- 进度条值,由于总长度是500,值的范围是0~100,实际宽就应该乘以5 --> <rect c-bind:width='value * 5' height='20' x='0' y='20' type='fill' fill-color='red'/> <!-- 进度条轮廓 --> <rect width='500' height='20' x='0' y='20' type='stroke'/>
可能叫挂载点更合适,咱们须要在页面上准备好挂载的地方,好比有一个div,给他设置了大小(这个div的大小直接决定了最终绘图画布的大小):web
<div id='canvas-id' style='width:500px;height:40px;'></div>
好比在和上述.clunch文件同级目录的.js文件里面:npm
import Clunch from 'clunch'; import demo from './demo.clunch'; new Clunch({ el:document.getElementById('canvas-id'), render:demo, data(){ return { value:0 }; }, mounted(){ // 每隔1500毫秒改变一下数据 setInterval(()=>{ this.value = (Math.random() * 100).toFixed(0); },1500); } });
到这里,简单的例子就写完了,下面是运行效果(由于是动态的,所以只是截图了几个瞬间):canvas
在上面的例子咱们发现,若是随机数太小或过大的时候,文字有部分显示不出来,由于咱们设置的文字水平对齐方式是固定居中的。segmentfault
幸运的是,c-bind指令能够解析一个合法的js表达式,所以,只须要对.clunch进行简单的修改便可(这次修改只涉及text标签,别的不列出了):
<text c-bind:align='value>83?"right":(value<16?"left":"center")'/>
而后咱们看看如今的效果:
怎么样,是否是好多了,你能够用一下试试。
通过上面的学习,咱们主要让你感觉一下clunch是如何设计绘图方式的,也就是数据驱动绘图的方式,使用者专一业务代码的开发便可!
固然,咱们还支持事件交互、过渡动画,拖拽等,最终你会发现,你能够像用div绘制普通页面同样绘制图表或开发一个拖拽项目。