路由概念梳理

那我们第一步再来深化一下路由的概念

  • 我们类比一下 我们说一个世界地图,有几个大洲,大洲下面是国家,国家下面还有省、市、县、村这么分下去


    世界地图
  • 类比到我们路由中,世界地图就是主页World,世界下面还有亚洲,那就是World/Asia,那中国就是World/Asia/China,就这么分下去


    类比的路由
  • 那我们的路由呢其实就是类似于我们的地址,每个页面的地址,亚洲/中国/广东,或者是/user/list/edit 那么理解了路由这个类比关系,我们就能说说路由怎么配

  • 首先我们就需要对自己的页面,有一个概念,画出一个网站的地图,我们这个管理后台,是不是显示一个空窗体,代表整个世界,我们用/来表示,然后在这个空窗体里面呢,我们有登录页/login、注册页/reg、管理首页/home,然后在管理首页我们用一个地方来放我们的主要内容,比如用户列表/home/userList 圈子列表 /home/groupList,对吧这样有个网站地图,然后我们就可以先去写我们的页面了,比如我们写了注册页,这个登录页,写个主页,写了用户列表,然后我们需要在路由里配置他们,把他们连接起来

  • 那怎么衔接起来呢,这里就会牵扯到JS(ES6)的语法以及Vue的原理,我们一直在用import来引入各种组件,这个就是ES6一个非常好的特性,支持我们便捷的分块的编写代码在分别引入。

  • 我们说我们在main.js里实例化一个Vue实例



    Vue接受一个{}对象作为参数,对象中有这么几个属性,一是el,就是这个Vue实例的挂载点,这个属于高级内容,不展开,还有就是router,传入一个路由路由的实例化对象,作为Vue实例的路由表和路由配置。

  • 这里的router变量,就是之前创建的一个VueRouter实例,这个实例传入了一个参数 RouterConfig


  • 我们在往前看这个RouterConfig


  • 这个是一个我们定义的对象,里面2个属性,一个是mode,是路由的模式,用history模式(不展开),另一个是router,接受一个路由表数组

  • 这个Routers怎么来的呢,我们再往上来看


  • 原来这个是从router.js里import的,那我们打开router.js看看


  • 我们从上往下 首先import了需要的东西,这个后面详细说,然后顶一个一个叫做router的数组(数组用[]),这个数组就是我们经常编辑的路由表,里面是一个一个对象(用{}),每个对象就是一个平级的页面,比如这里的/和/index,/register就是平级的三个页面,这三个页面其实都是挂在App.vue的router-view下的,这是我们的第一级页面


  • 然后我们看/index下面,有个属性叫做children,,就是这个页面的子页面,接受一个数组,数组里还是平级的对象页面,就这么一级一级分下去的

  • 最后,吧这个routers这个数组给export出去,就是抛出去了,这就能让main来import了

  • 我们来顺着捋一遍,首先我们创建一个routers的数组,存放路由表,然后创建一个RouterConfig对象,用来存放路由的配置,包括路由模式、路由表,然后我们把这个Config作为参数用来实例化一个VueRouter对象,然后我们再把这个对象作为参数,传给Vue实例。

  • 我们刚刚router.js里的import没有说,我们展开说一下。我们刚刚说我们可以把一个代码段import进来,极大的优化了js工程的逻辑。在Vue工程中,我们的.Vue文件就是一个页面,我们在编写一个Vue文件的时候,都会这么写


  • 就是把我们这个页面抛出去了,能给需要的地方去import,那么纵观整个工程,只有一个地方正真的import了我们写的页面,就是在router.js里,我们把页面import进来,作为一个路由的component属性,就是把一个页面赋给一个路由地址

  • 所以这么一梳理,就发现为了我实例化Vue的时候,只传一个路由属性,就能构建我们这么多页面了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容