vue介绍、原理图、特点、对比React、构造器、生命周期、模板语法

243 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

介绍

    vue.js是用于构建交互式的web界面的库

    它提供了MVVM数据绑定和一个可组合的组件系统,具有简单灵活的API,从技术上,VUE.js集中在MVVm模式上的视图
模型层,并通过双向数据绑定链接视图和模型

    实际的DOM操作和输出格式被抽象出来的指令(属性)和过滤器,相比其他的MVVM框架,VUE.js更容易上手

    Vue.js是一个用于创建Web交互界面的库,它让你通过简单而灵活地API创建由数据驱动的UI组件

原理图

vue.png

原理图解释

ViewModel封住逻辑,实现视图和数据模型的双向绑定(内核类似于React中的受控组件)
View是视图
Model是数据模型

Vue特点

简洁:HTML模板+JSON数据,再创建一个简单的Vue实例,就是一个Vue项目
数据驱动:自动追踪依赖的模板表达式和计算属性
组件化:用解释、可复用的组件来构造界面
轻量:大约24kb min+gaip;无依赖
快捷:精确有效的异步批量DOM更新
模块友好:通过NPMBower安装无缝融入工作流

对比React

构造器

在实例化Vue时,需要传入一个选项对象,他可以包含数据、模板、挂载元素、方法、生命周期、钩子函数等选项
Vue3创建实例的时候通过Vue.createApp创建对象

生命周期

Vue2 wsa.png

new Vue开始到createVue为实例化期
    mounted到beforeDestory为生产期
    最后为销毁期
    
newVue:实例化
Observe Data:数据对象
Init Events:事件对象
"el"option:判断是否存在内部挂载:
    如果有,判断是否有模板,直接挂载即可;如果是外部挂载在对象写完之后通过.$mount(el)进行挂载
"template"option:判断是否有模板
如果有模板通过Render方法生成虚拟Dom
如果没有模板就直接输出在HTML中

mounted生存期:判断数据是否更新
更新前调用beforeUpdate
DOM re-render将虚拟DOM转化为真实DOM
更新后调用updated

语法

文本(差值):双大括号会将数据解释为纯文本,而非html,可以使用:
    <div v-html="rawHtml"></div>//按照属性写,尽量不用
    <div>{{rawHtml}}</div>//按照文本写

动态属性:v-bind绑定动态属性<img v-bind:src="src" alt="">
//""中的src为图片路径,需要使用打包后的地址(相对html文件路径)

js:不允许使用if else语句,可以使用表达式

指令:
    带有v-前缀的特殊属性,指令属性的值预期是单一js表达式;可以缩写为@

过滤器:
    可以使用自定义过滤器,一些常见的文本格式化,可以添加在mustache差值的尾部,由|隔开