[Vue学习笔记(小白版)]-2023.8.15

目录

计算属性

 slot

自定义事件内容分发

 vue-cli


计算属性

计算属性的重点突出在属性这两个字上,首先它是一个属性,其次这个属性具有计算的能力,这个计算也就是一个函数(方法)。它可以将计算结果缓存起来,也可以想象为缓存。因此,我们可以使用计算属性来描述依赖响应式状态的复杂逻辑。

示例如下:

<div id="app">
  <div>普通方法查看时间{{currentTime1()}}</div>
  <div>计算属性查看时间{{currentTime2}}</div>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
  var vm = new Vue({
    el:"#app",
    methods: {
      currentTime1: function () {
        return Date.now();
      }
    },
    computed: {
      currentTime2: function (){
        return Date.now();
      }
    }
  });
</script>

首先我们可以看到普通方法和计算属性使用上的区别就是调用方式,普通方法名称后须有“()”-currentTime1,而计算属性则不必-currentTime2;其次普通方法在“methods”中声明,而计算属性在“computed”中声明。二者具体的声明方式没有区别。

测试发现,普通方法每次执行结果都回改变,而计算属性不会,可以看出结果在缓存中保存。

如果对currentTime2作出如下改动

currentTime2: function (){
        this.message;
        return Date.now();
      }

 每次更新message值时才会引起计算属性结果的改变。

 slot

插槽,即在组件中留下一个“坑”给变化的元素,示例如下:

<div id="app">
  <todo>
    <todo-title slot="todo-title" :title="title"></todo-title>
    <todo-items slot="todo-items" v-for="item in items" :item="item"></todo-items>
  </todo>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>

  Vue.component("todo",{
    template: '<div>\
                  <slot name="todo-title"></slot>\
                  <ul>\
                    <slot name="todo-items"></slot>\
                  </ul>\
                </div>'
  })
  Vue.component("todo-title",{
    props: ['title'],
    template: '<div>{{title}}</div>'
  })
  Vue.component("todo-items",{
    props: ['item'],
    template: '<li>{{item}}</li>'
  })

  var vm = new Vue({
    el: "#app",
    data: {
      title: 'the study planning of hcz',
      items: ['cuda','vue','pinn','springboot','deep learning']
    }
  })
</script>

自定义事件内容分发

字面意思,就是自定义一个事件.下面示例是利用组件自定义事件,调用Vue实例中的方法去对Vue对象中的数据进行操作,示例如下:

<div id="app">
  <todo>
    <todo-title slot="todo-title" :title="title"></todo-title>
    <todo-items slot="todo-items" v-for="(item,index) in items" :index="index"
                :item="item" @remove="removeItem(index)"></todo-items>
  </todo>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
  Vue.component("todo",{
    template: '<div>\
                  <slot name="todo-title"></slot>\
                  <ul>\
                    <slot name="todo-items"></slot>\
                  </ul>\
                </div>'
  })
  Vue.component("todo-title",{
    props: ['title'],
    template: '<div>{{title}}</div>'
  })
  Vue.component("todo-items",{
    props: ['item','index'],
    template: '<li>{{item}}<button @click="remove">删除</button></li>',
    methods: {
      remove: function (index){
        this.$emit('remove','index')
      }
    }
  })
  var vm = new Vue({
    el: "#app",
    data: {
      title: 'the study planning of hcz',
      items: ['cuda','vue','pinn','springboot','deep learning']
    },
    methods: {
      removeItem: function (index){
        this.items.splice(index,1);
      }
    }
  })
</script>

 效果如下:

 vue-cli

第一个vue项目(命令行创建)

  1. 首先安装nodejs,很容易安装
  2. 可以安装cnpm(淘宝镜像加速器),下载速度会快点
  3. 安装vue-cli
  4. 使用vue init webpack myvue 创建一个vue项目(myvue为项目名)
  5. 然后再项目内输入npm install安装相关插件
  6. 最后输入 npm run dev运行

 显示如下界面:


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值