使用vue 2和vue-router 2和vuex 2构建单页应用,但不要更新
/src/main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import { sync } from 'vuex-router-sync'
sync(store, router)
new Vue({
router,
store,
...App
}).$mount('#app')
/src/router/index.js
import Vue from 'vue'
import routes from './routes'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const router = new VueRouter({
mode: 'history',
routes
})
export default router
/src/router/routes.js
import loader from './loader'
const routes = [
{ path: '/index', name: 'index', component: (r) => require(['./../views/index.vue'], r) }
]
export default routes
/src/store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
modules: {}
})
export default store
/src/view/index.vue
<template>
<div>
<h1>Hello index</h1>
</div>
</template>
<script>
import loader from './../../../router/loader'
export default {
name: 'index',
created () {
console.log('This is index')
}
}
</script>
/src/App.vue
<template>
<div id="app">
<router-link :to="'index'">index</router-link>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'app',
mounted () {
console.log('Hello App')
}
}
</script>
我不知道代码有什么问题,<router-view>
在更改路线时不会更新。
答案 0 :(得分:1)
我认为您的应用尚未正确初始化。您正在按以下方式启动应用程序:
new Vue({
router,
store,
...App
}).$mount('#app')
您拥有spread operator ...App
,这不是必需的 - 它用于将数组项转换为函数args,在此上下文中不正确。相反,您应该使用webpack template中提供的渲染功能:
/* eslint-disable-line no-new */
new Vue({
el: "#app",
store,
router,
render: h => h(App)
})
此外,您尝试在路由和索引中import loader
,如果您使用的是vue-cli
,则无需这样做。
也许您可以从webpack template开始,逐步添加功能:从路径定义和路线组件开始,确保一切正常,最后添加vuex。
答案 1 :(得分:0)
$mount('#app')
很好,我认为问题是你的routes.js
请改为尝试:
import Index from './../views/index.vue'
const routes = [
{ path: '/index', name: 'index', component: Index }
]
这是一个正在运行的webpack模板,已经正确配置vue-router
和vuex
,您可以通过vue-cli
初始化此模板,供您参考:https://github.com/CodinCat/vue-webpack-plus