vue-cli的组件化开发(下)

简介: # 复习并创建一个down组件我们先复习一下vue-cli组件的创建接下来演示我们也要用到这个down组件先看一下我们的上组件代码```<template> <div class="upStyle"> {{updata}} </div> </template> <style lang="less"> .upStyle { width: 300px; height: 300px; background-color: greenyellow; } </style>

复习并创建一个down组件

我们先复习一下vue-cli组件的创建

接下来演示我们也要用到这个down组件

先看一下我们的上组件代码

<template>
    <div class="upStyle">
        {{updata}}
    </div>
  </template>
  
  <style lang="less">
    .upStyle {
        width: 300px;
        height: 300px;
        background-color: greenyellow;
    }
  </style>
  
  <script>
    export default {
        data(){
            return {
                updata:"这是上组件"
            }
        }
    }
  </script>

参考上组件,我们来创建一个下组件

<template>
    
</template>

<style>

</style>

<script>

</script>

之前的文章已经介绍过这三个标签的作用及用法了,这里就不多赘述了

然后我们可以在<template></template>中写入html,在<style></style>中写入样式,最后在<script></script>中写入js,vue等。

写完的如下:

<template>
    <div class="downStyle">
        {{downdata}}
    </div>
  </template>
  
  <style lang="less">
    .downStyle {
        width: 300px;
        height: 300px;
        background-color: rebeccapurple;
    }
  </style>
  
  <script>
    export default {
        data(){
            return {
                downdata:"这是下组件"
            }
        }
    }
  </script>

接下来我们在App.vue中完成注册

App.vue代码

<template>
  <div>
    <up></up>
    <down></down>
  </div>
</template>

<style lang="less">
  div {
    height: auto;
    width: auto;
  }
</style>

<script>
import  up  from "@/components/up.vue";
import  down  from '@/components/down.vue';
export default {
  components:{
    up,down
  }
}
</script>

我们已经完成了这两个组件的导入,注册和使用。

全局组件的注册及使用

接下来我们来做一个全局组件的小Demo

image.png

终端运行npm run serve

出现上面样式

接下来我们来注册全局组件

import Vue from 'vue'
import App from './App.vue'
import all from '@/components/all.vue';

Vue.component('MyCount',all);

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

打开main.js文件,输入上述代码,完成全局组件的注册

解析一下,核心是通过

import all from '@/components/all.vue';

Vue.component('MyCount',all);

完成注册

接下来我们在上组件中使用一下这个全局组件

<template>
    <div class="upStyle">
        {{updata}}
        <MyCount></MyCount>来了
    </div>
  </template>
  
  <style lang="less">
    .upStyle {
        width: 300px;
        height: 300px;
        background-color: greenyellow;
    }
  </style>
  
  <script>
    export default {
        data(){
            return {
                updata:"这是上组件"
            }
        }
    }
  </script>

上面是up.vue中全部代码

接下来我们保存并刷新,发现页面变成了如下的样子

image.png

全局组件已经在上组件完成了使用,我们同样也可以在下组件中不导入注册完成使用,极大程度上简化了开发和维护的成本

随之而来的问题

随之而来的问题:

我们下方组件并没有引入这个全局组件,但是其中的div还是随着全局组件的引入而使其中的字体颜色发生了改变,那么这是为什么呢?

我们明明没有引入这个下组件呀。

样式冲突及解决

发生这个问题的原因是样式冲突,我们vue-cli的核心就是将组件渲染到index.html中指定的div区域中去,这就造成了一个页面中引入的组件中的style可能会发生冲突。

那么我们如何解决呢?

我们在<style></style>中加入scoped属性,就可以解决样式冲突,这就是我们解决的方案,

改变后的all.vue如下

<template>
    <div>
        <div class="data">
            {{allData}}
        </div>
    </div>
</template>

<style scoped>
    div {
        color: brown;
    }
    .data {
        width: 60px;
        height: 60px;
    }
</style>

<script>
export default {
    data(){
        return {
            allData:"All组件"
        }
    }
}
</script>

加入scoped后可以解决样式冲突问题,明天的文章我给大家带来scoped的底层的原理。

相关文章
|
3天前
|
前端开发 关系型数据库 MySQL
基于python+django+vue.js开发的社区养老管理系统
基于python+django+vue.js开发的社区养老管理系统
126 1
|
3天前
|
JavaScript 前端开发 BI
采用前后端分离Vue,Ant-Design技术开发的(手麻系统成品源码)适用于三甲医院
开发环境 技术架构:前后端分离 开发语言:C#.net6.0 开发工具:vs2022,vscode 前端框架:Vue,Ant-Design 后端框架:百小僧开源框架 数 据 库:sqlserver2019
28 4
采用前后端分离Vue,Ant-Design技术开发的(手麻系统成品源码)适用于三甲医院
|
3天前
|
JavaScript
Vue 开发技巧·1
【4月更文挑战第2天】通过props解耦Vue组件与路由参数,避免使用`$route`导致的高耦合。在路由配置中设定`props: true`,如`{ path: /user/:id, component: User, props: true }`,使组件能直接通过`props`获取`params`。此外,功能组件是无状态、不可实例化的,依赖外部数据且无生命周期,提高渲染性能。通过上下文参数传递所需数据,如`{{item.title}} {{item.content}}`,在父组件中定义并传递`list`数据。
31 8
|
3天前
|
前端开发 关系型数据库 MySQL
基于python+django+vue.js开发的医院门诊管理系统/医疗管理系统
基于python+django+vue.js开发的医院门诊管理系统/医疗管理系统
66 0
|
3天前
|
JavaScript 前端开发 开发者
vue组件化开发,与渐进式框架讲解
vue组件化开发,与渐进式框架讲解
25 3
|
3天前
|
JavaScript 前端开发
提高Vue开发效率的必杀技——掌握mixin代码复用技术!
Vue 进阶系列教程将在本号持续发布,一起查漏补缺学个痛快!若您有遇到其它相关问题,非常欢迎在评论中留言讨论,达到帮助更多人的目的。若感本文对您有所帮助请点个赞吧!
|
3天前
|
JSON JavaScript 前端开发
【前后端实战项目】Vue.js 和 Egg.js 开发企业级健康管理项目
【前后端实战项目】Vue.js 和 Egg.js 开发企业级健康管理项目
|
3天前
|
JavaScript 测试技术 开发者
探索 Vue 实例方法的魅力:提升 Vue 开发技能(下)
探索 Vue 实例方法的魅力:提升 Vue 开发技能(下)
|
3天前
|
JavaScript API UED
探索 Vue 实例方法的魅力:提升 Vue 开发技能(上)
探索 Vue 实例方法的魅力:提升 Vue 开发技能(上)
探索 Vue 实例方法的魅力:提升 Vue 开发技能(上)
|
3天前
|
JavaScript 开发者 UED
自定义指令:让 Vue 开发更有趣(下)
自定义指令:让 Vue 开发更有趣(下)