最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Highcharts+NodeJS搭建數(shù)據(jù)可視化平臺示例

 更新時(shí)間:2017年01月01日 09:19:47   作者:fareise  
本篇文章主要介紹了Highcharts+NodeJS搭建數(shù)據(jù)可視化平臺,詳細(xì)的介紹了使用Highcharts框架的經(jīng)驗(yàn),有興趣的可以了解一下。

前一段時(shí)間完成了一個(gè)數(shù)據(jù)可視化項(xiàng)目,由后臺NodeJS+Highcharts框架進(jìn)行搭建。下面分享一下整個(gè)開發(fā)過程的流程,以及使用Highcharts框架的經(jīng)驗(yàn)。

一、數(shù)據(jù)的讀取

由于數(shù)據(jù)庫使用的是MySQL數(shù)據(jù)庫,在NodeJS中,可以使用NodeJS中的mysql模塊進(jìn)行mysql數(shù)據(jù)庫的相關(guān)操作,通過npm安裝即可。

1.數(shù)據(jù)庫基本配置

為了方便,我們最好先進(jìn)行一個(gè)數(shù)據(jù)庫連接的基本配置,mysql模塊需要的配置信息如下:

var connection = mysql.createConnection({ 
 host   : '127.0.0.1', 
 user   : 'root', 
 password : 'root', 
 database : 'Your_Database', 
 port : 3306 
}); 

tips:當(dāng)我們在本地開發(fā)時(shí),可以先將線上數(shù)據(jù)庫中的數(shù)據(jù)拷貝一部分到本地,如利用php myadmin,然后通過讀取本地?cái)?shù)據(jù)進(jìn)行開發(fā)。

 2.數(shù)據(jù)庫連接

我們可以設(shè)定,當(dāng)訪問到某個(gè)url后,自動建立mysql連接,代碼如下:

router.get('/test', function (req, res, next) { 
 var username = req.cookies.username; 
 if(typeof username === "undefined" || username != "yidianzixun@163.com"){ 
  res.redirect('/'); 
 }else{ 
  if(connection.threadId){ 
   return; 
  }else{ 
   connection.connect(function(err) { 
    if (err) { 
     console.error('error connecting: ' + err.stack); 
     return; 
    } 
    console.log('connected as id ' + connection.threadId); 
   }); 
  } 
 } 
}) 

 注意這里面的驗(yàn)證。我們這里的項(xiàng)目比較簡單,僅使用cookie做身份驗(yàn)證。當(dāng)我們要建立數(shù)據(jù)庫連接時(shí),首先一定要進(jìn)行身份驗(yàn)證,否則任何人發(fā)送請求就都可以和我們的數(shù)據(jù)庫進(jìn)行連接了,會造成很嚴(yán)重的安全隱患。

通過調(diào)用mysql中的connect方法,進(jìn)行mysql數(shù)據(jù)庫的連接。這里注意,數(shù)據(jù)庫的連接不能并行,否則會報(bào)錯(cuò)。因此為了安全,我們首先必須要先判斷一下當(dāng)前是否已經(jīng)連接了數(shù)據(jù)庫,這里可以使用connection.threadId判斷其是否定義,從而判斷其是否已經(jīng)建立連接。如果已經(jīng)建立了連接,則不要再次建立連接。

 3.執(zhí)行查詢語句

通過調(diào)用query()方法,即可處理語句查詢操作,輸入的內(nèi)容可以是任何正確的mysql查詢語句,也可以嵌套其他變量,最后只要拼接出一個(gè)字符串即可。實(shí)例如下:

router.post('/test', function (req, res, next) { 
 var startDate = req.body.startDate; 
 var endDate = req.body.endDate; 
 connection.query('SELECT `date`, COUNT(DISTINCT `idea_id`) AS num,  
  SUM(`view`) AS view, SUM(`click`) AS click,  
  SUM(`cost`) AS cost FROM `idea_report_all`  
  where `date` BETWEEN "' + startDate + '" AND "' + endDate +  
  '" GROUP BY `date` ORDER BY `date` ASC', function(err, rows, fields) { 
  if (err) throw err; 
  var rows = calculate(rows); 
  res.send(JSON.stringify(rows)); 
 }); 
}) 

