Vue + ElementUI 集成 Vue Router
2023-06-13 09:13:00 时间
最新写 Vue 项目使用 ElementUI 做前端, 然后需要集成一个 vue Router, 主要功能是侧边栏不刷新而内容刷新, 看了几个 starter 都和需求不太一样, 因此干脆自己搞一个
Installation - Element UI
直接用的 element-starter
Installation - Vue Router
npm install vue-router
main.js
Entry 文件里面要进行修改, 将 vueRouter 用作插件, 并且引用 routes
这里进行了: 将 App 渲染到 #app
import Vue from 'vue'
import VueRouter from 'vue-router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import App from './App.vue'
import routes from './routes'
Vue.use(ElementUI)
Vue.use(VueRouter);
Vue.config.productionTip = false;
const router = new VueRouter({
routes
});
new Vue({
router,
render: h => h(App),
}).$mount('#app');
app.vue
这个文件的核心就是要放一个 <router-view>
<template>
<el-container>
<router-view></router-view>
</el-container>
</template>
(……)
routes.js
import Home from './components/Home.vue';
import Tags from './components/Tags.vue';
const routes = [{
path: '/',
component: Home
},
{
path: '/tags',
component: Tags
},
];
export default routes;
Home.vue
最后准备下几个不同的 components 即可, 下面是一个例子
// Home.vue
<template>
<div>
Home
</div>
</template>
<script>
export default {
}
</script>
路由强制刷新
有时候会出现这样的情况: 在使用 Vue-router 做项目时, 会遇到如 /user/:id
这样只改变 id 号. 由于 router-view 是复用的, 单纯的改变 id 号并不会刷新 router-view, 而这并不是我们所期望的结果
我们就需要用一些办法在 route pattern 不改变的情况强制刷新:
使用 activated
周期函数代替 mounted
函数
- 不推荐, 导致不必要的刷新
Watch: 直接给模板添加 watch
watch: {
'$route': function(to, from) {
// 我这里还是用了 Vuex,不过应该不影响理解
this.$store.dispatch('updateActiveTemplateId', this.$route.params.templateId)
// 通过更新 Vuex 中的 store 的数据,让数据发生变化
this.getTemplateById()
}
},
beforeRouteLeave
beforeRouteUpdate(to, from, next) {
// 在当前路由改变,但是该组件被复用时调用
// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
// 可以访问组件实例 `this`
},
源码
相关文章
- vue 加载页面时触发时间_Vue 刷新页面时会触发事件吗「建议收藏」
- 如何查看Vue项目vue的版本号
- vue 集成高德地图进行批量标注和信息窗体展示
- Vue中显示img图片,显示不出来怎么办?vue显示图片
- Vue(27)vue-codemirror实现在线代码编译器「建议收藏」
- vue插槽slot-scope_slot插槽的使用方法
- vue 报错-Module not found: Error: Can't resolve 'element-plus' in '
- vue及原生html实现列表无缝上下滚动,以及单行滚动
- Vue 2x 中使用 render 和 jsx 的最佳实践 (1)
- Vue学习笔记之vue.js 两个等号 == 和三个等号===的区别 数字0和空字符串
- 在网页文档中引入Vue.js的方法有哪些?_vue直接引入js文件没有用
- VUE组件封装_vue使用组件
- vue的双向绑定原理_数据双向绑定原理
- 记录 vue-cli3 配置uat环境 遇到的打包问题[通俗易懂]
- Vue全家桶介绍_vue全家桶有什么好处
- vue 中路径props的传参
- IntelliJ IDEA使用 vue-cli 创建Vue项目
- 开心档之Vue.js 组件
- Vue提示框组件vue-notification使用实例演示
- 【Vue】手拉手带你走进Vue大门(概念&指令)
- vue 获取页面详情后 切换页面时 如何监听用户是否修改过信息详解编程语言
- 安装Vue on Linux:轻松搭建开发环境(linux安装vue)
- Vue 实现前后端分离,安全连接 MSSQL 数据库(vue 连接mssql)
- Vue.js 与MySQL结合,打造高效Web应用程序(vue.js mysql)
- Vue框架搭建在Redis之上的Web应用(vue请求redis)
- Vue如何连接Redis(vue怎么连接Redis)
- Vue如何连接Redis数据库(vue怎么连接Redis)
- Vue如何利用Redis加速应用程序性能(vue如何使用redis)
- 优化网站性能,Vue搭配Redis缓存更加有效(vue使用redis缓存)
- 从零开始Vue项目中使用Redis(vue使用redis)
- 研究Oracle VUE价格探究深入探究和分析(oracle vue价格)