express框架下ECHARTS和MySQL结合使用

express框架

框架中目录结构

  • app.js: 启动文件,或者说入口文件。

  • package.json: 存储着工程的信息及模块依赖,当在 dependencies 中添加依赖的模块时, 运行 npm install ,npm 会检查当前目录下的 package.json,并自动安装所有指定的模块。

  • node_modules: 存放 package.json 中安装的模块,当你在 package.json 添加依赖的模块并安装后,存放在这个文件夹下。

  • public: 存放 image、css、js 等文件。

  • routes: 存放路由文件。

  • views: 存放视图文件或者说模板文件。

文件

echarts.js是echats的离线版本
在这里插入图片描述
draw_linechart.js

//第一个图表
var xA = [];
var yA = [];
var pieA = [];

function MyChart() {
    
    
	
    var myChart1 = echarts.init(document.getElementById("change-echarts1"));
    var option1 = {
    
    
        title: {
    
    
        	text: 'PH数据变化情况'
        },
        tooltip: {
    
    },
        legend: {
    
    
        	data:['PH']
        },
        xAxis: {
    
    
        	type: 'category',
        	data: xA 
        },
        yAxis: {
    
    
        	type: 'value'
        },
        series: [{
    
    
			name: 'PH',
        	type: 'line',
        	data: yA
        }]
    };
	myChart1.setOption(option1);
	console.log(pieA);
	var myChart2 = echarts.init(document.getElementById("change-echarts2"));
	var option2 = {
    
    
	    title: {
    
    
	        text: '某站点用户访问来源',
	        subtext: '纯属虚构',
	        left: 'center'
	    },
	    tooltip: {
    
    
	        trigger: 'item',
	        formatter: '{a}<br/>{b} :{c} ({d}% )',
			// 设置提示框浮层的位置
			// position: function(point, params, dom, rect, size){
    
    
			//     return [point[1],point[1]];
			// }
	    },
	    legend: {
    
    
	        orient: 'vertical',
	        left: 'left',
	        // data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎']
			data: xA
	    },
	    series: [
	        {
    
    
	            name: '访问来源',
	            type: 'pie',
	            // radius: '55%',
	            // center: ['50%', '60%'],
	            // data: [
	            //     {value: 335, name: '直接访问'},
	            //     {value: 310, name: '邮件营销'},
	            //     {value: 234, name: '联盟广告'},
	            //     {value: 135, name: '视频广告'},
	            //     {value: 1548, name: '搜索引擎'}
	            // ],
				data: pieA,
	            emphasis: {
    
    
	                itemStyle: {
    
    
	                    shadowBlur: 10,
	                    shadowOffsetX: 0,
	                    shadowColor: 'rgba(0, 0, 0, 0.5)'
	                }
	            }
	        }
	    ]
	};
	myChart2.setOption(option2);
	
	var myChart3 = echarts.init(document.getElementById("change-echarts3"));
	var option3 = {
    
    
	    title: {
    
    
	    	text: 'PH数据变化情况'
	    },
	    tooltip: {
    
    },
	    legend: {
    
    
	    	data:['PH']
	    },
	    xAxis: {
    
    
	    	type: 'category',
	    	data: xA 
	    },
	    yAxis: {
    
    
	    	type: 'value'
	    },
	    series: [{
    
    
			name: 'PH',
	    	type: 'bar',
	    	data: yA
	    }]
	};
	myChart3.setOption(option3);
 }

  function myJson() {
    
    
    $.ajax({
    
    
		url:"/line_chart/echarts",
        type:"post",
        data: {
    
    },
        dataType: "json",
        success: function(result) {
    
    
			console.log(result);
			
			for(var i = 0;i<result.length;i++) {
    
    
				var obj = new Object();
			    xA.push(result[i].id);
			    yA.push(result[i].values);
				obj.name =result[i].id;
				obj.value = result[i].values;
				pieA[i]=obj;
			}
            MyChart()
        }
    })
  }
 
  //执行函数
  myJson();

// 测试用
// var app = {
    
    
// 		xday:[],
// 		yvalue:[]
// };

