美文网首页
VUE-7:路由vue-router2、路由懒加载、插件

VUE-7:路由vue-router2、路由懒加载、插件

作者: kino2046 | 来源:发表于2020-03-07 01:01 被阅读0次

    路由组件传参

            我们通常把路由直接映射(绑定)的组件称为 路由组件,也只有路由组件才能直接调用路由有关对象:`$router`、`$route`

            当我们一个组件即希望作为路由组件使用,又可能作为功能组件(某个页面中的一部分)去使用,这个时候路由组件传参的方式

            来做到这点

    案例

            我们对 item.vue 组件进行改造,当我们在 home.vue 的商品列表上移入移出,出现商品信息提示层

    默认处理

    对象模式的

            我们也可以有选择的返回 props

    回调函数模式

            也可以使用回调函数模式


    路由数据获取

            有的时候,进入某个路由以后,我们需要从服务端获取数据,比如 `/item/:itemId` ,通常,我们有两种方式来实现

                    1.导航完成之后获取:先完成导航,然后在接下来的组件生命周期钩子中获取数据,在数据获取期间显示加载中之类的 loading 提示

                    2.导航完成之前获取:导航完成之前,在路由进入的守卫中获取数据,在数据获取成功以后执行导航。

            这两种方式都没有任何问题(对错、好坏),自行选择

    导航完成之后获取

    课堂演示 案件演示

    导航完成之前获取(路由生命周期获取)

    课堂演示 案件演示

    扩展 - nprogress(路由进度条效果)

            http://ricostacruz.com/nprogress/

    安装

            npm i nprogress

                OR

            yarn add nprogress

    index.js路由全局里

    路由动效(页面加载透明度变化-渐进)

            利用 `transition` 组件,我们还可以给路由导航加上动效


    滚动行为(新页面滚动条能回到页面顶部)

            前端路由并没有重载整个浏览器,只是通过 DOM 进行了局部更新。所以,有的时候,浏览器的一只状态会被保持,比如 滚动条,

            当我们在一个页面中滚动滚动条,然后跳转到另外一个页面,滚动条会保持在上一个页面中,我们其实更希望滚动条能回到页面顶部,

            就像重载了整个页面一样

    const router = new VueRouter({

      routes: [...],

      scrollBehavior: () => ({ y: 0 })

    });


    后退/前进(回到上一页浏览状态)

            正对 后退/前进 行为,会提供一个 `savedPosition` 参数,通过该参数返回历史记录中的滚动值

    scrollBehavior (to, from, savedPosition) {

      // console.log(savedPosition)

      if (savedPosition) {

        return savedPosition

      } else {

        return { x: 0, y: 0 }

      }

    }


    路由元信息

            定义路由的时候可以配置 `meta` 字段

    通过 `meta` 定义要验证的路由

        或者


    路由懒加载(按需加载)

            当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当

            路由被访问的时候才加载对应组件,这样就更加高效了

    2.html a.js b.js

    相关文章

      网友评论

          本文标题:VUE-7:路由vue-router2、路由懒加载、插件

          本文链接:https://www.haomeiwen.com/subject/xboirhtx.html