最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 16. Vue的路由Vue Router -1

    正文概述 掘金(CRMEB技术团队)   2021-01-21   413

    这一章节我们正式进入vue的周边生态vue-router,正式进入真实项目中学习,串联起之前的所有知识! 如果你还没有创建项目,请看上一张veu/cli相关知识!或者关注CRMEB掘金号查看vue系列文章,我们一起学习,在技术的世界互相碰撞交流!

    Vue Router将分为两个部分:

    1. Vue Router基本使用(本篇)
    2. Vue Router动态传参及导航守卫(下篇)

    什么是vue-router?

    官方解释: vue-router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。

    history锚链接的概念这里不做过多解释,在vue里的表现形式就是链接里有没有#号的区别,但其内在肯定是有不同的,具体大家有兴趣可自行去了解下,我这里要说的是,上边提到了一个路由的概念,那么什么是路由?

    什么是路由?

    路由一词相信生活中常听到的就是路由器,一个路由器可以连接多台电脑,供多台电脑同时联网,这是因为路由器可以生成多个网络地址,一个网络地址对应一台电脑,这就构成了一个端到端的网络路径!

    web里的路由原理也是类似的,根据URL来将请求分配到指定的一个‘端’,那么在vue里充当这个端的就是组件。简单理解下路由的概念就是这样,具体专业的解释,大家可以去百度百科了解下,这里就不做过多专业名词的搬运,希望通过我的理解能给大家带来一些启发!

    VueRouter的基本配置

    在上一章我们通过vue-cli创建项目的时候,我们已经勾选默认安装了vue-router,在项目的src文件夹下有个router的文件夹,文件夹内部有个index.js的文件,这里放的就是vue-router相关配置的地方: 16. Vue的路由Vue Router -1

    通过这个我们就可以梳理出一个简单的vue-router的使用流程,当然,如果你通过vue-cli创建项目时默认勾选,那以下步骤都可以省略!

    1. 安装vue-router
    npm install vue-router
    
    1. 在src文件夹下创建一个router文件夹,再在其内部创建一个index.js文件,引入如下内容:
    // src/router/index.js
    
    // 1. 引入vue和VueRoter
    import Vue from "vue";
    import VueRouter from "vue-router";
    // 这里引入的Home是我们提前在views文件夹下创建的组件
    import Home from "../views/Home.vue";
    
    // 2. 注册VueRoter
    Vue.use(VueRouter);
    
    // 3. 创建一个VueRouter对象
    const routes = [
      {
        path: "/",  // 路由的路径
        name: "Home", // 组件名称
        component: Home  // 关联的组件名称
      },
      {
        path: "/about",
        name: "About",
        // 路由的懒加载写法,该组件会被延迟加载,推荐这样写
        component: () =>
          import(/* webpackChunkName: "about" */ "../views/About.vue")
      }
    ];
    
    // new一个VueRouter
    const router = new VueRouter({
      mode: "history",   // 指定用什么方式跳转路由
      base: process.env.BASE_URL,
      routes
    });
    
    // 4. 导出router对象
    export default router;
    
    1. 在入口文件main.js中注册router
    // main.js
    import Vue from "vue";
    import App from "./App.vue";
    import router from "./router";  // 导入router
    
    Vue.config.productionTip = false;
    
    new Vue({
      router,    // 注册router
      render: h => h(App)
    }).$mount("#app");
    

    经过以上三个步骤就正式在项目中引入了vue-router,在代码中我都做了注释,大家看着注释了解下!其实当安装完vue-router,也就是步骤一之后,我们还可以通过一个命令自动帮我们引入这些,但前提是你必须实现备份原来的,否则会覆盖!

    vue add router
    

    VueRouter的基本使用

    1. 基本使用

    老规矩,翠花上代码:

    <!-- src/App.vue -->
    <template>
      <div id="app">
        <div id="nav">
          <router-link to="/">Home</router-link> |
          <router-link to="/about">About</router-link>
        </div>
        <router-view/>
      </div>
    </template>
    

    这是vue-cli创建项目的时候默认在App.vue入口文件中自动生成的,可以看出,VueRouter 通过 router-link 组件来进行导航,通过 to 属性指定导航的链接,<router-link> 默认会被渲染成一个 <a> 标签。然后声明了一个router-view组件作为路由的出口,路由匹配到的组件将渲染到 <router-view></router-view> 标签中。

    那么这两个路由地址其实对应的就是我们在router/index.js中的routes中指定的路由列表!

    1. 代码方式跳转

    以上例子还可以通过编码的方式使用路由!

    老规矩,翠花上代码:

    <!-- src/App.vue -->
    <template>
      <div id="app">
        <div id="nav">
        <!--
          <router-link to="/">Home</router-link> |
          <router-link to="/about">About</router-link>
          -->
          <button @click="homeClick">首页</button>
          <button @click="aboutClick">关于</button>
        </div>
        <router-view/>
      </div>
    </template>
    
    
    <script>
    export default {
      name: 'App',
      // 代码方式跳转
      methods: {
        homeClick(){
         // this.$router.push('/') 
          this.$router.replace('/')
        },
        aboutClick(){
         // this.$router.push('/about')
          this.$router.replace('/about')
        }
      },
    }
    </script>
    

    路由还可以通过在methods中定义一个方法来跳转路由,采用this.$router.push()this.$router.replace()的方式注册!

    • 区别:

    ? $router.push(); 本质是向history栈中添加一个路由,在我们看来是切换路由,但本质是在添加一个history记录!

    ? $router.replace(); 替换路由,没有历史记录,点击返回,会跳转到上上一个页面!


    起源地下载网 » 16. Vue的路由Vue Router -1

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元