亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

摘 要

最完整的Vue教程-從零開始編寫可視化大屏

 

(OF作品展示)

OF之前介紹了用Python實現(xiàn)數(shù)據(jù)可視化、數(shù)據(jù)分析及一些小項目,但基本都是后端的知識。想要做一個好看的可視化大屏,我們還要學(xué)一些前端的知識(vue),網(wǎng)上有很多比較復(fù)雜(需要執(zhí)行各種各樣的命令)還不完整的教程,今天OF將完整地講解如何用vue做一張好看的可視化大屏。只要大家按照步驟操作下來,你也能實現(xiàn)自己的可視化項目。

主要內(nèi)容:Vue編寫可視化大屏

適用人群:Python初學(xué)者,前端/Vue初學(xué)者

準備軟件:pycharm

  1. 安裝準備

在編寫大屏前,我們需要先安裝2個內(nèi)容:vue插件和node.js。

在pycharm內(nèi)安裝vue插件;(用pycharm安裝vue非常簡單,不需要一堆命令)

1.1 打開pycharm,點擊文件-設(shè)置-插件,在搜索欄中搜索“vue”,點擊install。等待安裝完成就可以了。

最完整的Vue教程-從零開始編寫可視化大屏

 

安裝node.js是為了使用npm指令的,下載地址:https://nodejs.org/en/

1.2 下載后按默認安裝即可(安裝路徑可自行修改)。

初識VUE

準備工作完成后,我們可以開始創(chuàng)建VUE項目。

2.1 點擊文件-新建項目,在彈出的窗口中選擇vue.js,然后在Location欄修改路徑地址,點擊右下角“creat”

最完整的Vue教程-從零開始編寫可視化大屏

 

2.2 我們可以看到剛創(chuàng)建好的vue項目,目錄是空白的,在pycharm的Terminal窗口下執(zhí)行npm init,才能生成package.json文件,這步很重要。(注:若執(zhí)行時報權(quán)限錯誤,我們就先刪除npmrc文件(C:Users{賬戶}下的.npmrc文件))

最完整的Vue教程-從零開始編寫可視化大屏

 


最完整的Vue教程-從零開始編寫可視化大屏

 

2.3 初始化一個完整版的項目:在pycharm的Terminal窗口下執(zhí)行vue init webpack myscreen命令,然后可以參考如下的一步步選擇和輸入,等待自動安裝。

最完整的Vue教程-從零開始編寫可視化大屏

 

2.4 安裝成功:出現(xiàn)以下內(nèi)容,就是安裝成功了。

最完整的Vue教程-從零開始編寫可視化大屏

 

我們來說明下這個目錄各文件夾/文件的作用,我們主要用的是src文件夾下的內(nèi)容。

最完整的Vue教程-從零開始編寫可視化大屏

 

Typescript

在vue中編寫代碼的方式和html比較類似,總體上就是3部分:

1)template:與HTML中的body一樣編寫需要展現(xiàn)的內(nèi)容;

2)script:HTML常用JAVAscript,;

3)style:與HTML中的style基本是一樣的。

編寫圖表前,為了便于初學(xué)者理解,我們用Typescript對script部分的屬性進行簡要說明。

TypeScript 程序由以下幾個部分組成:模塊(兩個模塊之間的關(guān)系是通過使用 import和export 建立的)、函數(shù)、變量、語句和表達式、注釋。

<script>
var [變量名] = 值    //變量
export default{    //模塊  
    name:'Percentage',
    props:{},      //props是子組件訪問父組件數(shù)據(jù)的唯一接口
    data(){    
      return {}
    },             //存儲數(shù)據(jù)的函數(shù)
    mounted(){},   //鉤子函數(shù),html加載完成后執(zhí)行,執(zhí)行順序:子組件-父組件
    computed:{},   //計算屬性,也就是依賴其它的屬性計算所得出最后的值
    watch:{},      //監(jiān)聽屬性,監(jiān)聽一個值的變化,然后執(zhí)行相對應(yīng)的函數(shù)
    methods:{},    //事件方法執(zhí)行
}
</script>

