中原郑州网站建设,开源it运维管理软件,杭州建设职业学校网站,深圳建设工程交易网官网官网#xff1a;Vue.js - 渐进式 JavaScript 框架 | Vue.js
vue3编写有声明式和响应式。该文章仅记录声明式。vue3声明式与vue2相同。
一、生命周期
创建之前 beforeCreate()已创建 created()挂载之前 beforeMount()已挂载 mounted()销毁之前 beforeUnmount()已销毁 unmoun…官网Vue.js - 渐进式 JavaScript 框架 | Vue.js
vue3编写有声明式和响应式。该文章仅记录声明式。vue3声明式与vue2相同。
一、生命周期
创建之前 beforeCreate()已创建 created()挂载之前 beforeMount()已挂载 mounted()销毁之前 beforeUnmount()已销毁 unmounted()
二、模板语法
//文本插值
{{ value }}//原始html
p v-htmlvalue/p//属性绑定
p v-bind:idvalue/p
p :idvalue/p//布尔型
button :disabledisButtonDisabledButton/button//绑定多个值
const objectOfAttrs {id: container,class: wrapper
}
div v-bindobjectOfAttrs/div//JavaScript 表达式
{{ number 1 }}
{{ ok ? YES : NO }}
{{ message.split().reverse().join() }}
div :idlist-${id}/div//函数调用
time :titletoTitleDate(date) :datetimedate{{ formatDate(date) }}
/time
2.1 内置指令
v-text 更新元素的文本内容v-html 更新元素的innerhtmlv-show 基于表达式值的真假性来改变元素的可见性。页面渲染消耗多适合频繁切换显示。v-if 基于表达式值的真假性来条件性地渲染元素或者模板片段。元素切换消耗多。v-else 表示 v-if 或 v-if / v-else-if 链式调用的“else 块”。v-else-if 表示 v-if 的“else if 块”。可以进行链式调用。v-for 基于原始数据多次渲染元素或模板块。v-on 给元素绑定事件监听器。缩写。v-bind 动态的绑定一个或多个 attribute也可以是组件的 prop。缩写v-model 在表单输入元素或组件上创建双向绑定。v-slot 用于声明具名插槽或是期望接收 props 的作用域插槽。v-pre 跳过该元素及其所有子元素的编译。v-once 仅渲染元素和组件一次并跳过之后的更新。v-memo 缓存一个模板的子树。仅用于性能至上场景中的微小优化应该很少需要。最常见的情况可能是有助于渲染海量 v-for 列表。v-cloak 用于隐藏尚未完成编译的 DOM 模板。
div v-foritem in list :keyitem.id v-memo[item.id selected]pID: {{ item.id }} - selected: {{ item.id selected }}/pp...more child nodes/p
/div[v-cloak] {display: none;
}templatediv v-cloak{{ message }}
/div
三、变量定义及使用
声明式定义和响应式不同代码如下。变量是在函数中返回。
template
p{{ msg }}/p
divulli v-for(item,index) in list :keyindex{{ item.value }}/li/ul
/div
p /p
/template
script
export default{name:Test,data:function(){return{msg:test,list:[{id:1,value:test1},{id:2,value:test2},{id:3,value:test3},]}},
}
/script
3.2 计算属性 在computed中使用变量名作为方法名可在模板中使用。计算属性也可以定义为方法在methods中定义但是计算属性基于它们的响应式依赖进行缓存只在相关响应式依赖发生改变时它们才会重新求值。
以下代码中计算属性now将不再更新因为Date.now()不是响应式依赖。
template
div idexamplepOriginal message: {{ message }}/ppComputed reversed message: {{ reversedMessage }}/p
/div
/template
script
var vm new Vue({el: #example,data: {message: Hello},computed: {// 计算属性的 getterreversedMessage: function () {// this 指向 vm 实例return this.message.split().reverse().join()},now: function () {return Date.now()}}
})
/script
3.3 监听
通过 watch 选项提供了一个更通用的方法来响应数据的变化。
之前使用开源vue后台框架相同页面不同参数的时候使用监听处理传过来的参数便于多个页面显示。
template
div idwatch-examplepAsk a yes/no question:input v-modelquestion/pp{{ answer }}/p
/div
/template
script
var vm new Vue({el: #example,data: {question: ,answer:,},watch: {// 如果 question 发生改变这个函数就会运行question: function (newQuestion, oldQuestion) {this.answer newQuestion}},
})
/script