美文网首页
Vue.js 学习笔记(三)

Vue.js 学习笔记(三)

作者: Edwinpanzzz | 来源:发表于2019-07-09 11:01 被阅读0次

路由

vue-router 的基本使用

定义组件

var login = {
  template: "<h1>登录组件</h1>"
};

var register = {
  template: "<h1>注册组件</h1>"
};

定义 vue-router

var routerObj = new VueRouter({
  // 配置路由规则
  routes: [
    {
      path: "/login",
      // component 的属性值必须是一个组件的模板对象,不能是组件的引用名称
      // component: 'login' 就是错误的
      component: login
    },
    {
      path: "/register",
      component: register
    }
  ]
});

关联到 Vue 实例

new Vue({
  el: "#app",
  router: routerObj
});

实现

<div id="app">
  <a href="#/login">登录</a>
  <a href="#/register">注册</a>
  <!--    这是 vue-router 提供的元素-->
  <router-view></router-view>
</div>

效果展示

点击登录组件效果:


点击登录组件效果

点击注册组件效果:


点击注册组件效果

router-link 替换 a 标签

<a href="#/login">登录</a> 可以替换成 <router-link to="/login" tag="span">登录</router-link>router-link 默认渲染成 <a></a> 标签,可使用 tag="span" 渲染成 <span></span> 标签。

redirect 重定向

// 在 routes 中定义
{
  path: '/',
  redirect: "/login"
}

路由传参

在 console 中输入 vm.$route 可详细查看。

使用 query 方式获取参数

<router-link to="/login?id=10">登录</router-link>
var login = {
  template: "<h1>登录组件 -- {{ $route.query.id }}</h1>",
  // 生命周期函数
  created() {
    console.log(this.$route.query.id);
  }
};

使用 params 方式获取参数

{
  path: '/login/:id',
  component: login
},
<router-link to="/login/10">登录</router-link>
var login = {
  template: "<h1>登录组件 -- {{ $route.params.id }}</h1>",
  // 生命周期函数
  created() {
    console.log(this.$route.params.id);
  }
};

路由的嵌套

routes: [
  {
    path: "/account",
    component: account,
    children: [
      {
        // 没有斜线
        path: "login",
        component: login
      }
    ]
  }
];
<router-link to="/account/login">Account</router-link>

命名视图

可以用命名视图实现首页经典布局。

image.png
<div id="app">
  <!--命名视图-->
  <router-view></router-view>
  <router-view name="left"></router-view>
  <router-view name="main"></router-view>
</div>
var routerObj = new VueRouter({
  // 配置路由规则
  routes: [
    {
      path: "/",
      components: {
        default: header,
        left: left,
        main: main
      }
    }
  ]
});

watch 监听

监听路由示例:

var vm = new Vue({
  el: "#app",
  watch: {
    "$route.path": function(newVal, oldVal) {
      console.log(newVal + "------" + oldVal);
    }
  }
});

监听文本数据:

<input type="text" v-model="firstname" />
var vm = new Vue({
  el: "#app",
  data: {
    firstname: ''
  }
  watch: {
    "firstname": function(newVal, oldVal) {
      console.log(newVal + "------" + oldVal);
    }
  }
});

上述代码也可以用 keyup 实现:

<input type="text" @keyup="getName" v-model="firstName" />
var vm = new Vue({
  el: "#app",
  data: {
    firstName: ""
  },
  methods: {
    getName() {
      console.log(this.firstName);
    }
  }
});

computed 监听

<input type="text" v-model="firstName" />
<input type="text" v-model="lastName" />
<input type="text" v-model="fullName" />
var vm = new Vue({
  el: "#app",
  data: {
    firstName: "",
    lastName: ""
  },
  computed: {
    // fullName 的值在引用时会根据 firstName 和 lastName 重新计算并更新
    fullName: function() {
      return this.firstName + "-" + this.lastName;
    }
  }
});

相关文章

  • 前端基础知识学习---Vue.js学习(一)模板语法

    Vue.js学习笔记 Vue.js的使用之HelloWord 引入Vue.js 创建Vue对象其中el:指定根el...

  • Vue.js 学习笔记(一)

    声明:本文章并非原创,而是参考黑马程序员Vue.js教程配套资料,仅供学习使用,侵删。 Vue.js 学习笔记 什...

  • Vue.js 学习笔记(三)

    路由 vue-router 的基本使用 定义组件 定义 vue-router 关联到 Vue 实例 实现 效果展示...

  • 初识vue.js

    vue.js官网教程学习笔记和学习摘要 起步 安装 一个简单的方法,直接把一个vue.js引入你的HTML页面中,...

  • vue.js源码学习笔记

    参考:vue.js官网Vue.js 源码学习笔记Vue2.0源代码阅读 文件结构梳理 整体目录 源代码实现目录 模...

  • 【个人提升】vuex构建单页应用

    前言:在最近学习 Vue.js 的时候,看到国外一篇讲述了如何使用 Vue.js 和 Vuex 来构建一个简单笔记...

  • vue学习笔记

    title: vue.js学习笔记(一)date: 2018-03-28 19:09:16tags: vue.js...

  • vue.js组件上

    前言 本文由阅读一篇vue.js组件文章学习后笔记http://www.cnblogs.com/keepfool/...

  • Vue.js入门

    Vue笔记系列2、Vue.js渐进3、Vue.js进阶 Vue.js的概述 如官网所说,Vue.js是一款轻量级的...

  • 前端学习大概内容

    现代的前端开发模式 前端三驾马车:Angular、React、Vue Vue.js 学习vue.js前,需要了解的...

网友评论

      本文标题:Vue.js 学习笔记(三)

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