echarts初探:了解模块化

什么是echarts?这是官网:http://echarts.baidu.com/

简单的说就是百度提供的一些画图表的库,用它你可以简便的画出一些你想要的图表效果。

虽然蛮好用的,但对于不知道模块化的新手(比如说我~)感觉不是很好入门,我这里大概梳理一下我的认知吧,希望能帮助到内些想尝试echarts的人。

我们就以echarts首页的教程为例(其实人家已经写的很好了):http://echarts.baidu.com/doc/start.html

我直接粘一段里面的代码:

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="height:400px"></div>
    <!-- ECharts单文件引入 -->
    <script src="http://echarts.baidu.com/build/dist/echarts.js"></script>
    <script type="text/javascript">
        // 路径配置(第一段)
        require.config({
            paths: {
                echarts: ‘http://echarts.baidu.com/build/dist‘
            }
        });

        // 使用(第二段)
        require(
            [
                ‘echarts‘,
                ‘echarts/chart/bar‘ // 使用柱状图就加载bar模块,按需加载
            ],
            function (ec) {
                // 基于准备好的dom,初始化echarts图表
                var myChart = ec.init(document.getElementById(‘main‘)); 

                var option = {
                    tooltip: {
                        show: true
                    },
                    legend: {
                        data:[‘销量‘]
                    },
                    xAxis : [
                        {
                            type : ‘category‘,
                            data : ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
                        }
                    ],
                    yAxis : [
                        {
                            type : ‘value‘
                        }
                    ],
                    series : [
                        {
                            "name":"销量",
                            "type":"bar",
                            "data":[5, 20, 40, 10, 10, 20]
                        }
                    ]
                };

                // 为echarts对象加载数据
                myChart.setOption(option);
            }
        );
    </script>
</body>

大家可以看到路径配置和使用里面都有”require“,这就是模块化的东西。echarts为啥要用模块化?因为你可能在一个js里用到多个js。比如你想在一个页面上显示多个图表,柱图,饼图,折线图等等,

你需要把这些js都加载进来(每种图的js都是独立的)。而加载多个js很费时间,模块化的好处是,当模块部署完毕以后,可以用这个工具将多个模块合并在一个文件中,减少HTTP请求数。而且同一管理

js,更有调理性。

其实上面代码中的两个”require“是干啥的已经注释的很清楚了。其实就是先总体上配一下路径,然后再根据配的路径加载需要的js进行使用。

我们先来看看第一个require:

        require.config({
            paths: {
                echarts: ‘http://echarts.baidu.com/build/dist‘
            }
        });

首先看这句路径的设置,你可以理解为把那一长串路径用一个变量”echarts“代表了。设置路径有利于简化之后的加载,如果你不设置路径可能是这样的:

// 加载一堆水果
require([‘common/fruits/apple‘, ‘common/fruits/orange‘, ‘common/fruits/grape‘, ‘common/fruits/pears‘], function(Apple, Orange, Grape, Pears){
  // do sth
});

你设置路径之后就是这样的:

requirejs.config({
  paths: {
    fruits: ‘common/fruits‘
  }
});

// 加载一堆水果
require([‘fruits/apple‘, ‘fruits/orange‘, ‘fruits/grape‘, ‘fruits/pears‘], function(Apple, Orange, Grape, Pears){
  // do sth
});

你还可以设置一个baseUrl来限定这些路径的先前路径(比如你这些js都放在一个叫”js“的文件夹下面)

requirejs.config({
  baseUrl: ‘js‘,
  paths: {
    fruits: ‘common/fruits‘
  }
});

明白了路径的设置以后我们再来看第二段,我简写一下:

        require(
            [
                ‘echarts‘,
                ‘echarts/chart/bar‘ // 使用柱状图就加载bar模块,按需加载
            ],
            function (ec){
                        //do sth
            }) ;

这段代码就是加载js,然后在回调函数中使用它们。由于我们刚才已经设置了路径,所以这里加载的两个js的路径其实是:

http://echarts.baidu.com/build/dist/echarts.js(我试了改成‘echarts/echarts‘也一样,至于为什么加载两遍我觉得是第一遍需要require相关的支持,第二遍就是回调函数里要用到)
http://echarts.baidu.com/build/dist/chart/bar.js

这里的js后缀是会帮你自动补上的,你自己加了反而会出错,它会以为你不想使用设置的路径,之后的回调函数的参数就是你加载的js模块。

回调函数中 var myChart = ec.init(document.getElementById(‘main‘)); 这句就是对echarts对象的实例化。
option你可以理解为为加载的图表设置参数,最后用 myChart.setOption(option); 将实例化的对象和设置的参数绑定。

其实echarts一些简单的使用就是一下这么个流程:

1.echarts单文件引入

2.用require.config配置路径