這里我們根據(jù)獲取到的開始日期和截止日期,拼接成一個(gè)query語句,查詢出我們需要的數(shù)據(jù),最后可以在回調(diào)函數(shù)中調(diào)用(rows參數(shù)),是一個(gè)數(shù)組。

 最后,將這個(gè)數(shù)據(jù)反回給前臺即可,前臺進(jìn)行數(shù)據(jù)的處理和可視化。

二、HighCharts使用

Highcharts的使用可以在官方API上查看各個(gè)方法,而且有在線演示,非常方便(推薦Highcharts中文網(wǎng))。其中最麻煩的就是要繪制的圖表的配置項(xiàng)所需要的各個(gè)參數(shù)所組成的對象。建議設(shè)定一個(gè)構(gòu)造這個(gè)對象的構(gòu)造器,根據(jù)傳入的各個(gè)參數(shù)構(gòu)造出對應(yīng)需要的HighCharts配置項(xiàng)。因?yàn)閭魅氲膮?shù)過多,我們要使用對象的形式進(jìn)行構(gòu)建。關(guān)于HighCharts框架的更多使用,將在以后博客中更新,可以先看一下下面這個(gè)構(gòu)造的例子。

function greateOptions (id, text, xAxisTitle, date, yAxisTitle1, yAxisTitle2, k1,unit1, k2,unit2, series, color, tooltip) { 
  var data = new Object(); 
  data.chart = { 
    renderTo: id, 
  marginLeft: 50, 
  marginTop: 70 
  }; 
 data.colors = color; 
  data.title = { 
    text: text, 
    align: "left" 
  }; 
 data.tooltip = { 
  crosshairs: true, 
  shared: true, 
  useHTML: true, 
  style: { 
   padding: 10 
  }, 
  headerFormat: '<table><tr><td>' + tooltip + ':</td><td>{point.key}</td></tr>', 
  pointFormat: '<tr><td style="color: {series.color}">{series.name}: </td>' + 
         '<td style="text-align: left"><b>{point.y}</b></td></tr>', 
  footerFormat: '</table>' 
 }; 
 data.noData = { 
  style: { 
   fontWeight: 'bold', 
   fontSize: '15px', 
   color: '#303030' 
  } 
 }; 
 data.lang = { 
  noData: "正在為您加載數(shù)據(jù)......" 
 }; 
 data.credits = { 
  enabled: false 
 }; 
  data.xAxis = { 
    tickPosition: 'outside', 
  title : { 
    text: xAxisTitle || '' 
  }, 
  categories: date 
  }; 
  data.yAxis = [{ 
    lineWidth: 1, 
    title: { 
      text: yAxisTitle1 || '' 
    }, 
    labels: { 
      formatter: function(){ 
        return this.value/k1 + unit1; 
      } 
    } 
  },{ 
    lineWidth: 1, 
    opposite: true, 
    title: { 
      text: yAxisTitle2 || '' 
    }, 
    labels: { 
      formatter: function(){ 
        return this.value/k2 + unit2; 
      } 
    } 
  }]; 
  data.series = series; 
  return data; 
} 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Nest.js系列學(xué)習(xí)之初識nest項(xiàng)目框架及服務(wù)

    Nest.js系列學(xué)習(xí)之初識nest項(xiàng)目框架及服務(wù)

    這篇文章主要為大家介紹了Nest.js系列學(xué)習(xí)之初識nest項(xiàng)目框架及服務(wù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Node.js模塊化的使用詳細(xì)介紹

    Node.js模塊化的使用詳細(xì)介紹

    nodejs中的模塊化是指將每個(gè)js文件會被認(rèn)為單獨(dú)一個(gè)的模塊。模塊之間是互相不可見的。如果一個(gè)模塊需要使用另一個(gè)模塊,那么需要通過指定語法來引入要使用的模塊,而且只能使用引入模塊所暴露的內(nèi)容
    2022-08-08
  • node.js突破nginx防盜鏈機(jī)制,下載圖片案例分析

    node.js突破nginx防盜鏈機(jī)制,下載圖片案例分析

    這篇文章主要介紹了node.js突破nginx防盜鏈機(jī)制,下載圖片的方法,結(jié)合具體案例形式分析了防盜鏈的相關(guān)原理與node.js使用axios庫下載防盜鏈圖片的相關(guān)操作技巧,需要的朋友可以參考下
    2023-04-04
  • 詳解JWT與Token的應(yīng)用與原理

    詳解JWT與Token的應(yīng)用與原理

    這篇文章主要介紹了詳解JWT與Token的應(yīng)用與原理,JWT全稱“JSON Web Token”,是實(shí)現(xiàn)Token的機(jī)制,需要的朋友可以參考下
    2023-04-04
  • node.js文件系統(tǒng)之文件寫入實(shí)例詳解

    node.js文件系統(tǒng)之文件寫入實(shí)例詳解

    Node.js和其他語言一樣,也有文件操作,下面這篇文章主要給大家介紹了關(guān)于node.js文件系統(tǒng)之文件寫入的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • node中npm ERR! network ‘proxy‘ 配置問題解決

    node中npm ERR! network ‘proxy‘ 配置問題解決

    在進(jìn)行npm依賴管理時(shí),可能會遇到因網(wǎng)絡(luò)配置不當(dāng)導(dǎo)致的錯(cuò)誤,如npm ERR! network proxy config is set properly,下面就來介紹一下,感興趣的可以了解一下
    2024-09-09
  • Node.js中操作MongoDB的CRUD操作指南

    Node.js中操作MongoDB的CRUD操作指南

    在Node.js中操作MongoDB常見的庫有mongodb原生驅(qū)動和mongoose等,本文將使用mongodb官方驅(qū)動包來進(jìn)行示例,在開始之前,請確保已經(jīng)安裝了MongoDB數(shù)據(jù)庫并且在本地啟動了MongoDB服務(wù),需要的朋友可以參考下
    2024-01-01
  • nodejs教程之入門

    nodejs教程之入門

    本文是nodejs教程系列的入門篇,主要講述nodejs的特點(diǎn)、模塊機(jī)制/CommonJs(模塊引用、模塊定義、模塊標(biāo)識、模塊實(shí)現(xiàn))、包與NPM等知識,非常的詳細(xì),這里推薦給大家作為入門的文章。
    2014-11-11
  • 基于node編寫excel讀取和導(dǎo)出的小工具

    基于node編寫excel讀取和導(dǎo)出的小工具

    這篇文章主要為大家詳細(xì)介紹了如何基于node編寫一個(gè)小工具,可以實(shí)現(xiàn)excel讀取和導(dǎo)出,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2024-11-11
  • 基于Node.js的WebSocket通信實(shí)現(xiàn)

    基于Node.js的WebSocket通信實(shí)現(xiàn)

    這篇文章主要介紹了基于Node.js的WebSocket通信實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03

最新評論

曲阜市| 金湖县| 乌兰浩特市| 六盘水市| 东至县| 永靖县| 德兴市| 游戏| 大冶市| 武汉市| 温州市| 宁海县| 合肥市| 金堂县| 鄢陵县| 公安县| 连江县| 博客| 盐亭县| 宁远县| 黑龙江省| 无棣县| 永吉县| 栾城县| 永城市| 五台县| 呼伦贝尔市| 芮城县| 蓝山县| 子洲县| 惠安县| 邢台市| 沅陵县| 奉化市| 白山市| 井冈山市| 秦皇岛市| 张北县| 开平市| 鄱阳县| 黄石市|