函数式组件比较特殊,也非常的灵活,它可以根据传入该组件的内容动态的渲染成任意想要的节点,在一些比较复杂的高级组件里用到,比如Vue-router里的<router-view>组件就是一个函数式组件. 因为函数式组件只是函数,所以渲染开销也低很多,当需要做这些时,函数式组件非常有用: 程序化地在多个组件中选择一个来代为渲染. 在将children.props.data传递给子组件之前操作它们. 函数式组件的定义和普通组件类似,也是一个对象,不过而且为了区分普通的组件,定义函数式组件需要指定一个属…
对于过度动画如果要同时渲染整个列表时,可以使用transition-group组件. transition-group组件的props和transition组件类似,不同点是transition-group组件的props是没有mode属性的,另外多了以下两个props    tag                  标签名    moveClass      新增/移除元素时的过渡    ;如果未指定则默认会拼凑出name+"-move"这个格式的,一般很少用到,比较复杂的动画可以该…
ABP对HangFire的集成主要是通过实现IBackgroundJobManager接口的HangfireBackgroundJobManager类完成的. HangfireBackgroundJobManager:实现了接口IBackgroundJobManager中的方法EnqueueAsync,通过HangfireBackgroundJob完成Enqueue.重写了BackgroundWorkerBase中的Start和WaitToStop方法. AbpHangfireConfigura…
第一次写博客,坚持了一个多月时间,Vue源码分析基本分析完了,回过头也看也漏了一些地方,比如双向绑定里的观察者模式,也可以说是订阅者模式,也就是Vue里的Dep.Watcher等这些函数的作用,网上搜一下讲解也挺多的,这些知识点也是很重要的,对于阅读源码的同学这一块务必要花点时间学一下 还有一个挺重要是Vue的一个use和mixin方法,这两个方法用于Vue插件的注册,比如Vuex.Vuex-router等等都是通过Vue.use()来注册的,注册完后会执行对应插件的install方法进行安装,…
引言 上篇 spark 源码分析之十九 -- DAG的生成和Stage的划分 中,主要介绍了下图中的前两个阶段DAG的构建和Stage的划分. 本篇文章主要剖析,Stage是如何提交的. rdd的依赖关系构成了DAG,DAGScheduler根据shuffle依赖关系将DAG图划分为一个一个小的stage.具体可以看 spark 源码分析之十九 -- DAG的生成和Stage的划分 做进一步了解. 紧接上篇文章 上篇文章中,DAGScheduler的handleJobSubmitted方法我们只…
上篇文章 spark 源码分析之十八 -- Spark存储体系剖析 重点剖析了 Spark的存储体系.从本篇文章开始,剖析Spark作业的调度和计算体系. 在说DAG之前,先简单说一下RDD. 对RDD的整体概括 文档说明如下: RDD全称Resilient Distributed Dataset,即分布式弹性数据集.它是Spark的基本抽象,代表不可变的可分区的可并行计算的数据集. RDD的特点: 1. 包含了一系列的分区 2. 在每一个split上执行函数计算 3. 依赖于其他的RDD 4.…
transition组件可以给任何元素和组件添加进入/离开过渡,但只能给单个组件实行过渡效果(多个元素可以用transition-group组件,下一节再讲),调用该内置组件时,可以传入如下特性: name         用于自动生成CSS过渡类名        例如:name:'fade'将自动拓展为.fade-enter,.fade-enter-active等    appear      是否在初始渲染时使用过渡         默认为false    css            是否…
ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础功能的实现. AbpController:这是一个抽象基类,继承自MVC Controller,是ABP系统中所有controller的基类.如下图中,其封装了ABP核心模块中提供的大多数的功能.同时实现了一些公共的方法.它有三个派生类:AbpAppViewController,AbpScripts…
我们定义一个组件的时候,可以在组件的某个节点内预留一个位置,当父组件调用该组件的时候可以指定该位置具体的内容,这就是插槽的用法,子组件模板可以通过slot标签(插槽)规定对应的内容放置在哪里,比如: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script s…
Vue.js提供了v-model指令用于双向数据绑定,比如在输入框上使用时,输入的内容会事实映射到绑定的数据上,绑定的数据又可以显示在页面里,数据显示的过程是自动完成的. v-model本质上不过是语法糖.它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理.例如: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <ti…