Vue 2.0 的路由如何从一个单文件组件启动?

1.0版本不用new Vue,一直都是像下面这样启动

import app from 'app.vue';
router.start(app, '#app');

2.0官方给的例子全是模版写在template里的, 我尝试用components: { app }也没成功

new Vue({
  router,
  template: `
    <div id="app">
      <h1>Basic</h1>
      <ul>
        <li><router-link to="/">/</router-link></li>
        <li><router-link to="/foo">/foo</router-link></li>
        <li><router-link to="/bar">/bar</router-link></li>
      </ul>
      <router-view class="view"></router-view>
    </div>
  `
}).$mount('#app')

请问有没有方法从一个单文件组件启动??

阅读 10.9k
3 个回答
import Vue from 'vue';
import App from './app.vue';
import router from './router';

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

使用render vue2.0 render function


    new Vue({
      router,
      render: h => h(App), // render function
    }).$mount('#app')

我也是报这个错,找问题找了很久...
最终找出解决方案:

我把具体路由配置放在routes.js文件了
下面是我的路由入口(router.js文件):

import Router from 'vue-router'
import routes from './routes.js'

export default () => {
    return new Router({
        routes
    })
}

在app的入口文件里:

import Vue from 'vue'
import App from './app.vue'
//这里非常重要
import VueRouter from 'vue-router'
Vue.use(VueRouter)

//这个是我路由入口的路径,就是上面那个router.js文件,这部分根据你自己路径来
import createRouter from './config/router'
const router = createRouter()

new Vue({
  router,
  render: h => h(App)
}).$mount(root)

总结:
前提:项目入口文件 记得 import 自己的路由入口
则:下面的引入可放在项目入口,也可放在路由入口

import VueRouter from 'vue-router'
Vue.use(VueRouter)

我的问题是因为我路由入口文件export default () =>{...}写成一个方法,在项目文件却忘记调用,就是忘了这句:

const router = createRouter()

小伙伴们按我的总结顺序检查一下吧,还有问题的话对比对比vue-cli脚手架的搭建路由看看
最后,希望能帮到大家拉,:)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题