相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!
?点赞?收藏?不迷路!?
Vue-Router 的懒加载可以通过使用动态 import() 函数来实现。在定义路由时,可以将组件的 import() 函数作为组件的值,这样在路由被访问时,组件才会被加载。例如:
const Foo = () => import('./Foo.vue');
const router = new VueRouter({
routes: [
{ path: '/foo', component: Foo }
]
});
可以通过监听 hashchange 事件来获取页面的 hash 变化。可以使用以下代码来监听 hash 变化:
window.addEventListener('hashchange', function() {
console.log('Hash changed: ' + location.hash);
});
$route 和$router
的区别$route
是一个包含了当前路由信息的对象,可以访问当前路由的参数、路径、查询参数等信息。$router
是Vue-Router的路由实例,可以通过它进行路由的导航,例如跳转到其他页面或修改URL。Vue-Router中,可以使用冒号 :
来定义动态路由,如下所示:
const routes = [
{
path: '/user/:id',
component: User,
}
];
在上述示例中,`:id` 是一个动态参数。要获取传递给这个路由的动态参数,可以通过 `$route.params.id` 来访问,例如:
// 在组件中获取动态参数
const userId = this.$route.params.id;
Vue-router提供了多个导航钩子,它们在组件的生命周期中的不同阶段触发。主要的路由导航钩子包括:
beforeRouteEnter
: 在路由进入前被调用,此时组件实例还未被创建。beforeRouteUpdate
: 在当前路由改变,但是该组件被复用时调用。beforeRouteLeave
: 在离开当前路由时调用。这些钩子的触发时机与组件的生命周期关系密切,但需要注意的是 beforeRouteEnter
中无法直接访问组件实例,可以通过回调函数参数来访问。
router.push()
或 router.replace()
方法进行路由跳转时,是通过JavaScript实现的,不会触发浏览器的整个页面刷新,只更新视图部分,从而提供更加流畅的用户体验。location.href
进行跳转会导致整个页面重新加载,相当于触发了完整的页面刷新。这样的跳转会重新加载所有资源,可能会导致性能损失,尤其在单页面应用中。:
形式定义在路由路径中。例如 /user/:id
中的 id
就是一个参数,通过 $route.params.id
访问。/user?id=123
中的 id
就是一个查询参数,通过 $route.query.id
访问。主要区别在于传递方式和位置,params直接嵌套在路由路径中,而query通过URL的查询参数传递。
Vue-router提供了全局导航守卫以及路由独享的守卫,主要有以下几个:
beforeEach
: 在路由切换前触发。afterEach
: 在路由切换后触发,不关心导航的成功与否。beforeResolve
: 在导航被确认之前触发,可以用于处理异步操作。beforeEnter
: 在路由配置中独享守卫,和 beforeEach
类似。beforeRouteEnter
: 在路由进入前被调用,可以访问组件实例。beforeRouteUpdate
: 在当前路由改变,但是该组件被复用时调用。beforeRouteLeave
: 在离开当前路由时调用。这些导航守卫提供了在路由生命周期中执行自定义逻辑的机会。
前端路由是指在单页面应用(SPA)中,通过JavaScript实现的一种客户端导航方式,通过改变URL的片段(hash)或路径,实现在不重新加载整个页面的情况下切换视图。
主要优点包括:
常见的前端路由库有Vue Router、React Router等,它们提供了丰富的功能和导航守卫,使得前端开发者能够更灵活地管理应用的导航和状态。
开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system
已 300 + Star!
?点赞?收藏?不迷路!?