vue组件嵌套

5,728 阅读2分钟

今天的这篇文章一个知识点:在使用脚手架创建的Vue项目中,嵌套不同的组件。

一、基础知识简介:

脚手架各组件执行顺序:

  1. Vue项目中有index.html文件,当我们启动一个项目的时候,打开的就是这个文件。index.html文件和main.js相关联,所以紧接着就是解析main.js中的内容。

  2. main.js文件是Vue的入口文件,在这里我们可以引入Vue的其他组件,例如有Vue中的vue-router组件、vue-resource组件和App根组件。但是我们自己编写的组件为局部组件,一般情况下是不会在main.js文件中引入的。

  3. App根组件一个很常用的功能是引入我们编写的组件,即我们编写的组件可以嵌套在App根组件中,这样我们自己编写的组件就可以添加到项目中。

二、组件之间的嵌套

分为全局组件和局部组件,全局组件在任何组件都可以使用,一般情况使用局部组件

首先创建子组件User.vue

<template>
    <div class="users">
        <h1>Users.vue</h1>
        <ul>
            <li v-for="(user,index) in users" :key="index">
                <!-- 脚手架每次编译调用eslint检测出现bug,循环需要指定key值,且唯一 -->
                {{ user }}
            </li>
        </ul>
    </div>
</template>

<script>
export default {
    data(){
        return {
            users:['小猪佩奇','大象爱美丽','小羊苏溪']
        }
    }
}
</script>

<style>
h1 {
    color: green
}
</style>
  • 全局组件的嵌套,在main.js中操作,1)引入组件,2)注册组件,3)调用组件
import Vue from 'vue'
import App from './App.vue'
//注册全局组件
//1.引入组件
import Users from './components/Users'

// 2.注册全局组件
Vue.component('users', Users)
Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')
<template>
    <div id="app">
        <!-- <img alt="Vue logo" src="./assets/logo.png" /> -->
        <!-- <HelloWorld msg="Welcome to Your Vue.js App" /> -->
        <h1>App.vue</h1>
        <!-- 3.调用组件 -->
        <Users></Users>
    </div>
</template>

<script>
// import HelloWorld from './components/HelloWorld.vue'
//1.局部调用组件
import Users from './components/Users'

export default {
    name: 'app',
    //2.注册组件
    components: {
        // HelloWorld
        Users: Users //相当于Users 可使用双引号“Mr-chaix”,推荐官方写法Users
    }
}
</script>

<style>
h1 {
    color: purple
}
</style>
  • 局部组件的嵌套,在父组件App.vue中引用:
<template>
    <div id="app">
        <!-- <img alt="Vue logo" src="./assets/logo.png" /> -->
        <!-- <HelloWorld msg="Welcome to Your Vue.js App" /> -->
        <h1>App.vue</h1>
        <!-- 3.调用组件 -->
        <Users></Users>
    </div>
</template>

<script>
// import HelloWorld from './components/HelloWorld.vue'
//1.局部调用组件
import Users from './components/Users'

export default {
    name: 'app',
    //2.注册组件
    components: {
        // HelloWorld
        Users: Users //相当于Users 可使用双引号“Mr-chaix”,推荐官方写法Users
    }
}
</script>

<style>
h1 {
    color: purple
}
</style>