美文网首页
后台重构随笔

后台重构随笔

作者: 浩浩浩浩浩浩荡 | 来源:发表于2018-07-05 16:53 被阅读0次

这次打算用新的后台框架重构一下自己之前的物联网后台系统,还是选用VUE,框架搭建使用的vue-element-admin,框架很完善,只是在上面拼凑自己需要的界面和功能而已,这里只是记录一下开发中学习到的知识点,和遇到的问题

1.组件

在之前的框架开发上,一个页面及一个VUE文件,里面的所有内容冗杂在一起,小页面问题不大,组件多的页面写到后面相当痛苦,几乎到了根本无法维护的地步, 冗杂的vue页面 这次学习框架,把每个页面划分为不同的块,进行单独的组件开发最后再拼凑成一个页面,这样哪里出问题就去哪个组件修改,维护和更新的速度非常快 划分为不同的模块开发

写代码过程中遇到的情况

1.1情况:父组件是地图组件
地图组件

需要在点击标签后,弹出详情框


点击打开详情组件

然后点击关闭按钮后详情框关闭

父组件

<template>
<user-info :res='res' :show='show' @HideUserInfo='HideUserInfo'></user-info>
</template>

<script>
    import userInfo from './UserInfo.vue'

    export default {
        data() {
            return {
                show:false,
                res:{},
            }
        },
        mounted() {
            this.getMarkerData()
        },
        methods: {
            pointclick(data) {
                this.res = data
                this.show = true
            },
            HideUserInfo(){
                this.show = false
            }
        }
    }
</script>

子组件

<template>
    <el-card class="box-card  res-msg" v-show="show">
        <div slot="header" class="clearfix">
            <span>餐厅信息</span>
            <el-button style="float: right; padding: 3px 0" type="text" @click='toDetail'>详细信息</el-button>

        </div>
        <div class="text">
            餐厅名:&nbsp&nbsp&nbsp&nbsp&nbsp{{res.name}}
        </div>
        <div class="text">
            餐厅编码:&nbsp&nbsp&nbsp&nbsp&nbsp{{res.restaurant_id}}
        </div>
        <div class="text">
            设备状态:&nbsp&nbsp&nbsp&nbsp&nbsp{{res.state}}
        </div>
        <div class="text">
            当前油量:&nbsp&nbsp&nbsp&nbsp&nbsp{{res.current_oil}}(公斤)
        </div>
        <div class="text">
            最后油量改变时间:&nbsp&nbsp&nbsp&nbsp&nbsp{{res.last_time}}
        </div>
        <el-button style="float: right; " type="text" @click='HideUserInfo'>关闭</el-button>
    </el-card>
</template>

<script>
    export default {
        //父组件通过props属性传递进来的数据
        props: {
            show: {
                type: Boolean,
                default: () => {
                    return false
                }
            },
            res: {
                type: Object,
                default: () => {
                    return {}
                }
            }
        },
        data() {
            return {

            }
        },
        methods: {
            HideUserInfo() {
                 this.$emit('HideUserInfo');
            },
            toDetail() {

            }
        }
    }
</script>

父组件通过点击标签修改show属性,传递给子组件显示面板,再关闭子组件的时候我本来想通过直接修改子组件的this.show = false,来隐藏面板,虽然成功了,但是vue报错[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "show"

百度后知道是因为在Vue2中组件的props的数据流动改为了只能单向流动,即只能由组件外(调用组件方)通过组件的DOM属性attribute传递props给组件内,组件内只能被动接收组件外传递过来的数据,并且在组件内,不能修改由外层传来的props数据。

所以在父组件传递进来的属性最好也由父组件来控制关闭,不然会导致两个组件耦合度太高,所以及修改为上面的模式,通过点击关闭来触发父组件的关闭方法,再由父组件修改this.show传参给子组件关闭面板

相关文章

  • 后台重构随笔

    这次打算用新的后台框架重构一下自己之前的物联网后台系统,还是选用VUE,框架搭建使用的vue-element-ad...

  • 万字详解产品经理如何承接“重构/改版”需求

    近半年多以来一直在做重构的项目,从运营后台重构,到中台passport重构,最后换了家公司继续做纯C端的前台页面重...

  • 反思平庸而正确的产品设计

    最近在做一个APM(Application Performance Management)后台的重构,从熟悉业务到...

  • 后台管理系统模板页面生成方法

    背景 公司项目前后端分离后,后台管理系统的前端部分用element ui重构了一波。我们发现,后台管理系统的前端功...

  • vue实现动态路由 前端控制

    公司最近重构之前的老项目,后台管理系统需要实现动态路由。 为什么要实现动态路由? 我们在开发后台管理系统的过程中,...

  • 内控开发第一周

    本周重构了后台管理的某些功能,其中包括后台框架,系统配置的交通工具,人员级别,以及实现了选择iconfont图标库...

  • vue+webpack项目中使用dev-server搭建虚拟服务

    在项目开发中,前后台分离,做了假数据,项目使用vue2.0重构,后台也推到重来了,为了不耽误开发进程,我做了虚拟的...

  • 从excel转为csv下载

    管理后台通常涉及excel下载,由于公司最近重构项目变为三个小项目,数据库也分为了3个,这给管理后台增加了下载压力...

  • Nuxt 实现用户鉴权登陆

    引言 博客前台重构完毕了,接下来就是后台部分了,后台的主要功能就是发布、删除、修改文章,自然不是谁都能随便进的。在...

  • 搭建Es2017开发环境

    最近想用TypeScript来重构后台,由于Node版本是8+,能够直接支持async、await,于是乎就想直接...

网友评论

      本文标题:后台重构随笔

      本文链接:https://www.haomeiwen.com/subject/ovvpuftx.html