一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

jquery echarts简单例子

时间:2015-11-18 编辑:简简单单 来源:一聚教程网

 最近做软件工程项目的时候,由于设计图中有柱状图和饼图的设计,第一反应用原生js写肯定很麻烦,于是我请求能否不做,但我们的PM铁了心要做,最终逼迫我找到了这个强大的图表库,哈哈,在这里感谢一下PM李佳玮。(当我发现它还兼容IE6-8时,真的炒鸡感动!)

ECharts提供商业产品常用图表,底层基于ZRender(一个全新的轻量级canvas类库),创建了坐标系,图例,提示,工具箱等基础组件,并在此上构建出折线图、柱状图、散点图、K线图、饼图、雷达图、地图、和弦图、力导向布局图、仪表盘以及漏斗图,同时支持任意维度的堆积和多图表混合展现。

废话不多说,马上进入ECharts的使用吧。

首先我们进入ECharts的官网http://echarts.baidu.com/index.html(向百度前端团队致敬),进去以后下载ECharts。

  下载好的目录:

  初学的话我们只要把目光放在build文件上,这里面包含了我们制作图表所需的相关资源文件。

  引入ECharts包有三种方式,官方文档中有三种方式的具体介绍http://echarts.baidu.com/doc/doc.html#引入ECharts。

  这里我采用官方推荐的模块化单文件引入,首先需要熟悉模块化开发。ECharts是一个符合AMD规范的模块加载器,AMD规范相信大家都不陌生,它是javascript客户端(就是浏览器上)的开发规范,而Node.js有CommonJs开发规范。如果不是很了解AMD规范可以参考一下文章:

AMD---浏览器中的开发规

前面提到,为实现与Node.js相同方式的模块写法,大牛们做了很多努力。


但浏览器环境不同于服务器端,它的模块有一个HTTP请求过程(而Node.js的模块文件就在本地),这个请求过程多数使用script tag,script 默认的异步性导致很难实现与Node.js一模一样的模块格式。

 
Modules/Wrappings 使得实现变为现实。虽然和Node.js的模块写法不完全一致,但也有很多相似之处,使得熟悉Node.js的程序员有一些亲切感。

 
但Node.js终究是服务器端的JavaScript,没有必要把这些条条框框放到浏览器JavaScript环境中。


这时AMD 诞生了,它的全称为异步模块定义。从名称上看便知它是适合script tag的。也可以说AMD是专门为浏览器中JavaScript环境设计的规范。它吸取了CommonJS的一些优点,但又不照搬它的格式。开始AMD作为CommonJS的transport format 存在,因无法与CommonJS开发者达成一致而独立出来。它有自己的wiki 和讨论组 。


AMD设计出一个简洁的写模块API:

define(id?, dependencies?, factory);

 
其中:

id: 模块标识,可以省略。
dependencies: 所依赖的模块,可以省略。
factory: 模块的实现,或者一个JavaScript对象。
id遵循CommonJS Module Identifiers 。dependencies元素的顺序和factory参数一一对应。
 
以下是使用AMD模式开发的简单三层结构(基础库/UI层/应用层):
 
base.js

define(function() {
    return {
        mix: function(source, target) {
        }
    };
});
 

ui.js


define(['base'], function(base) {
    return {
        show: function() {
            // todo with module base
        }
    }
});
 

page.js


define(['data', 'ui'], function(data, ui) {
    // init here
});
 

data.js


define({
    users: [],
    members: []
});
 

以上同时演示了define的三种用法
定义无依赖的模块(base.js)
定义有依赖的模块(ui.js,page.js)
定义数据对象模块(data.js)
 
细心的会发现,还有一种没有出现,即具名模块
 
4,具名模块

define('index', ['data','base'], function(data, base) {
    // todo
});
 

具名模块多数时候是不推荐的,一般由打包工具合并多个模块到一个js文件中时使用。
 
前面提到dependencies元素的顺序和factory一一对应,其实不太严谨。AMD开始为摆脱CommonJS的束缚,开创性的提出了自己的模块风格。但后来又做了妥协,兼容了 CommonJS Modules/Wrappings 。即又可以这样写
 
5,包装模块


define(function(require, exports, module) {
    var base = require('base');
    exports.show = function() {
        // todo with module base
    }
});
 

不考虑多了一层函数外,格式和Node.js是一样的:使用require获取依赖模块,使用exports导出API。
 
除了define外,AMD还保留一个关键字require。require 作为规范保留的全局标识符,可以实现为 module loader,也可以不实现。 

  好,接下来我会展示具体的引入写法:




   


   


   
   

 js中require()表示要创建一个图标的请求,首先要列出所需图表库的资源,这里是要载入bar.js文件,因此需要引入模块"echarts/chart/bar"。在ECharts中还有很多种图表,比如pie(饼图),map(地图)等等。

  现在我们已经加载了我们需要的图类,接下来要做的事很简单---插入对应图类所需组件。




   


   


   
   


可以看到require()的第二个参数是个function(){},这里应该是个回调函数,等待资源加载好后执行,这个函数中提供了创建图表所需要的信息:

  首先要获取到需要被创建的对象,这里用DOM方法取到。

  其次把数据集用类似json的形式存放到option中,最后传入到要被创建的对象中。

 

  可以看到Option对象中的子对象,都携带了不同的信息,比如标题title,提示框(tooltip)等等,更多的组件信息可以在官方文档中查看

http://echarts.baidu.com/doc/doc.html#选项 

最后打开浏览器就可以欣赏到一个简单的利用ECharts的图表了:

  

当我打开的时候还看到了很多动态的好玩的效果,都值得我们去研究。

不过框架毕竟是框架,希望大家在学习框架前一定要学好原生js~这样用起这些框架起来才会得心应手!

热门栏目