针对Vue文档中部分大家可能不会去研读的内容,我做了个小总结,作为有经验者的快餐,不是特别适合初学者,可能有不妥之处,希望大家多提建议。
创新互联建站致力于互联网网站建设与网站营销,提供网站建设、成都网站设计、网站开发、seo优化、网站排名、互联网营销、重庆小程序开发、公众号商城、等建站开发,创新互联建站网站建设策划专家,为不同类型的客户提供良好的互联网应用定制解决方案,帮助客户在新的全球化互联网环境中保持优势。
节省代码量的mixin
mixin概念:组件级可复用逻辑,包括数据变量/生命周期钩子/公共方法,从而在混入的组件中可以直接使用,不用重复写冗余逻辑(类似继承)
使用方法:
在某一公共文件夹pub下创建mixin文件夹,其下创建mixinTest.js
const mixinTest = { created() { console.log(`components ${this.name} created`) }, methods: { hello() { console.log('mixin method hello') } } } export default mixinTest
在组件中引用刚才的公共混入文件并使用
import mixinTest from '../pub/mixin/mixinTest.js' export default { data() { return { name: 'hello' } }, mixins: [mixinTest], methods: { useMixin() { this.hello() } } }
ps: 若是使用Vue.mixin()这个方法,则会影响之后创建的所有Vue示例,慎用!
注意mixin的几个特性:
slot内容分发
slot概念引入:Vue跟React在写法上的不同就在于组件与子组件内部元素的组织上,在组件里面没有children元素供我们访问和展现(暂不考虑render函数),取而代之的API是slot
使用场景定义:
12345
slot特性的进阶两点:
slot插入内容的编译作用域:被分发的内容的作用域,根据其所在模板决定
{{ props.text }}
slot的name属性来指定标签插入的位置,也就是文档里面的具名插槽(这个官方文档说的明白)
123
)动态组件
动态组件这个特性,很多人写的Vue项目也不少,但也没用到过这个,有必要多说几句
动态组件适用情况:
使用的方法(借鉴文档):
注意点:
ps:
动画与过渡
其实很多前端工程师第一次用Vue的动画和过渡都是通过库组件来做到的,所以对这块没怎么深挖,各种过渡特效和按钮动画就跑起来了,现在就看下文档,补补课
前端实现动画的基本方法分为三种种:css3的过渡和keyframe/javascript操纵dom/使用webgl或者canvas来独立实现,其中第三种是作为展示动画,与交互结合较少,而Vue作为一个框架,其支持动画基是从前两种入手的,从官方文档提到的四种支持就可以看出这一点。不过官方文档是从DOM过渡和状态过渡两个方面来讲解,前者是DOM的消失和出现的动画等属性的变化,后者是页面上某些值的变化。
DOM属性的改变
若是单个元素/组件的显隐,在组件外面包裹一层
CSS过渡:
...
JS过渡:
多元素过渡其实就是一句话:照常使用v-if/v-else的同时对同一种标签加上key来标识
Vue对于这种多元素动画有队列上的处理,这就是transiton这个标签上的mode属性,通过指定(in-out|out-in)模式,实现消失和出现动画的队列效果,让动画更加自然。
多组件过渡也是一句话:用上一节提到的动态组件,即可完成。
针对列表过渡,其本质仍是多个元素的同时过渡,不过列表大部分是通过数组动态渲染的,因此有独特的地方,不过整体的动画思路不变。具体有以下几点
{{ item }}
数值和属性动态变化
这一部分的动画主要是针对数据元素本身的特效,比如数字的增减,颜色的过渡过程控制,svg动画的实现等,其本质都是数字/文本的变化。 我自己总结就是:通过利用Vue的响应式系统,把数字的变化通过外部库把DOM上对应数值的变化做出连续的效果,如1->100是个数字递增的连续过程,黑色->红色的过程。官方文档主要是用几个示例代码来说明,其本质步骤如下:
上面这个思路走一遍下来就完成了一个单元级别的动画效果,这种类似的流程其实是很常见的需求,所以有必要把这个过程封装成一个组件,只暴露要过渡的值作为入口,每次改变这个值都是一个动画过渡效果。组件封装需要在上面四个步骤的基础上添加mounted生命周期规定初始值即可,同时原来的两个值a/b在组件里面作为一个值,可以用watch对象中的newValue和oldValue作为区分。 至于最后的SVG,其本质也是数字的过渡,只不过里面涉及的状态变量更多,代码更长而已,不过纯前端页面这种需求倒还是不多的,不过作为爱好倒可以鼓捣一些好玩的小demo,不过肯定需要设计师的参与,要不那些参数可不好调出来呐。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。