3.用require加载你要用的js(按需加载)

在回调函数中:

  4.实例化echarts对象

  5.依照自己的数据给option设置参数

  6.将echarts对象和option绑定,加载数据

大功告成。但其实模块不是光有require的,require只是使用,还需要define来定义模块才行,你可以看一下echarts的那些图表库源码,都是用define包裹住的。

想要了解更多模块化可以看 requireJS官网:http://www.requirejs.cn/

还有就是要想下载echarts用的记得搭服务器,本地的请求是不安全的。

时间: 2024-08-05 23:02:22

echarts初探:了解模块化的相关文章

从273二手车的M站点初探js模块化编程

前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数据. 273这个M站点是产品推荐我看的.第一眼看这个产品时我就再想他们这个三次加载和翻页按钮的方式,那么小分页的pageIndex是怎么计算的.所以就顺便看了下源码. 提到看源码时用到了Chrome浏览器的格式化工具(还是朋友推荐我的,不过这个格式化按钮的确不明显,不会的话自行百度). 三次加载和分

百度ECharts初探

ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表. ECharts 提供了常规的折线图,柱状图,散点图,饼图,K线图,用于统计的盒形图,用于地理数据可视化的地图,热力图,线图,用于关系数据可视化的关系图,treemap,多维数据可视化的平行坐标,还

echarts初探

最近经常看到echarts,觉得很有意思,并且这个库是百度开发的,目前来说使用的也很广泛,包括百度.阿里.腾讯.网易.小米.新浪.华为.联想.美团等一大批一线互联网公司在使用,且github上的star数也有2万多了,还是挺不错的. echarts是一个纯JavaScript图标库,可以流畅的运行在PC和移动端,兼容性也不错,底层依赖的时canvas类库ZRender,它可以提供生动.直观.可定制的数据可视化图表.具体来说,可以提供常规的折线图.散点图.柱状图.饼图.K线图,地理数据可视化的地图

前端知识 | 浅谈在React中使用echarts

方法一: echarts-for-react 是一个非常简单的针对于 React 的 Echarts 封装插件. 和使用所有其他插件一样,首先,我们需要 install 它: 第一步: npminstall --save echarts(依赖) npminstall --save echarts-for-react 第二步: 在我们的项目中导入: importReactEcharts from 'echarts-for-react' 第三步: 在 render 函数中使用: option={th

echarts与TmodJS的冲突 -- 模块化加载器之间的冲突

前些日子写了一篇关于腾讯模板引擎TmodJS的文章<模板引擎artTemplate及模板预编译器TmodJS的使用入门>,算是对其原理与使用进行了初步的接触与研究.近期在一个项目中对TmodJS进行了尝试,未曾想无意中居然发现了TmodJS与百度图表神器Echarts之间存在一个看似不能共存的冲突. 问题是这样的:项目的某个页面中同时显式地引入了Echarts的主文件“echarts.js”以及TmodJS的依赖文件“require.js”.当执行到TmodJS所需的require()方法时,

echarts模块化加载

第一代码部分:require.config({ paths: {echarts: '../js/dist'}}); require([ 'echarts', 'echarts/chart/line', 'echarts/chart/bar' ], function (ec) { mychart = ec.init(document.getElementById("LineChart"));                                                v

【webpack学习笔记(一)】流行的前端模块化工具webpack初探

从开发文件到生产文件   有一天我突然意识到一个问题,在使用react框架搭建应用时,我使用到了sass/less,JSX模版以及ES6的语法在编辑器下进行开发,使用这些写法是可以提高开发的效率.可是浏览器它本身是并不能够"理解"这些语法的呀.就像下面这张图: 在开发代码文件 --> 生产代码文件的转换过程中,我们到底需要做些什么呢?没错,这一切都和webpack(或gulp)有关: 转一张webpack官网的图,webpack能把less/sass文件,json文件,乃至css

初探Java 9 的的模块化

Java 9中最重要的功能,毫无疑问就是模块化(Module),它将自己长期依赖JRE的结构,转变成以Module为基础的组件,当然这在使用Java 9 开发也和以前有着很大的不同. Java8或更加早期的系统的问题 Jar文件,像rt.jar等jar文件太大的以至于不能使用在小设备和应用中. 因为JDK是太大的,我们的应用或设备不能支持更好的平台. 由于修饰符是public的缘故,每个人都可以通过此来进行访问,所以在当前Java系统的封闭性不是很强. 由于JDK,Jre过于庞大,以至于很难进行

javascript模块化开发初探

//immediately-invoked fuction expression iife ;(function(arg){ return something; })(arg); //第二种写法 !function(arg){ }(arg); //第三种写法 (function(arg){ }(arg)); //eg 可访问ModuleProperty moduleMethod var Module = (function(){ var my = {}, privateVariable = 1;