网站被黑 禁止js跳转,诚讯通网站,电商分销,广东网站优化vue基础语法详细介绍 1. 基础语法1.1 声明式渲染1.2 条件与循环1.3 事件处理1.4 双向数据绑定1.5 组件化 2. 模板语法2.1 插值2.1.1 文本2.1.2 html2.1.3 属性2.1.4 表达式 2.2 指令2.2.1 核心指令2.2.1.1 v-if |v-else-if|v-else2.2.1.2 v-show2.2.1.3 v-for2.2.1.4 v-on|v-mo… vue基础语法详细介绍 1. 基础语法1.1 声明式渲染1.2 条件与循环1.3 事件处理1.4 双向数据绑定1.5 组件化 2. 模板语法2.1 插值2.1.1 文本2.1.2 html2.1.3 属性2.1.4 表达式 2.2 指令2.2.1 核心指令2.2.1.1 v-if |v-else-if|v-else2.2.1.2 v-show2.2.1.3 v-for2.2.1.4 v-on|v-model|v-for2.2.1.5 参数 v-bind:href,v-on:click2.2.1.6 简写 1. 基础语法
Vue.js使用声明式渲染、组件化、指令等一系列概念来构建前端应用以下是一些Vue.js的基本语法和概念
1.1 声明式渲染
Vue.js 使用了基于HTML的模板语法允许你声明式地将 DOM 绑定到底层 Vue 实例的数据上。
div idapp{{ message }}
/divvar app new Vue({el: #app,data: {message: Hello Vue!}
})当 Vue 实例被创建时它将挂载点内的DOM与数据绑定通过一些指令与特殊的属性连接起来。
1.2 条件与循环
用 v-if 进行条件渲染用 v-for 进行列表渲染。
div idappp v-ifseenNow you see me/pulli v-fortodo in todos{{ todo.text }}/li/ul
/divvar app new Vue({el: #app,data: {seen: true,todos: [{ text: Learn JavaScript },{ text: Learn Vue },{ text: Build something awesome }]}
})如果 seen 的值为 false那么 p 标签不会被渲染列表中的内容会根据 todos 数组动态生成。
1.3 事件处理
可以用 v-on 指令监听 DOM 事件并在触发时执行一些 JavaScript 代码。
div idappbutton v-on:clickreverseMessageReverse Message/button
/divvar app new Vue({el: #app,data: {message: Hello Vue.js!},methods: {reverseMessage: function () {this.message this.message.split().reverse().join()}}
})点击按钮后reverseMessage 方法将被调用数据 message 的内容将被反转。
1.4 双向数据绑定
Vue.js 提供了一个指令 v-model 实现表单输入和应用状态之间的双向绑定。
div idappinput v-modelmessagep{{ message }}/p
/divvar app new Vue({el: #app,data: {message: Hello Vue!}
})用户输入的每一个字符都会立即更新到 message 并反映到 p 标签里。
1.5 组件化
组件是Vue.js最强大的功能之一。组件可以扩展HTML元素封装可重用的代码。
// 定义名为 todo-item 的新组件
Vue.component(todo-item, {template: liThis is a todo item/li
})现在你可以在一个父级组件模板中以自定义元素 todo-item 的形式使用它了。
ol!-- 创建一个 todo-item 组件的实例 --todo-item/todo-item
/olVue 的组件结构允许我们以不同的方式组合组件来构建强大的应用。
以上是Vue的基本概念和常用语法的介绍Vue的设计思想很大程度上是让开发者能够专注于应用的数据逻辑而不需要直接操作DOM从而简化了前端开发的复杂度。
2. 模板语法
Vue.js 使用了基于 HTML 的模板语法允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据所有 Vue.js 的模板都是合法的 HTML 所以能被遵循规范的浏览器和 HTML 解析器解析vue将模板编译成虚拟dom结合响应系统Vue 能够智能地计算出最少需要重新渲染多少组件并把 DOM 操作次数减到最少。
html模板语法 这是一种基于字符串的模板技术,以字符串和数据为输入,通过用正则表达式将占位符替换为所需数据的方式,构建出完整的 HTML 字符串。
2.1 插值
2.1.1 文本
使用 {{msg}}的形式标签将会被替换成为数据对象data上msg属性值当绑定的数据对象上的msg属性值发生变化时插值处的值也会发生变化双向绑定
2.1.2 html
{{}}的方式将数据处理为普通文本如果要输出html需要使用v-html指令 示例 在data中定义一个html属性其值为html
data: {html: input typetext valuehello/
}在html中取值
span v-htmlhtml/span2.1.3 属性
HTML属性中的值应使用v-bind指令类型与jQuery中的$(#xxx).attr(propName, propVal) 示例以修改元素的class属性为例 定义一个样式
style
.redClass {font-size: 30px;color: red;
}
/style在data中定义一个属性其值为上面定义的样式名
data: {red: redClass
}在html使用v-bind指令设置样式
p设置之前: aaaa/p
p设置之后: span v-bind:classredaaa/span/p在浏览器中可以看到相应的效果
2.1.4 表达式
几种常见的表达式
{{str.substr(0,6).toUpperCase()}}
{{ number 1 }}
{{ ok ? YES : NO }} 三元运算符
li v-bind:我的Id是js动态生成的/li示例1 在html中加入元素定义表达式
span{{str.substr(0,6).toUpperCase()}}/span在data中加入一个属性名为str与html中对应
data: {str: hello vue
}查看效果字符串被截取并转换为大写
示例2
span{{ number 1 }}/span在data中加入一个属性名为str与html中对应
data: {number: 10
}在data中定义的number值将会被加1
示例3 这是一个三元运算如果ok为true表达式值为YES 如果ok为false则表达式值为NO
span{{ ok ? YES : NO }}/span在data中加入一个属性名为str与html中对应
data: {ok: true
}示例4 演示id属性绑定和动态赋值
pinput typetext v-bind:idbookId//br!--动态生成Id--input typetext v-bind:idbookList_ id/
/pdata: {bookId: book001,id: book002
}该示例可以通过开发者工具查看生成的id属性值。
2.2 指令
指令指的是带有“v-前缀的特殊属性
2.2.1 核心指令
2.2.1.1 v-if |v-else-if|v-else
根据其后表达式的bool值进行判断是否渲染该元素 指令特性的值预期是单个 JavaScript 表达式 (v-for 是例外情况稍后我们再讨论)
示例 HTML
div v-iftype Atype A
/div
div v-else-iftype Btype B
/div
div v-elseother value
/divJS
var vm new Vue({el: #app,data: {type: C}});可以修改data中的type值观察页面的输出。
注 js 之间的区别
一个等号是赋值操作先转换类型再比较先判断类型如果不是同一类型直接为false
alert(1 “1”); // true
alert(1 “1”); // false2.2.1.2 v-show
与v-if类似只是不会渲染其身后表达式为false的元素而且会给这样的元素添加css代码styledisplay:none。 当v-show 表达式true则显示否则不显示。 注意使用v-show虽然不显示但在页面的dom中是存在的只是display属性为none 示例 在HTML中加入如下内容
div v-showshow yesshow yes
/div在data中定义show属性
var vm new Vue({el: #app,data: {show: yes }
});修改show值观察页面显示
2.2.1.3 v-for
循环遍历
遍历数组: v-foritem in items, items是数组item为数组中的数组元素
遍历对象: v-for(value,key,index) in stu, value属性值, key属性名index下标示例 定义一个div使用v-for指令输出items是vue实例中data中定义的对象数组
!--数组--
div v-foritem in items{{item.name}} -- {{item.id}}
/div!--循环生成下拉列表--
divselect option v-foritem in items v-bind:valueitem.id{{item.name}}/option/select
/div!--对象--
div v-for(o,key) in obj{{key}}-{{o}}
/divvar vm new Vue({el: #app,data: {itmes:[{name: zs,age:18},{name: ww,age:19},{name: ls,age:20},{name: zl,age:21}],obj: {name:张三,age: 21,addr: xxxx}}
});2.2.1.4 v-on|v-model|v-for
创建一组多选框可以获取到用户选择项
!--
循环生成一组多选按钮v-model通过vue的双向绑定将用户选择的项保存到
定义的selected组数中
--
div v-for(item,index) in items{{index}}:input typecheckbox v-bind:valueitem.idv-modelselected{{item.name}}
/div
button v-on:clickgetSelected()获取选择/buttonvar vm new Vue({el: #app,data: {type: C,show: no,items:[{name: 天津,id:18},{name: 昆明,id:19},{name: 武汉,id:20},{name: 南京,id:21}],obj: {name:张三,age: 21,addr: xxxx},selected:[]},methods: {getSelected: function() {console.log(this.selected);}}
});2.2.1.5 参数 v-bind:href,v-on:click
示例
!--参数href--
diva v-bind:hrefurlbaidu/a
/div!--
参数动态参数.
attname需要在data中定义,
注意attname要全部小写!!
--
diva v-bind:[attrname]urlbaidu/abutton v-on:[evname]clickme点我看看/button
/div注意在动态参数中作为参数的变量名如attrname要全部小写否则无效
var vm new Vue({el: #app,data: {url: https://www.baidu.com,attrname:href,evname: click},methods: {clickme: function() {console.log(点到我了);}}});2.2.1.6 简写
Vue为v-bind和v-on这两个最常用的指令提供了特定简写
指令简写示例v-bind:xxx:xxxv-bind:href 简写为 :hrefv-on:xxxxxxv-on:click 简写为 click