[Vue 警告]: 找不到元素——呈现空容器

[Vue warn]: Cannot find element — empty container is rendered

我正在尝试学习 Vue 2 框架,但遇到了这个错误。我有以下脚本负责我的应用程序的功能:

main.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import VueResource from 'vue-resource'
import App from './App.vue'
import Posts from './components/Posts.vue'
import Routes from './routes/routes'

Vue.config.productionTip = false

Vue.use(VueRouter)
Vue.use(VueResource)

const router = new VueRouter({
  routes: Routes
})

new Vue({
  el: '#app',
  router: router,
  render: h => h(App)
})

App.vue

<template>
  <div id="app">
    <router-view></router-view>
  </div>

</template>

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

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

<template>
    <div id='root'>
        <h1>Test</h1>   
        <input type="text" v-model="message">
    </div>
</template>

Posts.vue

<script>
    import Vue from 'vue'

    window.addEventListener('load', function () {
        new Vue({
            el: '#root',
            data: {
                message: 'Hello World!'
            }
        })
    })
</script>

这些脚本包含在页面末尾。重要的是要提到 id 值为 'app' 的 div 是空的。我也是 webpack 的新手,所以我假设我的导入和导出有问题,但不幸的是我无法自己解决它。索引页仅包含以下内容:

<div id="app"></div>

UPD (router.js)

import Posts from '../components/Posts.vue'

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

export default routes 

在App.vue

<template>
  <div id="app">
   <router-view></router-view>
  </div>
</template>

<router-view>组件将按照当前路线显示组件。

import Posts from '../components/Posts.vue'

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

export default routes 

这里很明显 <router-view> 会显示 Posts 组件。

Posts.vue

<template>
  <div id='root'>
    <h1>Test</h1>   
    <input type="text" v-model="message">
  </div>
</template>

<script>
import Vue from 'vue'

window.addEventListener('load', function () {
    new Vue({
        el: '#root',
        data: {
            message: 'Hello World!'
        }
    })
})
</script>

闪回路由器,有一行写着:

import Posts from '../components/Posts.vue'

这是导入默认语法,但是 Posts.vue 导出了什么?因此,路由器没有导入任何内容。因此,#app.

中没有渲染任何内容

此外,帖子不必是 new Vue(...) 实例。

<template>
  <div id='root'>
    <h1>Test</h1>   
    <input type="text" v-model="message">
  </div>
</template>

<script>
import Vue from 'vue'

export default {
  data: {
    message: 'Hello World!'
  }
}
</script>

会做的很好。这样,路由器就可以使用默认导出。