在vue.js中添加新组件?

时间:2017-09-25 14:44:10

标签: vue.js

我想在我的组件文件中创建一个组件,然后在我的基本应用程序中包含它(比如用于ng-include)。

我的App.vue看起来像这样:

   <template>
    <div id="app">
     <div class="container-fluid">
      <div class="row>
       <navigation></navigation>
      </div>
      <div class="row">
       <router-view></router-view>
      </div>
     </div>
    </div>
   </template>

   <script>
    export default {
     name: 'app',
    }
   </script>

   <style>
    #app {
    font-family: 'Avenir', Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-align: center;
    color: #2c3e50;
    margin-top: 60px;
    }
   </style>

我的main.js文件如下所示:

   import Vue from 'vue'
   import App from './App'
   import VueRouter from 'vue-router'
   import homepage from './components/homepage'
   import navigation from './components/navigation'

   Vue.use(VueRouter)

   const routes = [
    { path: '/', component: homepage}
   ]

   const router = new VueRouter({
    routes,
    mode: 'history'
   })

   new Vue({

    el: '#app',
    template: '<App/>',
    components: { 
     App, navigation 
    },
    router
   }).$mount('#app')

navigation.vue:

    <template>
     <div>
      <p>test</p>
     </div>
    </template>

    <script>
     export default {
      name: 'navigation'
     }
    </script>

当我运行以上内容时,我得到:

[Vue警告]:未知的自定义元素: - 您是否正确注册了组件?对于递归组件,请确保提供“名称”选项。

中找到

---&GT;在src / App.vue        

我知道如何添加vue.component,但我想要的是一个外部组件,如主页,从组件文件夹中提取,并包含在基础应用程序中。

1 个答案:

答案 0 :(得分:4)

要在新的Vue实例中使用该组件,或者您使用(如您所说)VUE.component,或者您应该导入并注册该组件。 见https://vuejs.org/v2/guide/components.html#Local-Registration,你可以 尝试使用App.VUE中的

    <template>
    <div id="app">
     <div class="container-fluid">
      <div class="row>
       <navigation></navigation>
      </div>
      <div class="row">
       <router-view></router-view>
      </div>
     </div>
    </div>
   </template>

   <script>
    import navigation from './components/navigation.vue'

    export default {
     name: 'app',
     components:{
        navigation
     }
    }
   </script>

   <style>
    #app {
    font-family: 'Avenir', Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-align: center;
    color: #2c3e50;
    margin-top: 60px;
    }
   </style>

navigation.vue 组件可以是:

<template src="template.html"></template>
<script>
  export default {
    data(){
      return {} 
    }

  }
</script>