当前位置: 首页 > Web前端 > vue.js

Vue核心思想

时间:2023-04-01 00:57:54 vue.js

核心思想:数据驱动,组件系统Vue.js是一个提供MVVM数据双向绑定的库,专注于UI层面,核心思想是:数据驱动,组件系统。数据驱动---双向数据绑定,ViewModel,保证数据和视图的一致性DOM是数据的自然映射(数据驱动的DOM变化)组件化应用UI可以看成是组件树组成的组件化它是扩展HTML元素并封装可重用代码。页面被拆分成小块,每个块对应一个组件,组件嵌套组成一个完整的页面。在Vue.js中,每个组件对应一个ViewModel,并生成一棵ViewModel树,ViewModel树与DOM树一一对应。组件设计原则:1.页面上每个独立的可见/交互区域都被视为一个组件。2、每个组件对应一个工程目录,组件需要的各种资源就近维护在这个目录下。3、页面只是组件的容器,组件可以自由嵌套组合,形成一个完整的页面。组件的核心选项1Template(模板):模板声明了数据与最终展示给用户的DOM之间的映射关系。2初始数据(data):一个组件的初始数据状态。对于可重用组件,这通常是私有状态。3接受的外部参数(props):参数用于在组件之间传递和共享数据。4方法(methods):数据的修改一般在组件的方法中进行。5生命周期钩子(lifecyclehooks):一个组件会触发多个生命周期钩子函数,最新的2.0版本对生命周期函数的名称做了很多改动。6私有资源(assets):在Vue.js中,用户自定义指令、过滤器、组件等统称为资源。组件可以声明自己的私有资源。私有资源只能被该组件及其子组件调用。注册一个组件Vue.component('my-component',{template:'

{{msg}}{{privateMsg}}
',props:{msg:String},data:function(){return{privateMsg:'component!'}}})Webpack是一个开源的前端模块构建工具,它提供了强大的加载器API来定义不同文件格式的预处理逻辑,即.vue后缀单文件组件形式的基础。因此,友达在此基础上开发的vue-loader,让模板、样式、逻辑三要素集成在同一个文件中,并以.vue文件后缀构成单文件组件格式,即方便项目架构和开发参考。其他特点:1.异步批量DOM更新:当大量数据变化时,所有受影响的watcher会被推入一个队列,每个watcher只会推入队列一次。该队列将在进程的下一个滴答时异步执行。这种机制可以避免同一个数据的多次变化带来的DOM冗余操作,也可以保证所有的DOM写操作一起执行,避免DOM读写切换可能导致的布局。2动画系统:Vue.js提供了一个简单但功能强大的动画系统。当元素的可见性发生变化时,用户不仅可以轻松定义相应的CSSTransition或Animation效果,还可以使用丰富的JavaScript钩子函数修改底层动画处理。3可扩展性:除了自定义指令、过滤器和组件之外,Vue.js还提供了灵活的mixin机制,允许用户在多个组件中复用通用功能。Vue组件中常见的传值方式有3种:父传子、子传父、非父传子。父子组件的关系可以概括为props向下传递,event向上传递。父组件通过props向子组件发送数据,子组件通过事件向父组件发送消息。1)父组件传递给子组件:通过props属性。通过props接受子组件。在父组件中:引入子组件子组件:props:{inputName:String}2)将子组件传给父组件:将事件名称传给子组件组件通过$emit事件:定义子组件传值方法childClick()methods:{childClick(){this.$emit('childByValue',this.childValue)}在父组件中:methods:{childByValue:function(childValue){this.name=childValue}3)非父子组件传值:非p之间传值arent-child组件,需要定义一个public公共实例文件bus.js作为中间仓库传值,否则达不到路由组件之间传值的效果。