Vuejs基础入门
Vue概述
早期前后端分离模式
早期的前后端分离开发模式是这样的:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
table {
width: 600px;
text-align: center;
border-bottom: solid 2px #DDD;
/* 合并边框 */
border-collapse: collapse;
}
td,th {
border-bottom: solid 1px #DDD;
height: 40px;
}
</style>
</head>
<body>
<h3>用户信息</h3>
<table>
<tr>
<th>用户编号</th>
<th>用户姓名</th>
<th>用户性别</th>
<th>用户年龄</th>
</tr>
<tbody id="userBox">
<!-- 这里是动态内容 -->
</tbody>
</table>
<script>
let userArr = [{
userId: 1,
userName: '张三',
userSex: '男',
userAge: 20
}, {
userId: 2,
userName: '李四',
userSex: '女',
userAge: 21
}, {
userId: 3,
userName: '王五',
userSex: '男',
userAge: 22
}]
let userBox = document.getElementById('userBox');
let str = '';
for (let i = 0; i < userArr.length; i++) {
str += '<tr>' +
'<td>' + userArr[i].userId + '</td>' +
'<td>' + userArr[i].userName + '</td>' +
'<td>' + userArr[i].userSex + '</td>' +
'<td>' + userArr[i].userAge + '</td>' +
'</tr>';
}
userBox.innerHTML = str;
</script>
</body>
</html>
以上开发模式的特点是:
1、必须直接操作DOM,动态改变DOM对象的内容与样式。
2、必须要进行大量的字符串拼接,才能拼接出动态内容,然后绑定到视图(html)上。
3、这种绑定方式是单向的。即:使用javascript将动态数据绑定到DOM上,但是用户操作DOM引起的变化,却不能反映到javascript的动态数据上。
MVVM框架
MVVM框架分为三个部分:分别是M(Model,模型层 ),V(View,视图层),VM(ViewModel,V与M连接的桥梁,也可以看作为控制器)
1、M:模型层,主要负责业务数据相关。
2、V:视图层,顾名思义,负责视图相关,细分下来就是html+css层。3、VM:V与M沟通的桥梁,负责监听M或者V的修改,是实现MVVM双向绑定的要点。
MVVM支持双向绑定,意思就是当M层数据进行修改时,VM层会监测到变化,并且通知V层进行相应的修改,反之修改V层则会通知M层数据进行修改,以此也实现了视图与模型层的相互解耦。
Vue简介
Vue.js : 渐进式JavaScript 框架,它就是一个前端MVVM框架。 Vue.js的作者为Evan You(尤雨溪),任职于Google Creative Lab。 Vue的主要特点就和它官网所介绍的那样: 1.简洁 2.轻量 3.快速 4. 数据驱动 5.模块友好 6.组件化。
Vue.js快速入门
安装Vue环境
1、打开此链接:cdn.jsdelivr.net/npm/vue/dis…
Ctrl + S 把vue.js文件保存到本地使用。
2、或者在body标签中加入下面这句话:
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
Hello World程序
样例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<title></title>
</head>
<body>
<div id="app">
{{msg}}
</div>
<script>
//定义全局变量vm
let vm = new Vue({
el: '#app',
data: {
msg: 'Hello World!'
}
});
</script>
</body>
</html>
运行结果:
vue双向数据绑定
样例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<title></title>
</head>
<body>
<div id="app">
<input type="text" v-model="msg" /></br>
<span>{{msg}}</span>
</div>
<script>
new Vue({
el: '#app',
data: {
msg: 'Keafmd'
}
});
</script>
</body>
</html>
效果截图:
可以看到我们操作的view控件数据,直接影响到了我们的vm.data,并且又进一步影响到了页面,这就是Vue的双向数据绑定。整个过程的原理如下图所示:
文本渲染指令
Vue使用了基于HTML的模板语法,允许开发者声明式地将DOM绑定至底层Vue实例的数据。所有Vue的模板都是合法的HTML,所以能被遵循规范的浏览器和HTML解析器解析。
在前面,我们一直使用的是字符串差值的形式渲染文本,但是除此方法之外,vue还提供了其他几种常见的文本渲染方式:
1. v-text:更新元素的innerText
2. v-html:更新元素的innerHTML
样例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<title></title>
</head>
<body>
<div id="app">
<div v-html="msg"></div>
<div v-text="msg"></div>
</div>
<script>
let vm = new Vue({
el: '#app',
data: {
msg:'<p>Keafmd!</p>'
}
});
</script>
</body>
</html>
效果截图:
在Vue中,我们可以使用 { { } } 将数据插入到相应的模板中,这种方法是一种文本插值。 使用这种方法,如果网络慢或者JavaScript出错的话,会将 { { } } 直接渲染到页面中。 值得庆幸的是,Vue还提供了v-text和v-html来渲染文本或元素。这样就避免了将 { { } } 直接渲染到页面中。
属性绑定指令
如果想让html标签中的属性,也能应用Vue中的数据,那么就可以使用vue中常用的属性绑定指令:v-bind
样例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<title></title>
</head>
<body>
<div id="app">
<div v-bind:title="msg">DOM元素属性绑定</div>
<!-- v-bind的简写形式 -->
<div :title="msg">DOM元素属性绑定</div>
</div>
<script>
let vm = new Vue({
el: '#app',
data: {
msg:'Hello World!'
}
});
</script>
</body>
</html>
效果截图:
上面展示的是v-bind的最基本的使用,第一种是完整语法,第二种是缩写方式。
除了将元素的title属性和vue实例的相关字段进行绑定外,还能将其他的属性字段进行绑定,最常见的是对于样式的绑定,即class和style属性。
绑定样式
使用v-bind指令绑定class属性,就可以动态绑定元素样式了。
样例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
.one{
color: red;
}
.two{
color: blue;
}
</style>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<title></title>
</head>
<body>
<div id="app">
<div :class="className">DOM元素的样式绑定</div>
</div>
<script>
let vm = new Vue({
el: '#app',
data: {
className:'one'
}
});
</script>
</body>
</html>
效果截图:
通过:className:‘one’ 来绑定one class属性,使颜色修改为red
使用对象语法绑定样式
我们可以给v-bind:class 一个对象,也可以直接绑定数据里的一个对象,以动态地切换class。
样例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<style>
.one{
color: red;
}
.two{
font-size: 48px;
}
</style>
</head>
<body>
<div id="app">
<div :class="{one:oneActive,two:twoActive}">DOM元素的样式绑定1</div>
<div :class="{one:false,two:true}">DOM元素的样式绑定2</div>
</div>
<script>
let vm = new Vue({
el: '#app',
data: {
oneActive:true,
twoActive:false
}
});
</script>
</body>
</html>
效果截图:
我们可以通过绑定数据里的一个对象来实现切换,也可以直接写true或者false来控制。
使用三目运算绑定样式
可以使用三目运算符,来动态绑定样式。
样例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<style>
.one{
color: red;
}
</style>
<title></title>
</head>
<body>
<div id="app">
<div :class="userId==1 ? className : '' ">DOM元素的样式绑定</div>
<div :class="userId==2 ? className : '' ">DOM元素的样式绑定</div>
</div>
<script>
let vm = new Vue({
el: '#app',
data: {
userId:1,
className:'one'
}
});
</script>
</body>
</html>
效果截图:
直接绑定内联样式
也可以直接绑定内联样式。
样例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<div style="color:red;font-size: 50px;">DOM元素的样式绑定1</div>
<div :style="{color:colorValue,fontSize:fontSizeValue}">DOM元素的样式绑定2</div>
<div :style="stylelist">DOM元素的样式绑定3</div>
</div>
<script>
let vm = new Vue({
el: '#app',
data: {
colorValue: 'green',
fontSizeValue: '60px',
stylelist: 'color:red'
}
});
</script>
</body>
</html>
效果截图:
注意:绑定style属性后,样式的书写要遵循javaScript规范。 也就是将 xxx-xxx 改写成驼峰命名方式 xxxXxxx
看完如果对你有帮助,感谢点赞支持!
如果你是电脑端的话,看到右下角的 “一键三连” 了吗,没错点它[哈哈]
加油!
共同努力!
Keafmd