PS:以前的那篇博客Highcharts——讓你的網頁上圖表畫的飛起 ,評論中,花兒笑彎了腰 和 StanZhai 兩位仁兄讓我試試 ECharts ,去主頁看到《Why ECharts ?》簡單瞭解了一下以後,ECharts很快吸引了我。裏面引自馬雲的那句話「互聯網尚未搞清楚的時候,移動互聯網來了,移動互聯沒有搞清楚的時候,大數據來了」我是第一次聽到,實在震撼了我啊(孤陋寡聞...)。 javascript
原本沒打算寫什麼的。但是做爲一個後端開發者,看了半天文檔也迷迷糊糊,查了一堆資料也沒搞懂Echarts那3個導入方法到底是什麼!我真是怒了!就有了下文。html
(我相信本文對不少想要作圖表的非前端開發者是有用的。不怪百度,就怪本身沒有js項目經驗。)前端
這個開源的圖標庫來自百度EFE數據可視化團隊。Highcharts 與之比起來簡直不能看啊,人家作一個圖表都開始往大數據方面思考了,你還在作功能,這產品差距就不是一個數量級的。 這裏就很少廢話:java
Echarts 首頁:http://echarts.baidu.com/index.htmlgit
特性:http://echarts.baidu.com/doc/feature.htmlgithub
不貼地址了,想要了解的看一下特性就行了,想要入門的繼續往下看。編程
ECharts 底層依賴於 Html5 的輕量級的Canvas類庫ZRender ,這也是它的效果這麼絢麗的緣由。它與 js charts相似,不依賴其餘 js 類庫,相比之下 Highcharts還要依賴JQuery等類庫。不過,ECharts也不是什麼缺點都沒有的,在線演示平臺、文檔,後端
初學者可能會被ECharts那個帶你入門的那2個示例弄暈,這裏來一個個解釋:數組
一、AMD規範的加載器——esl.js,這是什麼?瀏覽器
答:關於AMD規範能夠參考阮一峯的這篇文章Javascript模塊化編程(二):AMD規範 簡單來講,AMD規範就是異步方式加載模塊的一種方式,避免由於模塊加載過慢而致使瀏覽器「假死」。
二、咱們先來看一下echart的大概的包:
看得出,這種分類很是有意義。
三、echarts更規範的一點,那就是模塊化加載,須要哪一個部分就是用哪一個部分。
關於Echarts的那個入門圖表,我想不少新手跟我同樣的迷惑,require和require.config這個兩個公共方法到底什麼來的?
答:AMD規範的加載器——esl.js的公共方法。(若有錯誤,請指正。)
四、require.config的做用是什麼?
答:爲模塊加載器配置echarts的路徑,從當前頁面連接到echarts.js,定義所需的圖表路徑。一切盡在echarts-2.0.4文件夾下的src文件夾中。
五、解釋一下require方法?
答:require方法有2個參數。
第一個參數爲一個數組,數組元素是須要加載的echarts模塊,須要哪一個就加載哪一個。(經本人測試,這個數組傳入一個空數組都是能夠的 !- -)莫非,傳入不正確,會加載所有文件到內存,傳入正確就加載部分模塊到內存?求大神解答!
第二個參數爲一個帶一個參數的方法:function (ec){}, 這個ec對象就是echarts對象了。
OK,基本解釋完了。可能初學者看了Eharts入門實例仍是不太理解那Echarts3種導入方式的用法。(入門示例只有2種——標籤式單文件引入和模塊化單文件引入)
由於入門實例裏,js文件指向的是百度服務器上的資源,而咱們通常開發,js資源都是放在本地的。
六、來看一下,本地建立3種Echarts導入的例子,下面是那3個示例文件的源碼(官網Demo粗略修改而成):
(1)、標籤式單文件引入.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="js/echarts.js"></script> <script type="text/javascript"> // 基於準備好的dom,初始化echarts圖表 var myChart = echarts.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>
須要注意的是,能夠直接引入的單文件只有:
而除了這些帶「plain」字眼的庫,其餘庫都是含echarts這個變量的。導入其餘庫,會出現問題:echarts未定義。
(2)、模塊化包引入.html,這個就須要用到2個src文件。
<!DOCTYPE html> <head> <meta charset="utf-8"> <title>ECharts</title> <!--從當前頁面,引入模塊加載器esl.js--> <script src="js/esl.js"></script> </head> <body> <!-- 爲ECharts準備一個具有大小(寬高)的Dom --> <div id="main" style="height:400px"></div> <script type="text/javascript"> // 爲模塊加載器配置echarts的路徑,從當前頁面連接到echarts.js,定義所需的圖表路徑 require.config({ packages: [ { name: 'echarts', location: 'js/src', main: 'echarts' }, { name: 'zrender', location: 'js/zrender/src', main: 'zrender' } ] }); // 使用 require( [ ], 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>
(3)、模塊化單文件引入.html
<!DOCTYPE html> <head> <meta charset="utf-8"> <title>ECharts</title> <!--從當前頁面,引入模塊加載器esl.js--> <script src="js/esl.js"></script> </head> <body> <!-- 爲ECharts準備一個具有大小(寬高)的Dom --> <div id="main" style="height:400px"></div> <script type="text/javascript"> // 爲模塊加載器配置echarts的路徑,從當前頁面連接到echarts.js,定義所需的圖表路徑 require.config({ paths:{ 'echarts' : './js/echarts', 'echarts/chart/bar' : './js/echarts' } }); // 使用 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>
二、若是上面的還有不明白的,參考一下個人本地目錄:
js中有以下的文件:
其中,src是echarts-2.0.4文件夾下的src文件夾,zrender裏面也有一個src文件夾,是zrender-2.0.4文件夾下面的src文件夾。
最後吐槽一句:Echarts的這個文檔作的真是太粗略了,實在是朦朦朧朧,含糊不清。跟Highcharts之類的比起來差遠了。想要詳細瞭解各類特性,多看實例吧。。。
附上文實例下載連接:戳這裏
如有什麼地方寫的不對,歡迎指正,謝謝!
轉載請註明出處:http://www.cnblogs.com/zrtqsk/p/4019412.html 謝謝!