IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue计算,插槽及自定义事件 -> 正文阅读

[JavaScript知识库]Vue计算,插槽及自定义事件

vue

计算属性(类似于Mybatis缓存)

设计计算属性的初衷是用于简单运算的,在一个计算属性里可以完成各种复杂的逻辑,包括运算,函数调用等,最终返回一个结果即可。

计算出来的结果保存在属性中,在内存中运行。

<div id="a">
  <p>Now:{{currentTime()}}</p>
</div>
<script type="text/javascript">
  var vm = new Vue({
    el: "#a",
    data: {
      message: "hello ,cyl"
    },
    methods: {
      currentTime: function () {
        return Date.now();//返回当前时间戳
      }
    },
    computed: {//计算属性,方法名与计算属性不能重名
               //如果出现重名,仅会调用methods中的方法
      currentTime: function () {
        return Date.now();//返回当前时间戳
      }
    }
  });
</script>

summary:调用方法时,每次都要进行计算,既然有计算就会有系统开销,如果这个值不会经常性变化,此时就会将此结果缓存起来,采用计算属性可以做到这一点。
计算属性的特性就是为了将不经常变化的计算结果缓存起来,以节约系统开销。因为前端的并发量比后端要高出好几倍,所以节约一点缓存对前端来讲很有必要。

插槽(vital)

在vue中,我们可以使用元素作为分发内容的出口,可应用在组件组合的场景中。

//view
<div id="a">
    <todo>
        <todo-title slot="todo-title" :title="title"></todo-title>
        <todo-items slot="todo-items" v-for="item in todoItems" v-bind:item="item"></todo-items>
    </todo>
</div>
<script type="text/javascript">
    //定义插槽
    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: "#a",
        data: {
            title: "cyl",
            todoItems:['java','python','C++','php']
        }
    });
</script>

自定义事件

Vue为我们提供了自定义事件的功能,能很好的解决这个问题,使用this.$emit(‘自定义事件名’,参数)

//前端
<div id="a">
    <todo>
        <todo-title slot="todo-title" :title="title"></todo-title>
        <todo-items slot="todo-items" v-for="(item,index) in todoItems"
                    v-bind:item="item" v-bind:index="index"
                    v-on:remove="removeItem(index)" v-bind:key="index"></todo-items>
    </todo>
</div>
//js文件
<script type="text/javascript">
    //定义插槽
    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>{{index}}--{{item}}<button @click="remove">delete</button></li>',
        methods: {
            remove: function (index) {
                //自定义事件分发
                this.$emit('remove',index);
            }
        }
    });
    var vm = new Vue({
        el: "#a",
        data: {
            title: "cyl",
            todoItems:['java','python','C++','php']
        },
        methods: {//删除方法
            removeItem: function (index) {
                alert(this.index+"已删除!");
                this.todoItems.splice(index,1);//一次移除一个元素
            }
        }
    });
</script>
  • 在组件中移除vue的对象
  • 前端和vue通过标签id进行绑定
  • 组件(component)通过插槽(slot)也和前端实现绑定
  • 我们是要删除vue中的元素
  • 通过$emit()事件可以绑定前端自定义事件
  • 通过自定义事件调用vue实例中的删除事件进行删除

总结一下

  • Vue核心:数据驱动,组件化
    Vue是极其纯净的视图框架,因此不包含类似于Ajax的通信功能,为解决异步通信,使用Axios框架
    1.Vue的基础语法
  • v-if
  • v-else-if
  • v-else
  • v-for
  • v-on 绑定事件,简写’@’
  • v-model 数据双向绑定
  • v-bind 给组件绑定参数

组件化

  • 组合组件插槽(slot)
  • 组件内部绑定事件使用this.$emit(“eventName”,param)
  • 具有计算属性,缓存计算数据
    2.条件判断
    3.Vue网络通信Axios(前后端交互)
    4.组件及界面布局(至此,Vue入门结束)
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 20:47:51  更:2021-08-02 20:47:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/22 8:50:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码