0
点赞
收藏
分享

微信扫一扫

10天从入门到精通Vue(四)watch、computed属性和nrm的安装使用

@[toc]

命名视图实现经典布局

  1. 标签代码结构:

    <div id="app">
    <router-view></router-view>
    <div class="content">
    <router-view name="a"></router-view>
    <router-view name="b"></router-view>
    </div>
    </div>
  2. JS代码:

    <script>
    var header = Vue.component('header', {
    template: '<div class="header">header</div>'
    });
    
    var sidebar = Vue.component('sidebar', {
    template: '<div class="sidebar">sidebar</div>'
    });
    
    var mainbox = Vue.component('mainbox', {
    template: '<div class="mainbox">mainbox</div>'
    });
    
    // 创建路由对象
    var router = new VueRouter({
    routes: [
      {
        path: '/', components: {
          default: header,
          a: sidebar,
          b: mainbox
        }
      }
    ]
    });
    
    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
    el: '#app',
    data: {},
    methods: {},
    router
    });
    </script>
  3. CSS 样式:

    <style>
    .header {
    border: 1px solid red;
    }
    
    .content{
    display: flex;
    }
    .sidebar {
    flex: 2;
    border: 1px solid green;
    height: 500px;
    }
    .mainbox{
    flex: 8;
    border: 1px solid blue;
    height: 500px;
    }
    </style>

    效果如下:
    image.png

    watch属性的使用

    考虑一个问题:想要实现 两个文本框的内容改变,则全名的文本框中的值也跟着改变;

  4. 监听data中属性的改变:
    
    <div id="app">
    <input type="text" v-model="firstName"> +
    <input type="text" v-model="lastName"> =
    <span>{{fullName}}</span>
    </div>

<script>
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
firstName: '共饮',
lastName: '一杯无',
fullName: '共饮 - 一杯无'
},
methods: {},
watch: {
'firstName': function (newVal, oldVal) { // 第一个参数是新数据,第二个参数是旧数据
this.fullName = newVal + ' - ' + this.lastName;
},
'lastName': function (newVal, oldVal) {
this.fullName = this.firstName + ' - ' + newVal;
}
}
});
</script>


2. 监听路由对象的改变:
```vue
<div id="app">
  <router-link to="/login">登录</router-link>
  <router-link to="/register">注册</router-link>

  <router-view></router-view>
</div>

<script>
  var login = Vue.extend({
    template: '登录组件'
  });

  var register = Vue.extend({
    template: '注册组件'
  });

  var router = new VueRouter({
    routes: [
      { path: "/login", component: login },
      { path: "/register", component: register }
    ]
  });

  // 创建 Vue 实例,得到 ViewModel
  var vm = new Vue({
    el: '#app',
    data: {},
    methods: {},
    router: router,
    watch: {
      '$route': function (newVal, oldVal) {
        if (newVal.path === '/login') {
          console.log('这是登录组件');
        }
      }
    }
  });
  </script>

computed计算属性的使用

  1. 默认只有getter的计算属性:
    
    <div id="app">
    <input type="text" v-model="firstName"> +
    <input type="text" v-model="lastName"> =
    <span>{{fullName}}</span>
    </div>

<script>
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
firstName: 'jack',
lastName: 'chen'
},
methods: {},
computed: { // 计算属性; 特点:当计算属性中所以来的任何一个 data 属性改变之后,都会重新触发 本计算属性 的重新计算,从而更新 fullName 的值
fullName() {
return this.firstName + ' - ' + this.lastName;
}
}
});
</script>


2. 定义有`getter`和`setter`的计算属性:
```vue
<div id="app">
  <input type="text" v-model="firstName">
  <input type="text" v-model="lastName">
  <!-- 点击按钮重新为 计算属性 fullName 赋值 -->
  <input type="button" value="修改fullName" @click="changeName">

  <span>{{fullName}}</span>
</div>

<script>
  // 创建 Vue 实例,得到 ViewModel
  var vm = new Vue({
    el: '#app',
    data: {
      firstName: 'jack',
      lastName: 'chen'
    },
    methods: {
      changeName() {
        this.fullName = 'TOM - chen2';
      }
    },
    computed: {
      fullName: {
        get: function () {
          return this.firstName + ' - ' + this.lastName;
        },
        set: function (newVal) {
          var parts = newVal.split(' - ');
          this.firstName = parts[0];
          this.lastName = parts[1];
        }
      }
    }
  });
  </script>

watchcomputedmethods之间的对比

  1. computed属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用;
  2. methods方法表示一个具体的操作,主要书写业务逻辑;
  3. watch一个对象,键是需要观察的表达式,值是对应回调函数。主要用来监听某些特定数据的变化,从而进行某些具体的业务逻辑操作;可以看作是computedmethods的结合体;

    nrm的安装使用

    作用:提供了一些最常用的NPM包镜像地址,能够让我们快速的切换安装包时候的服务器地址;
    什么是镜像:原来包刚一开始是只存在于国外的NPM服务器,但是由于网络原因,经常访问不到,这时候,我们可以在国内,创建一个和官网完全一样的NPM服务器,只不过,数据都是从人家那里拿过来的,除此之外,使用方式完全一样;

  4. 运行npm i nrm -g全局安装nrm包;
  5. 使用nrm ls查看当前所有可用的镜像源地址以及当前所使用的镜像源地址;
  6. 使用nrm use npmnrm use taobao切换不同的镜像源地址;

本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
主页:共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

a37032f76d3ebe77e3e3d265ff1e1d7.jpg

举报

相关推荐

0 条评论