• 首页 |
  • 资讯 |
  • 生活 |
  • 电脑 |
  • 互联网 |
  • 手机 |
  • 财经 |
  • 教育 |
  • 简易号 |
  •   
      
      
      
    您当前的位置: 首页 >  电脑百科 >  程序开发 >  编程百科

    最完整的Vue教程-从零开始编写可视化大屏

    时间:2021-12-27 09:31:07  来源:  作者:项目与数据管理
    + 加入收藏

    摘 要

    最完整的Vue教程-从零开始编写可视化大屏

     

    (OF作品展示)

    OF之前介绍了用 Python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比较复杂(需要执行各种各样的命令)还不完整的教程,今天OF将完整地讲解如何用vue做一张好看的可视化大屏。只要大家按照步骤操作下来,你也能实现自己的可视化项目。

    主要内容:Vue编写可视化大屏

    适用人群:Python初学者,前端/Vue初学者

    准备软件:pycharm

    1. 安装准备

    在编写大屏前,我们需要先安装2个内容:vue插件和node.js。

    在pycharm内安装vue插件;(用pycharm安装vue非常简单,不需要一堆命令)

    1.1 打开pycharm,点击文件-设置-插件,在搜索栏中搜索“vue”,点击install。等待安装完成就可以了。

    最完整的Vue教程-从零开始编写可视化大屏

     

    安装node.js是为了使用npm指令的,下载地址:https://nodejs.org/en/

    1.2 下载后按默认安装即可(安装路径可自行修改)。

    初识VUE

    准备工作完成后,我们可以开始创建VUE项目。

    2.1 点击文件-新建项目,在弹出的窗口中选择vue.js,然后在Location栏修改路径地址,点击右下角“creat”

    最完整的Vue教程-从零开始编写可视化大屏

     

    2.2 我们可以看到刚创建好的vue项目,目录是空白的,在pycharm的Terminal窗口下执行npm init,才能生成package.json文件,这步很重要。(注:若执行时报权限错误,我们就先删除npmrc文件(C:Users{账户}下的.npmrc文件))

    最完整的Vue教程-从零开始编写可视化大屏

     


    最完整的Vue教程-从零开始编写可视化大屏

     

    2.3 初始化一个完整版的项目:在pycharm的Terminal窗口下执行vue init webpack myscreen命令,然后可以参考如下的一步步选择和输入,等待自动安装。

    最完整的Vue教程-从零开始编写可视化大屏

     

    2.4 安装成功:出现以下内容,就是安装成功了。

    最完整的Vue教程-从零开始编写可视化大屏

     

    我们来说明下这个目录各文件夹/文件的作用,我们主要用的是src文件夹下的内容。

    最完整的Vue教程-从零开始编写可视化大屏

     

    Typescript

    在vue中编写代码的方式和 html比较类似,总体上就是3部分:

    1)template:与HTML中的body一样编写需要展现的内容;

    2)script:HTML常用 JAVAscript,;

    3)style:与HTML中的style基本是一样的。

    编写图表前,为了便于初学者理解,我们用Typescript对script部分的属性进行简要说明。

    TypeScript 程序由以下几个部分组成:模块(两个模块之间的关系是通过使用 import和export 建立的)、函数、变量、语句和表达式、注释。

    <script>
    var [变量名] = 值    //变量
    export default{    //模块  
        name:'Percentage',
        props:{},      //props是子组件访问父组件数据的唯一接口
        data(){    
          return {}
        },             //存储数据的函数
        mounted(){},   //钩子函数,html加载完成后执行,执行顺序:子组件-父组件
        computed:{},   //计算属性,也就是依赖其它的属性计算所得出最后的值
        watch:{},      //监听属性,监听一个值的变化,然后执行相对应的函数
        methods:{},    //事件方法执行
    }
    </script>

    注:有引入sass样式的,需要在terminal中执行以下命令(安装低一些的版本),否则运行不会成功。

    npm install sass-loader@7.3.1 --save-dev
    npm install node-sass@4.14.1 --save-dev

    可视化实现

    通过以上3部分的准备工作,我们可以正式进入图表内容的编写,Vue强大的地方莫过于component组件应用的便利性。

    4.1 OF以圆环图为例,图表要用的地方比较多,所以先新建了一个charts的文件夹,来存放各种图表的vue文件,然后在charts文件夹中新建一个Vue Component文件,如下图:

    最完整的Vue教程-从零开始编写可视化大屏

     

    4.2 编写圆环图的初始化代码,此次我们做3张圆环图,那么我们的这个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张圆环图赋值,我们可以直接在Percentage.vue中写,但是为了便于重复使用,我们再增加一个子组件:新建一个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"> 公司人数</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">出差人数</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="s css" 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,执行运行命令npm run dev

    2)在右上角设置npm运行配置,好处是设置后,以后我们就可以直接点击运行,如下图

    最完整的Vue教程-从零开始编写可视化大屏

     


    最完整的Vue教程-从零开始编写可视化大屏

     

    运行结果:

    最完整的Vue教程-从零开始编写可视化大屏

     

    点击链接,会自动打开浏览器

    最完整的Vue教程-从零开始编写可视化大屏

     

    我们可以看到有个V的标志,我们可以去 App.vue文件中,删掉以下的图片内容就可以了

    最完整的Vue教程-从零开始编写可视化大屏

     

    删掉这段代码后,不需要重新点击运行,刚打开的浏览器会自动更新结果

    最完整的Vue教程-从零开始编写可视化大屏

     

    这个呢要感谢在Man.vue中的以下这段代码,:

    mounted(){
        this.chartInit()
    },  //mounted(){}钩子函数,html加载完成后执行,执行顺序:子组件-父组件

    总结

    同学们有没有看晕啊,来回的各文件里一顿操作,其实挺简单的,OF总结下需要编写代码的文件结构。

    最完整的Vue教程-从零开始编写可视化大屏

     

    快新的一年了,提前祝大家新年快乐,总结下自己,看今年有没有学到新技能,完成自己的目标!



    Tags: Vue   点击:()  评论:()
    声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
    ▌相关推荐
    最完整的Vue教程-从零开始编写可视化大屏
    摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比... 【详细内容】
    2021-12-27  Tags: Vue  点击:(1)  评论:(0)   &id=47816">加入收藏
    在VUE中实现效果"换一换"功能
    实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后... 【详细内容】
    2021-12-17  Tags: Vue  点击:(14)  评论:(0)   &id=47816">加入收藏
    纯前端生成设置头像 - 基于Vue3、Ts、Vite
    开头最近要研究有什么新奇的产品和项目,发现一个网站很有意思,可以纯前端一键随机生成头像,刚好他们的代码是开源,并且基于vue3,我想开源拿出来给大家分享。效果: 开始项目本身基... 【详细内容】
    2021-12-03  Tags: Vue  点击:(15)  评论:(0)   &id=47816">加入收藏
    axios配置vue项目本地测试环境跨域解决方法
    问题后端已经配置好了跨域,前端本地搭建vue-cli测试环境的时候如何解决跨域?(前提进行了基本的axios封装)分析这个时候后端API是一个明确的外网环境(使用外网IP或固定域名访问),... 【详细内容】
    2021-11-03  Tags: Vue  点击:(55)  评论:(0)   &id=47816">加入收藏
    前端开发框架之Vue开发流程与使用
    一、Vue框架的开发流程介绍 当我们从github上下载一个前端模板框架到本地后,框架中经常会自带有一些跳转显示类的功能,我们可以通过查看这些功能是如何实现的,进而一步步改造为... 【详细内容】
    2021-11-03  Tags: Vue  点击:(34)  评论:(0)   &id=47816">加入收藏
    前端开发之VUE介绍与使用
    一、Vue介绍1、什么是Vue 可以独立完成前后端分离式web项目的JavaScript框架2、学习Vue的原因三大主流框架之一:Angular React Vue先进的前端设计模式:MVVM可以完全脱离服务器... 【详细内容】
    2021-10-22  Tags: Vue  点击:(51)  评论:(0)   &id=47816">加入收藏
    2021年vue和react如何选择
    什么是vuevue是尤雨溪在2014年发布的一个渐进式的js框架,它有着双向绑定的特性,同时它的虚拟dom技术让性能得到大大提升。最重要的就是它是渐进式的应用,你可以在你的项目中逐... 【详细内容】
    2021-09-22  Tags: Vue  点击:(77)  评论:(0)   &id=47816">加入收藏
    使用vue实现查询,显示,删除
    前端框架:vue.js效果图: 图书管理显示,查询,删除 页面css样式:<style>* {margin: 0;padding: 0;}#app {width: 900px;padding: 20px;margin: 50px auto;box-shadow: 0 0 10px #82... 【详细内容】
    2021-09-17  Tags: Vue  点击:(91)  评论:(0)   &id=47816">加入收藏
    vue3,对比 vue2 有什么优点?
    本文分享自华为云社区《【云驻共创】vue3相比 vue2 的十项优点》,作者: 海拥 。Vue3新版本的理念成型于 2018 年末,当时的 Vue 2 已经有两岁半了。比起通用软件的生命周期来这... 【详细内容】
    2021-09-16  Tags: Vue  点击:(72)  评论:(0)   &id=47816">加入收藏
    electron 打包vue为桌面应用的详细过程
    1.vue create demo2.vue ui3.搜索 vue-cli-plugin-electron-builder,勾选,安装4.npm run electron:serve5.npm run electron:build6.build complete!构建完成!构建完成后,看一... 【详细内容】
    2021-09-09  Tags: Vue  点击:(63)  评论:(0)   &id=47816">加入收藏
    ▌简易百科推荐
    最完整的Vue教程-从零开始编写可视化大屏
    摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比... 【详细内容】
    2021-12-27  项目与数据管理    Tags: Vue   点击:(1)  评论:(0)   &id=47816">加入收藏
    程序的执行流程和开发工具介绍
    程序是如何被执行的&emsp;&emsp;程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好... 【详细内容】
    2021-12-23  IT学习日记    Tags: 程序   点击:(9)  评论:(0)   &id=47724">加入收藏
    单点登录(SSO)看这一篇还不够!这次不慌了
    阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器... 【详细内容】
    2021-12-23  程序yuan    Tags: 单点登录(   点击:(8)  评论:(0)   &id=47722">加入收藏
    手把手教你构建一个简单的Eclipse RCP应用
    下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1... 【详细内容】
    2021-12-22  阿福ChrisYuan    Tags: RCP应用   点击:(7)  评论:(0)   &id=47612">加入收藏
    浅析 Token 价值的意义及来源
    今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清... 【详细内容】
    2021-12-21  唐少华TSH    Tags: Token   点击:(9)  评论:(0)   &id=47572">加入收藏
    在VUE中实现效果"换一换"功能
    实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后... 【详细内容】
    2021-12-17  Mason程    Tags: VUE   点击:(14)  评论:(0)   &id=47487">加入收藏
    阿里资深软件测试工程师总结的这几点,让小白轻松搞懂性能调优
    什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配... 【详细内容】
    2021-12-16  软件测试小p    Tags: 性能调优   点击:(19)  评论:(0)   &id=47386">加入收藏
    抖音防烧屏脚本 – Tasker 脚本分享,适用于 OLED 屏幕
    Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自... 【详细内容】
    2021-12-15  ITBang    Tags: 抖音防烧屏   点击:(23)  评论:(0)   &id=47351">加入收藏
    Rust 核心团队“有毒”
    11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上... 【详细内容】
    2021-12-15  InfoQ    Tags: Rust   点击:(24)  评论:(0)   &id=47297">加入收藏
    实践:使用AutoMeter快速生成API和测试用例的方法
    一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单... 【详细内容】
    2021-12-14  AutoMeter    Tags: AutoMeter   点击:(20)  评论:(0)   &id=47238">加入收藏
    推荐资讯
    远程软件发展迅猛,ToDesk凭何异军突起?
    远程软件发展迅猛,ToDe
    倒计时!企业QQ即将下架,社交QQ会被下架吗?
    倒计时!企业QQ即将下架
    极简Windows11与iPhone/iPad互传文件
    极简Windows11与iPhon
    iPhone信号问题,花10元就能解决?
    iPhone信号问题,花10元
    惊人数据:App Store中40万应用根本没人下载过
    惊人数据:App Store中4
    个人所得税递延纳税报告
    个人所得税递延纳税报
    非常实用的 Python 库,推一次火一次
    非常实用的 Python 库
    等离子电视技术先进,为何还是被淘汰?液晶电视到底有何优势?
    等离子电视技术先进,为
    相关文章
    • 在VUE中实现效果"换一换"功能
    • 纯前端生成设置头像 - 基于Vue3、Ts、Vite
    • axios配置vue项目本地测试环境跨域解决方法
    • 前端开发框架之Vue开发流程与使用
    • 前端开发之VUE介绍与使用
    • 2021年vue和react如何选择
    • 使用vue实现查询,显示,删除
    • vue3,对比 vue2 有什么优点?
    • electron 打包vue为桌面应用的详细过程
    • 如何在Jenkins上自动化部署Vue,手把手教你
    最新更新
      栏目热门
        栏目头条

          深圳SEO优化公司汕尾外贸网站设计推荐曲靖百度竞价林芝关键词按天计费公司塔城百度seo多少钱淮安网站搜索优化哪家好锦州网站改版公司白城网页制作价格重庆网页制作价格芜湖品牌网站设计报价通辽如何制作网站价格林芝网站制作报价吉安建站安阳网站优化按天收费公司松原企业网站制作报价潍坊SEO按效果付费哪家好东莞如何制作网站多少钱民治seo网站推广海西网站优化公司呼和浩特关键词按天计费推荐黔西南企业网站设计哪家好迪庆设计网站哪家好天门网站建设哪家好坂田网站设计报价德州关键词按天计费哪家好黔南网页制作价格哈密网站制作哪家好益阳网站建设多少钱临汾百度标王推荐镇江百度seo公司昆明企业网站设计推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

          深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化