【问题标题】:Implementing a router in Vue 2 project在 Vue 2 项目中实现路由器
【发布时间】:2021-05-10 18:16:00
【问题描述】:

我正在将我的 Vue 项目从 V3 转换为 V2,以便更好地使用 BootStrap。我已经开始复制我的文件,但我遇到了一些错误。最近,eslint 告诉我“应用程序”未使用。我尝试忽略此错误,但由于网页未加载,因此无法正常工作。我怀疑这里可能会发生更多事情。这是我发生错误的路由器:

import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App'
import Home from './views/Home.vue'
import MovieDetail from './views/MovieDetail.vue'
import ReviewMovie from './views/ReviewMovie.vue'

Vue.use(VueRouter)

const routes = [
    { path: '/', component: Home },
    { path: '/movie/:id', component: MovieDetail },
    { path: '/movie/:id/review', component: ReviewMovie}
]

const router = new VueRouter({
    routes
})

const app = new Vue({
  router,
  template: '<App />',
  components: {
      App
  }
}).$mount('#app')

这是我的主要应用:

<template>
  <div id="app">
  <header>
    <router-link to="/">
    <h1><span>Horror</span>Hub</h1> 
    </router-link>
  
  </header>
  <body>
      <router-view />
  </body>
  </div>
</template>
<script>
    export default {
    }

</script>

【问题讨论】:

  • 好像有很多问题。请创建一个代码框
  • @Mr_Happy 您看到了哪些控制台错误/警告?
  • @TJ 你好,我在这里做了一个沙盒:codesandbox.io/s/cold-grass-46wdl
  • 这不仅仅是路由器的问题,你所有的组件都是用 Vue3 语法编写的
  • @TJ 是的,我正在尝试转换项目。似乎有比我意识到的更多的变化,所以我不会再尝试使用 Vue 2,因为学习这两种语法对于初学者来说都是令人困惑的,而且我很可能会感到困惑。

标签: vue.js http vuejs2 routes vue-router


【解决方案1】:

未使用的变量

由于没有使用app,您可以将其删除以解决 ESLint 警告:

// const app = new Vue(/*...*/).$mount('#app')
   ^^^^^^^^^
new Vue(/*...*/).$mount('#app')

但这不是页面未呈现的原因。

template 选项

我怀疑其中一个问题是您在项目中未启用runtime compiler 的情况下使用template 选项(您应该在浏览器的控制台日志中看到警告)。但是,您实际上并不需要 template,您可以使用 render option 代替:

new Vue({
  /*
  template: '<App />',
  components: {
      App
  },
  */

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

组合 API

您的组件正在使用 Composition API,这需要 Vue 2 中的插件:

  1. 安装@vue/composition-api插件:

    npm install -S @vue/composition-api
    
  2. 在main.js,设置插件:

    import VueCompositionApi from '@vue/composition-api'
    Vue.use(VueCompositionApi)
    
  3. 更新所有 Composition API 引用以从 @vue/composition-api 导入:

    // import { ref, onBeforeMount } from 'vue'
    import { ref, onBeforeMount } from '@vue/composition-api'
    

demo

【讨论】:

  • 嗨,托尼,很遗憾,这并没有奏效。我认为渲染肯定存在问题。感兴趣的可以看这里的代码:codesandbox.io/s/cold-grass-46wdl
  • @Mr_Happy 问题之一是您的项目缺少@vue/composition-api。查看更新的答案。
  • 太棒了。谢谢你的帮助!非常丰富的答案
猜你喜欢
  • 2017-04-10
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 2021-08-25
  • 2018-02-07
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多