介绍
Vue 是一套构建用户界面的渐进式前端框架
- 只关注视图层,并且非常容易学习,还可以很方便的与其它库或已有项目整合
- 通过尽可能简单的 API 来实现响应数据的绑定和组合的视图组件
- 特点
易用:在有 HTML CSS JavaScript 的基础上,快速上手
灵活:简单小巧的核心,渐进式技术栈,足以应付任何规模的应用
性能:20kb min+gzip 运行大小、超快虚拟 DOM、最省心的优化
入门案例
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-model="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/vue.js"></script> //Vue基于vue.js文件
<style>
.color {
color: red;
}
</style>
</head>
<body>
<div id="div">
<p v-html="name"></p>
<p :class="cls">{{ classroom }}</p>
<a v-bind:href="src">百度</a>
<input type="text" v-model:value="meg">{{meg}}
<button @click="updateFont()"> 更新字段</button>
<button onclick="hi()"> 打招呼</button>
<button onclick="update()"> 更新班级</button>
<table>
<tr>
<td>id</td>
<td>名字</td>
<td>班级</td>
</tr>
<tr v-for="(stu,index) in students">
<td>{{ index+1 }}</td>
<td>{{stu.name}}</td>
<td>{{stu.classroom}}</td>
</tr>
</table>
</div>
</body>
<script>
let item = new Vue({
el: "#div",
data: {
name: "曹大兵",
classroom: "一班",
meg: "aaa",
src: "www.baidu,con",
cls: "color",
students: [{name: "一", classroom: "一班"},{name: "一", classroom: "一班"},{name: "一", classroom: "一班"}]
},
methods: {
study: function () {
alert(this.name +"zai" + this.classroom);
},
updateFont() {
this.meg = "bbb";
}
}
})
function hi() {
item.study();
}
function update() {
item.classroom = "二班";
}
</script>
</html>
入门详解
- Vue 核心对象:每一个 Vue 程序都是从一个 Vue 核心对象开始的
let vm = new Vue({
选项列表;
});- 选项列表
el 选项:用于接收获取到页面中的元素。(根据常用选择器获取)。
data 选项:用于保存当前 Vue 对象中的数据。在视图中声明的变量需要在此处赋值。
methods 选项:用于定义方法。方法可以直接通过对象名调用,this 代表当前 Vue 对象。- 数据绑定
在视图部分获取脚本部分的数据。
{{变量名}}
Vue常见命令
- 指令:是带有 v- 前缀的特殊属性,不同指令具有不同含义。例如 v-html,v-if,v-for。
- 使用指令时,通常编写在标签的属性上,值可以使用 JS 的表达式。
- 常用指令
指令 | 作用 |
---|---|
v-html | 把文本解析为HTML代码 |
v-bind | 为HTML标签绑定属性值 |
v-if v-else v-else-if | 条件性的渲染某元素,判定为true时渲染,否则不渲染 |
v-show | 根据条件展示某元素,区别在于切换的是display属性的值 |
v-for | 列表渲染,遍历容器的元素或者对象的属性 |
v-on | 为HTML标签绑定事件 |
v-model | 在表单元素上创建双向数据绑定 |
文本插值
1.{{}} 插值表达式,不会解析模型中的标签,能够实现内容拼接
<div id="div">
<div>uuuu{{msg}}uuuu</div>
</div>
-
v-text
,不会解析模型中的标签
<div id="div">
<div v-text="msg">xxxx</div> //xxxx会被覆盖掉
</div>
-
v-html
,会解析模型中的标签
<div id="div">
<div v-html="msg">xxxx</div> //xxxx会被覆盖掉
</div>
属性绑定
-
v-bind
:属性名 - :属性名
注意:不要忘记写:,属性名对应的是html原生的属性名
<div id="div">
<a v-bind:href="url">xxxx</a>
<a :href="url">xxxx</a>
<div :class="cls">xxxx</div>
<!--支持三元表达式的写法:针对两个样式去做选择-->
<!--
isborder是一个模型变量,boolean类型的;会根据这个值来选择使用
my还是my1作为该元素的class属性值
-->
<div :class="isborder?'my':'my1'">xxxx</div>
</div>
条件渲染
//真正不渲染
v-if
v-else-if
v-else
//渲染但是不显示
v-show
<div id="div">
<!--页面进来后,一次性的选择显示或不显示-->
<div v-if="isShow">xxxx</div>
<!--页面进来后,要根据状态频繁切换显示或不显示-->
<div v-show="isShow">xxxx</div>
</div>
列表渲染
v-for
:加在要生成的列表标签上的
<ul>
<li v-for="item in items">
{{item}} //遍历到的item是普通数据
</li>
<li v-for="item in items">
{{item.属性名}} //遍历到的item是一个json对象
</li>
<li v-for="(item,index) in items">
{{item}}:遍历到的元素 -- {{index}}:遍历到的元素的索引
</li>
</ul>
事件绑定
- v-on:事件名
- @事件名
注意:这个事件函数要定义在Vue对象的methods中
<div v-on:click="fun1();"></div>
<div @click="fun1();"></div>
v-model 详解
- 双向数据绑定
更新 data 数据,页面中的数据也会更新
更新页面数据,data 数据也会更新- MVVM模型(Model View ViewModel):是 MVC 模式的改进版
在前端页面中,JS 对象表示 Model,页面表示 View,两者做到了最大限度的分离
将 Model 和 View 关联起来的就是 ViewModel,它是桥梁
ViewModel 负责把 Model 的数据同步到 View 显示出来,还负责把 View 修改的数据同步回 Model
Vue异步请求-基于axios实现
-
get请求:注意请求参数传递和响应数据处理
get请求参数只能拼接在URL后面
匿名函数
- 箭头函数
-
post请求:注意请求参数传递和后台获取数据方式
?拼接参数
网友评论