系列博客专栏:
- JVM系列博客专栏
- SpringBoot系列博客
实验环境
-
npm v10.8.1
-
node v20.16.0
-
vue.js v3.4.37
-
VSCODE 1.88.1
什么是Vue.js
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。Vue.js 是一套构建用户界面的框架,只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。在Vue中,一个核心的概念,就是让用户不再操作DOM元素,让程序员有更多时间关注业务逻辑。
什么是MVVM
- MVC 是后端的分层开发概念;
- MVVM是前端视图层的概念,分为了 三部分 Model, View , VM ViewModel
- Model(模型):代表应用程序的数据和业务逻辑
- Vie(视图):用户解密,用于数据的显示
- ViewModel(视图模型):连接Model和view的桥梁,负责将Model的数据转换为View可以显示的格式,并处理View的事件,更新Model
双向数据绑定:Model的数据变化会自动更新View,同时View的变化也会自动更新Model
来自https://zh.wikipedia.org/wiki/MVVM的图例:
Vue.js示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1.引入Vue的依赖-->
<script src="https://cdn.jsdelivr.net/npm/vue@3"></script>
</head>
<body>
<!--2.创建一个页面元素 div 就是MVVM中的 V-->
<div id="app">
<p>{{msg}}</p>
</div>
<script>
// MVVM M VM V
// 3.创建一个Vue实例
// 当我们new了一个Vue 对象 其实就是创建了 MVVM 中的 VM调度者
var vm = new Vue({
el:"#app" // 表示我们当前创建的Vue对象要控制的页面的区域 关联MVVM中的 V
,data:{ // data中的属性,存放的就是 el 中需要用到的数据
msg:"Vue的入门案例"
}
})
</script>
</body>
</html>
常用指令
指令 | 描述 |
---|---|
{{}} | 插值表达式 |
v-cloak | 这个命令通常与css配合使用,用于在 Vue 实例加载和编译之前隐藏元素。可以用于解决 插值表达式闪烁的问题 |
v-text | 和插值一样也是使用vue中的变量,但是默认没有闪缩问题,但是会覆盖原本的内容,插值不会 |
v-html | 显示HTML的内容 |
v-bind | Vue提供的属性绑定机制,缩写是 ‘:’ |
v-on | Vue提供的事件绑定机制,缩写是:‘@’ |
插值表达式
在html页面中,我们获取vue中的数据,可以通过插值表达式来获取
<div id="app">
<!-- 插值表达式获取vue中的msg信息 -->
<p>{{ msg }}</p>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
msg: 'Vue'
}
})
</script>
注意,插值表达式有闪烁的问题,就是在刚开始加载页面时候会先闪烁显示{{msg}}
而不是具体的内容,不过在最新版本好像修复了,没模拟出来
v-cloak
v-cloak指令可以解决上面插值闪烁的问题,其实也是利用css的一些属性,将内容给隐藏
<style>
[v-cloak] {
display: none;
}
</style>
v-text
v-text
会覆盖掉原有的内容,但是 插值表达式 只会替换自己的这个占位符,不会把 整个元素的内容清空
<div id="app">
<p>*** {{msg}} *** </p>
<p v-text="msg">*******</p>
</div>
v-html
从Vue对象中获取的信息如果含有HTML标签的话,可以使用v-html
指令来显示
v-bind
v-bind
是用于绑定属性的指令,可简写为":",属性中的内容其实写的是js表达式
<div id="app">
<input type="button" value="提交1" title="提交按钮"><br>
<input type="button" value="提交2" v-bind:title="title">
<input type="button" value="提交2" :title="title">
<!-- v-bind 中,可以写合法的JS表达式-->
<input type="button" value="提交2" :title="title + ' aaa'">
</div>
<script>
var vm = new Vue({
el:"#app",
data:{
title:"测试title"
}
})
</script>
v-on
Vue 中提供了 v-on: 事件绑定机制,具体使用
<div id="app">
<input type="button" value="点击" v-on:click="show">
<!--缩写用 @-->
<input type="button" value="点击" @click="show">
</div>
<script>
var vm = new Vue({
el:"#app",
data:{
msg:"<h3>hello vue</h3>"
},
methods:{
show:function(){
alert('hello')
}
}
})
</script>