注:有引入sass樣式的,需要在terminal中執(zhí)行以下命令(安裝低一些的版本),否則運行不會成功。

npm install [email protected] --save-dev
npm install [email protected] --save-dev

可視化實現(xiàn)

通過以上3部分的準備工作,我們可以正式進入圖表內(nèi)容的編寫,Vue強大的地方莫過于component組件應(yīng)用的便利性。

4.1 OF以圓環(huán)圖為例,圖表要用的地方比較多,所以先新建了一個charts的文件夾,來存放各種圖表的vue文件,然后在charts文件夾中新建一個Vue Component文件,如下圖:

最完整的Vue教程-從零開始編寫可視化大屏

 

4.2 編寫圓環(huán)圖的初始化代碼,此次我們做3張圓環(huán)圖,那么我們的這個Percentage.vue就是父組件。

<template>
    <div class="percentage"> </div>
</template>
<script>
export default {
    name:'Percentage',
    props:{
        containerId:String,
        option:{}
    },
    data(){
        return {
            option1:{
                color:'#516c72',
                series: [{
                    type: 'gauge',
                    startAngle: 90,
                    endAngle: -270,
                    pointer: {
                        show: false
                    },
                    progress: {
                        show: true,
                        overlap: false,
                        roundCap: true,
                        clip: false,
                    },
                    axisLine: {
                        lineStyle: {
                           color: [[1, '#464646']],
                            width: 10,
                        }
                    },
                    splitLine: {
                        show: false,
                        distance: 0,
                        length: 10
                    },
                    axisTick: {
                        show: false
                    },
                    axisLabel: {
                        show: false,
                        distance: 50,
                        backgroundColor:'red'
                    },
                    data: [{
                        value: 20,
                        detail: {
                            offsetCenter: ['0%', '0%']
                        }
                    },
                    ],
                    title: {
                        fontSize: 14
                    },
                    detail: {
                        width: 50,
                        height: 14,
                        fontSize: 14,
                        color: 'auto',
                        formatter: '{value}%'
                    }
                }]
            },
        }
    },
    methods:{
        initChart(newOption){
            if(newOption.series){
                this.option1.series[0].data[0].value = newOption.series[0].data[0].value ;
                this.option1.series[0].detail.formatter = newOption.series[0].detail.formatter;
                if(newOption.color){
                    this.option1.color = newOption.color
                }
            }
            let myChart = this.$echarts.init(
                document.getElementById(this.containerId)
            );
            //  console.log('this.option1',this.option1)
            myChart.setOption(this.option1);
        },
    }
}
</script>
<style scoped>
    .percentage{
        width: 100%;
        height: 100%;
    }
</style>

4.3 給3張圓環(huán)圖賦值,我們可以直接在Percentage.vue中寫,但是為了便于重復(fù)使用,我們再增加一個子組件:新建一個views文件夾,再在views文件夾下新建一個Man.vue的文件。(import Percentage from '../charts/Percentage')

<template>
  <div class="home">
   <div class="content_card">
       <div class="left_card">
            <div class="left_middle_card">
                <div class="left_middle_chart_card">
                        <div class="left_middle_left_chart_card">
                            <div class="safe_title_spec">人員信息總覽</div>
                            <div class="left_middle_left_chart_card_content">
                                <div class="tip">
                                    <h3 class="titletip">公司人數(shù)</h3>
                                    <div id="manchart" class="chart_card">
                                        <percentage ref="manpercentage" :containerId="'manchart'" :option="manoption"/>
                                    </div>
                                </div>
                                <div class="tip">
                                    <h3 class="titletip">出勤率</h3>
                                    <div id="man2chart" class="chart_card">
                                        <percentage ref="man2percentage" :containerId="'man2chart'" :option="man2option"/>
                                    </div>
                                </div>
                                <div class="tip">
                                    <h3 class="titletip">出差人數(shù)</h3>
                                    <div id="man3chart" class="chart_card">
                                        <percentage ref="man3percentage" :containerId="'man3chart'" :option="man3option"/>
                                    </div>
                                </div>
                            </div>
                        </div>
                </div>
            </div>
       </div>
   </div>
  </div>
</template>