// xdays = [];
// yvalues = [];
// option = null;
// option = {
    
    
// 		title: {
    
    
// 			text: 'PH数据变化情况'
// 		},
// 		tooltip: {},
// 		legend: {
    
    
// 			data:['PH']
// 		},
// 		xAxis: {
    
    
// 			type: 'category',
// 			data: app.xday 
// 		},
// 		yAxis: {
    
    
// 			type: 'value'
// 		},
// 		series: [{
    
    
// 			type: 'line',
// 			data: app.yvalue
// 		}]
// 	};
// 发送ajax请求,从后台获取json数据
// $(document).ready(function () {
    
    
//    dodraw();
//    console.log(app.xday);
//    console.log(app.yvalue)
// });

// function dodraw(){
    
    
//   $.ajax({
    
    
// 	  url:'http://localhost:3000/line_chart/echarts',
// 	  // data:{},
// 	  type:'get',
// 	  dataType:'json',
// 	  success:function(result){
    
    
// 		  console.log(result);
// 		  //把后台返回的数据给数组赋值
// 			for(i=0;i<result.length;i++){
    
    
	  
// 				xdays.push(result[i].id);
// 				yvalues.push(result[i].values);
	  
// 			}
// 		  app.xday = xdays;
// 		  app.yvalue = yvalues;
// 		  // 使用刚指定的配置项和数据显示图表。
// 		  // myChart.setOption(option);
// 	  }
//   })
// };

line_chart1.html
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>Myecharts</title>
		<!-- <script type="text/text/javascript" src="../conf/jquery.js"></script> -->
		<!-- <script type="text/javascript" src="tools/emm.js">测试画图</script> -->
		<!-- <script type="text/javascript" src="tools/emm.js"></script> -->
		
		
		<script type="text/javascript" src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
		<script type="text/javascript" src="tools/echarts.js"></script>
		<style>
			.div-inline{
     
      display:inline} 
		</style>
	</head>
	<body>
		<div id="change-echarts1" style="width:400px;height:300px;left:120px;background: yellowgreen">
		<!-- <script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script> -->
		
		</div>
		<div id="change-echarts2" style="height:600px;background: green">
		<!-- <script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script> -->
		
		</div>
		<div id="change-echarts3" style="width:800px;height:600px;background: yellow">
		<!-- <script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script> -->
		
		<script type="text/javascript" src="tools/draw_linechart.js"></script>
	</body>
</html>

line_chart.js
在这里插入图片描述

var mysql = require('mysql');
var express = require('express');
var router = express.Router();

router.all('/echarts',function (req,res,next) {
    
    

    // 连接到mysql
    var connection = mysql.createConnection({
    
          //创建mysql实例
        host:'127.0.0.1',
        port:'3306',
        user:'root',
        password:'root',
        database:'echarts'
    });
    connection.connect();
    var sql = 'SELECT * FROM line_chart';

    // 转换格式
    // var i;
	// jsonData = {}
	// xdays = []
	// yvalues = []

    connection.query(sql, function (err,result) {
    
    
        if(err){
    
    
            console.log('[SELECT ERROR]:',err.message);
        }

        //result 的格式如下:
        // [{id:1,tdsvalue:"31"},{id:2,tdsvalue:"42"},{id:3,tdsvalue:"23"},{id:4,tdsvalue:"44"},{id:5,tdsvalue:"55"},{id:6,tdsvalue:"36"}]

        console.log(result);
		res.send(result);
		var xA = [];
		var yA = [];
		
        // 想要转换的格式(更新Echarts折线里面数据要转换成下面格式)
        // {xdays:Array(6),yvalues:Array(6)}
        // [1,2,3,4,5,6]
        // ["31","42","23","44","55","36"]

  //       for(i=0;i<result.length;i++){
    
    

  //           xdays.push(result[i].id);
  //           yvalues.push(result[i].values);

  //       }

  //       console.log('1x: '+xdays);
  //       console.log('1y: '+yvalues);

  //       jsonData['xdays']=xdays;
  //       jsonData['yvalues'] = yvalues;
		
  //       res.send(jsonData);
		// console.log(jsonData);
    });
    connection.end();
});
module.exports = router;

app.js
重点在这两句
var line_chartRouter = require(’./routes/line_chart’);

app.use(’/line_chart’, line_chartRouter);

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var line_chartRouter = require('./routes/line_chart');


var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({
    
     extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/line_chart', line_chartRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    
    
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
    
    
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {
    
    };

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

数据库

在这里插入图片描述

效果

哈哈,效果是有了,但是观赏感就没有那么强了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Mr_Bobcp/article/details/106946404
今日推荐