vue-多个单文件组件

  • 多个组件可以在一起使用,它们的关系可以是:平行的、嵌套包含的
  • 目标:应用两个组件,它们是彼此平行的关系
  • 使用:把组件用import引入、用conmponent注册。
  • 组件引用(2种)
  1. 注册后引用(全局定义方式):
<script>
import navbar from './components/Navbar'
import sidebar from './components/Sidebar'
//全局组件
//模块化
import Vue from 'vue'
//注册全局
Vue.component("navbar",navbar)
Vue.component("sidebar",sidebar)
  1. 注册不引用(局部定义方式):
components:{
    navbar:navbar,  //组件名,组件对象
    sidebar:sidebar
  }
  • 将组件标签嵌入到要显示的页面。
<navbar></navbar>
    <sidebar></sidebar>
  </div>

例题:navbar-click按钮控制sidebar显示与否

 <template>
 	<navbar>
      <button @click="isShow=!isShow">navbar-click</button>   <!--要在Navbar.vue中设置插槽-->
    </navbar>
    <sidebar v-show="isShow"></sidebar>
 </template>
<script>
import navbar from './components/Navbar'
import sidebar from './components/Sidebar'
//全局组件
//模块化
// import Vue from 'vue'
//注册全局
// Vue.component("navbar",navbar)
// Vue.component("sidebar",sidebar)
export default {
  data(){
      isShow:false
  },
  components:{
    navbar:navbar,  //组件名,组件对象
    sidebar:sidebar
  }
}
</script>

Navbar.vue:

<template>
    <div>
        navbar-<slot></slot>
    </div>
</template>

Sidebar.vue:

<template>
    <aside>
        sidebar
        <ul>
            <li>tiramisu</li>
            <li>coke</li>
        </ul>
    </aside>
</template>

样式冲突覆盖:
全局组件的优先级较高,被引用的会被覆盖。
解决:
在被引用的style标签加上scoped属性作用域,css局部生效,当前样式只影响当前组件。

<style lang="less" scoped>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值