<script>
// @ is an alias to /src
import Percentage from '../charts/Percentage'


export default {
  name: 'staff',
  components: {
    Percentage,
  },
  data(){
    return {
        manoption:{
            color:'#45e2f5',
            series: [{
                data: [
                    { name: 'itemA', value: 94}
                ],
                detail: {
                    formatter: '35人'
                }
            }]
        },
        man2option:{
            color:'#b7e8e4',
            series: [{
                data: [
                    { name: 'itemA', value: 50}
                ],
                detail: {
                    formatter: '{value}%'
                }
            }]
        },
        man3option:{
            color:'#7a9ae7',
            series: [{
                data: [
                    { name: 'itemA', value: 17 }
                ],
                detail: {
                    formatter: '17人'
                }
            }]
        },


    }
  },
  mounted(){
      this.chartInit()


  },
  methods:{
    chartInit(){
        this.$refs.manpercentage.initChart(this.manoption)
        this.$refs.man2percentage.initChart(this.man2option)
        this.$refs.man3percentage.initChart(this.man3option)


    },


  }
}
</script>
<style lang="scss" scoped>
.home{
    height: 100%;
    background-color: #111;
    padding: 1%;
    .content_card{
        width: 100%;
        height: 95%;
        display: flex;
        justify-content: flex-start;
        // margin-top: 2%;
        .safe_title_spec{
            height: 50%;
            background: url(data:image/png) no-repeat;
            background-size: contain;
            color: #fff;
            font-size: 1.5rem;
            display: flex;
            align-items: center;
            text-indent: 2rem;
        }


        div{
            width: 100%;
            //height: 100%;
            // border: 1px solid white;
        }
        >div.left_card{
            width: 60%;
            height: 100%;


            .left_middle_card{
                width: 100%;
                height:90%;


                .left_middle_chart_card{
                    height: 80%;
                    display: flex;


                    .tip{


                        .titletip{
                            font-size: 1.5rem;
                            color: #fff;
                        }
                    }


                    .left_middle_left_chart_card{
                        height: 100%;
                        width: 50%;
                        margin-top: 1%;


                        .left_middle_left_chart_card_content{
                            height: 100%;
                            display: flex;
                            .chart_card{
                                height: 150px;
                                width: 180px;
                            }
                        }
                    }


                }


            }
        }


    }
}
</style>


4.4 配置路由,點擊router文件夾-進入index.js,將代碼修改成如下:

最完整的Vue教程-從零開始編寫可視化大屏

 

4.5 運行vue,有兩種方式:

1)點擊pycharm下方的terminal,執(zhí)行運行命令npm run dev

2)在右上角設(shè)置npm運行配置,好處是設(shè)置后,以后我們就可以直接點擊運行,如下圖

最完整的Vue教程-從零開始編寫可視化大屏

 


最完整的Vue教程-從零開始編寫可視化大屏

 

運行結(jié)果:

最完整的Vue教程-從零開始編寫可視化大屏

 

點擊鏈接,會自動打開瀏覽器

最完整的Vue教程-從零開始編寫可視化大屏

 

我們可以看到有個V的標(biāo)志,我們可以去App.vue文件中,刪掉以下的圖片內(nèi)容就可以了

最完整的Vue教程-從零開始編寫可視化大屏

 

刪掉這段代碼后,不需要重新點擊運行,剛打開的瀏覽器會自動更新結(jié)果

最完整的Vue教程-從零開始編寫可視化大屏

 

這個呢要感謝在Man.vue中的以下這段代碼,:

mounted(){
    this.chartInit()
},  //mounted(){}鉤子函數(shù),html加載完成后執(zhí)行,執(zhí)行順序:子組件-父組件

總結(jié)

同學(xué)們有沒有看暈啊,來回的各文件里一頓操作,其實挺簡單的,OF總結(jié)下需要編寫代碼的文件結(jié)構(gòu)。

最完整的Vue教程-從零開始編寫可視化大屏

 

快新的一年了,提前祝大家新年快樂,總結(jié)下自己,看今年有沒有學(xué)到新技能,完成自己的目標(biāo)!

分享到:
標(biāo)簽:Vue
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定