![cc08e75046acd2972b015991bdac2776.png](https://i-blog.csdnimg.cn/blog_migrate/a2059b109e16247b3caa500af365c28c.jpeg)
中间件是我们在软件开发中的一个古老而强大的概念,当我们在应用程序中使用路由相关模式时,它非常有用。
如果您不太了解中间件的含义,Nodejs框架Express里的中间件可以帮助您了解它们的工作原理。
但是,中间件仅适用于后端吗?
不,当应用程序中有路由时,中间件在前端或后端中就会非常常见。比如现在流行的单页应用程序。
有一些示例可以说明,何时可以使用中间件:
- 不允许未登录用户访问您的网页。
- 仅允许某些类型的用户查看页面(角色:管理员,作者等)
- 数据采集。
- 重置设置或清理存储空间。
- 限制访问用户的年龄。
还有一些......
那么如何在Vue中使用中间件?
感谢Vue Router,这将非常简单!因为这个插件实现了一个类似的概念,称为“导航守卫”。
![2edf4233e9d213ff9b4c6e91814e4850.png](https://i-blog.csdnimg.cn/blog_migrate/81df3c45eebc43fa46a7e63f21d138d3.jpeg)
导航守卫真的很棒,让我们在进入路由之前,更新之前和离开之前,可以执行一些代码逻辑。
![3eda303f2e7155c0b0635ecbf6b360d4.png](https://i-blog.csdnimg.cn/blog_migrate/dc96d70f681a284f961c380e732d8df6.jpeg)
还可以使用全局守卫。
![a279ace0d8e124533a0cc7f75c410c7f.png](https://i-blog.csdnimg.cn/blog_migrate/1cf2c387325e78c4611261fc524f7f17.jpeg)
但有时我们需要多个中间件用于同一路由,我们可以用Vue Router Multiguard包解决问题。这允许我们设置一系列守卫,如下所示:
![dbfdb59ce1372c1bc7497ff923848186.png](https://i-blog.csdnimg.cn/blog_migrate/d40fff8b04f1cd8145a9acb4979a3147.jpeg)
在上边示例中可以看到,通过Vue Router Multiguard,在路由配置中应用中间件很容易。让我们再看一个简化的例子:
首先,我们定义一个模拟用户。然后假设您有一个服务,可以从全局state或其他地方获得当前用户的数据。
![dd434d5fe3129e9c66f8e9db8f397f08.png](https://i-blog.csdnimg.cn/blog_migrate/f44774e85ad9f08f29bbf4e0c07c5cc6.jpeg)
现在,我们可以用中间件创建我们的“真实”示例:
![370fa7d1bb8c66b6a8453b802e4fdda8.png](https://i-blog.csdnimg.cn/blog_migrate/b107c998d82813d12a117f7857e8ea7c.jpeg)
PS:
1. Vue Router还有组件内的守卫
- beforeRouteEnter
- beforeRouteUpdate (2.2 新增)
- beforeRouteLeave
其中beforeRouteEnter,很适合在进入页面之前去获取数据。
2. 如果你阅读了文档,你会发现你可以将下一个路由传递给 next() 函数,例如重定向到 login - next('/login')
相关文章:
构建Vue.js组件的10个技巧
如何使用Vue.js渲染JSON中定义的动态组件
Vue.js应用性能优化一
Vue.js应用性能优化二
Vue.js应用性能优化三