一 概述html
當新開發一個項目或產品時,技術選型是一個不可缺乏的環節,在軟件架構中有着舉足輕重的做用,能夠這麼說,技術選型的好壞直接影響項目或產品的成敗優劣,所以,在進行軟件架構時,必定要想好技術選型。傳統的先後端耦合在一塊兒的模式,基本上不能知足當前環境下的大數據,高併發等需求,如.NET 的WebForm模式逐漸被MVC取代,MVC逐漸取代WebForm,其中有兩點重要的緣由:MVC先後端完全分離和MVC通用性比較好。從架構的架構,咱們把軟件架構抽象爲兩部分,即前端和後端,二者經過接口來傳遞數據。但在本篇文章中,不談架構,只是與你們分享幾種基於Bootsrap的比較主流的前端框架。前端
二 當前幾種比較流行的前端框架jquery
(一)AdminLTEgit
1.參考網址:https://adminlte.io/github
2.開源ajax
3.Bootstrap3框架json
4.輕量級bootstrap
5.徹底響應式,支持定製化後端
6.github:https://github.com/almasaeed2010/AdminLTE前端框架
(二)ACE框架
1.參考網址:http://ace.jeka.by/
2.Twitter bootstrap3開發的後臺模板
3.開源
4.github:https://github.com/bopoda/ace
(三)clearmin
1.參考網址:http://cm.paomedia.com/
2.基於Bootstrap3框架開發的
3.github:https://github.com/paomedia/clearmin
(四)h-ui
1.參考網址:http://www.h-ui.net/H-ui.admin.shtml
2.H-ui.admin是用H-ui前端框架開發的輕量級網站後臺模版採用源生html語言,徹底免費,簡單靈活,兼容性好讓您快速搭建中小型網站後臺
(五)Echats
1.參考網址:http://echarts.baidu.com/
2.由百度團隊開發,徹底用js開發,功能強大,各類類型報表
三 Echarts架構圖
如上雖然給你們推薦了五套前端框架,但筆者推薦AdminLTE+H-ui+Echarts組合模式,這也是我目前在軟件架構中運用到的組合模式。
Echarts框架
四 用Echarts作個報表統計
(一)先看看DEMO效果圖
動態效果
1.支持多種動報表切換,如Line,Bar等;
2.具備隱藏/顯示按鈕;
3.具備數據表格功能;
4.具備圖標保存功能。
(二) 前端Code
1.定義一個div容器
1 <div id="EchartsBarDemo" style="width:100%;height:600px"></div>
2.初始化
1 var myChart = echarts.init(document.getElementById('EchartsBarDemo'));
3.設置option
1 var option = { 2 title: { 3 text: 'XXX高三6月學生總分統計', 4 subtext: '虛擬數據' 5 }, 6 tooltip: { 7 trigger: 'axis' 8 }, 9 legend: { 10 data: ['文科', '理科'] 11 }, 12 toolbox: { 13 show: true, 14 feature: { 15 mark: { show: true }, 16 dataView: { show: true, readOnly: false }, 17 magicType: { show: true, type: ['line', 'bar'] }, 18 restore: { show: true }, 19 saveAsImage: { show: true } 20 } 21 }, 22 calculable: true, 23 xAxis: [ 24 { 25 type: 'category', 26 data: ['300如下', '300-400', '400-500', '500-550', '550-600', '600-650', '650以上'] 27 } 28 ], 29 yAxis: [ 30 { 31 type: 'value' 32 } 33 ], 34 series: [ 35 { 36 name: '理科', 37 type: 'bar', 38 data: LiKeScores, 39 markPoint: { 40 data: [ 41 { type: 'max', name: '最大值' }, 42 { type: 'min', name: '最小值' } 43 ] 44 }, 45 markLine: { 46 data: [ 47 { type: 'average', name: '平均值' } 48 ] 49 } 50 }, 51 { 52 name: '文科', 53 type: 'bar', 54 data: WenKeScores, 55 markPoint: {//標註點 56 data: [ 57 { type: 'max', name: '最大值' }, 58 { type: 'min', name: '最小值' } 59 ] 60 }, 61 markLine: { //水平線 62 data: [ 63 { type: 'average', name: '平均值' } //水平線表示平均值 64 ] 65 } 66 } 67 ] 68 }
4.將option添加給myCharts實例
1 myChart.setOption(option); 2 // 設置加載等待隱藏 3 myChart.hideLoading();
(三).NET
1 public class DefaultController : Controller 2 { 3 // GET: Default 4 public ActionResult BarEcharts() 5 { 6 return View(); 7 } 8 9 public ContentResult GetScoresJson() 10 { 11 //這裏只是模擬數據,正式環境須要到db中查詢 12 return Content("{LiKe:[10, 20, 30, 100, 300, 80, 60],WenKe:[15, 10, 30, 80, 400, 100, 60]}"); 13 } 14 }
(四)完整源碼
1.前端
1 <html> 2 <head> 3 <meta name="viewport" content="width=device-width" /> 4 <script src="~/Scripts/jquery-3.3.1.js"></script> 5 <script src="~/Scripts/echarts.js"></script> 6 <title>BarEcharts</title> 7 </head> 8 <body> 9 <div id="EchartsBarDemo" style="width:100%;height:600px"></div> 10 </body> 11 </html> 12 13 <script> 14 //初始化 15 var myChart = echarts.init(document.getElementById('EchartsBarDemo')); 16 //定義全局變量 17 //var LiKeScores = [10, 20, 30, 100, 300, 80, 60]; 18 //var WenKeScores = [15, 10, 30, 80, 400, 100, 60]; 19 var LiKeScores = []; 20 var WenKeScores = []; 21 var jsonURL = "/Default/GetScoresJson"; 22 $.ajax({ 23 type: 'get', 24 url: jsonURL, 25 dataType: "text", 26 success: function (rspData) { 27 console.log(rspData); 28 var str = eval('(' + rspData + ')'); 29 LiKeScores =str.LiKe; 30 WenKeScores = str.WenKe; 31 var option = { 32 title: { 33 text: 'XXX高三6月學生總分統計', 34 subtext: '虛擬數據' 35 }, 36 tooltip: { 37 trigger: 'axis' 38 }, 39 legend: { 40 data: ['文科', '理科'] 41 }, 42 toolbox: { 43 show: true, 44 feature: { 45 mark: { show: true }, 46 dataView: { show: true, readOnly: false }, 47 magicType: { show: true, type: ['line', 'bar'] }, 48 restore: { show: true }, 49 saveAsImage: { show: true } 50 } 51 }, 52 calculable: true, 53 xAxis: [ 54 { 55 type: 'category', 56 data: ['300如下', '300-400', '400-500', '500-550', '550-600', '600-650', '650以上'] 57 } 58 ], 59 yAxis: [ 60 { 61 type: 'value' 62 } 63 ], 64 series: [ 65 { 66 name: '理科', 67 type: 'bar', 68 data: LiKeScores, 69 markPoint: { 70 data: [ 71 { type: 'max', name: '最大值' }, 72 { type: 'min', name: '最小值' } 73 ] 74 }, 75 markLine: { 76 data: [ 77 { type: 'average', name: '平均值' } 78 ] 79 } 80 }, 81 { 82 name: '文科', 83 type: 'bar', 84 data: WenKeScores, 85 markPoint: {//標註點 86 data: [ 87 { type: 'max', name: '最大值' }, 88 { type: 'min', name: '最小值' } 89 ] 90 }, 91 markLine: { //水平線 92 data: [ 93 { type: 'average', name: '平均值' } //水平線表示平均值 94 ] 95 } 96 } 97 ] 98 } 99 myChart.setOption(option); 100 // 設置加載等待隱藏 101 myChart.hideLoading(); 102 }, 103 error: function (data) { 104 console.log(data); 105 LiKeScores = data.LiKe; 106 WenKeScores = data.WenKe; 107 //Loading(false); 108 } 109 }); 110 </script>
2.後端
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 7 namespace EchartDemo.Controllers 8 { 9 public class DefaultController : Controller 10 { 11 // GET: Default 12 public ActionResult BarEcharts() 13 { 14 return View(); 15 } 16 17 public ContentResult GetScoresJson() 18 { 19 //這裏只是模擬數據,正式環境須要到db中查詢 20 return Content("{LiKe:[10, 20, 30, 100, 300, 80, 60],WenKe:[15, 10, 30, 80, 400, 100, 60]}"); 21 } 22 } 23 }
五 版權區