Vue初步入门-01

       已了解关于 HTML、CSS 和 JavaScript 的中级知识。如果你刚开始学习前端开发,将框架作为你的第一步可能不是最好的主意——掌握好基础知识再来吧! 

       官方文档https://cn.vuejs.org/guide/introduction.html

什么是 Vue?

Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。

响应的数据绑定

        Vue.js 的核心是一个响应的数据绑定系统,它让数据与 DOM 保持同步非常简单。在使用 jQuery 手工操作 DOM 时,我们的代码常常是命令式的、重复的与易错的。Vue.js 拥抱数据驱动的视图概念。通俗地讲,它意味着我们在普通 HTML 模板中使用特殊的语法将 DOM “绑定”到底层数据。一旦创建了绑定,DOM 将与数据保持同步。每当修改了数据,DOM 便相应地更新。这样我们应用中的逻辑就几乎都是直接修改数据了,不必与 DOM 更新搅在一起。这让我们的代码更容易撰写、理解与维护。

MVVM模式
     MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当下流行的MVVM框架有:Vue.js、AngularJS。

MVVM即模型-视图-视图模型。模型指的是后端传递的数据;视图指的是所看到的页面。视图模型是mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将模型转化成视图,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将视图转化成模型,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定

Vue的基本使用

     我们目前刚接触Vue,我们先从最简单的方式html来理解Vue,我们只做入门案例

 首先创建一个html页面,这里使用HBuilder、idea、vscode等只要能编写html的app都可以,我们的准备工作就是引入我们的vue的资源,因为我们使用jquery的时候还需要引入一个jquery的资源,vue的话也是一样的

  线上:这里注意,可能你的代码加载完毕了,你的vue还没有加载过来,所以需要网络比较好

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>

 线下的需要自己下载,需要的可以私信我,

……

接下来我们就开始真正的到了代码环节

  每个 Vue 应用都是通过 createApp 函数创建一个新的 应用实例,这里我们创建了之后,他就是一个实例对象,你可以说他是个 Vue 实例或 "ViewModel",是连接 View 与 Model的桥梁,因为Vue是我们的MVVM模式的

   应用实例必须在调用了 .mount() 方法后才会渲染出来。该方法接收一个“容器”参数,可以是一个实际的 DOM 元素或是一个 CSS 选择器字符串

  意思就是让我们的vue的实例对象,连接到我们的div这个容器,并且是通过这个实例来展示页面的,它并不是一个单纯的html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
	</head>
	<body>
		<div id="app">
		</div>
		<script>
			//创建一个vue实例
			const app=Vue.createApp()
			//将vue实例挂载到id为app的容器上
			//如果不挂载,视图不会被渲染
		  app.mount("#app")
	

		</script>
	</body>
</html>

       那我们的数据 Model层在哪呢,我们已经有 视图层 和 视图模型层,MVVM 还差一个Model层,它存在与我们的实例当中,一般来说是请求后端发送到前端,我们的model层是有讲究的,data是我们的数据,是需要使用函数来完成的 data(){} 而它返回的我们可以看见是一个json对象

       这里很好的解释了我们的MVVM架构,我们的vue实例对象是我们的VM,它负责当作M层与V层的桥梁,他们两个层都要经过我们的VM,Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统,比如我们的{{}}语法,可以将数据直接渲染上

      <div id="app">
			{{name}}
		</div>
		<script>
			//创建一个vue实例
			const app=Vue.createApp({
          //函数
			data(){
				return {
					name:"test"
				}
			}
	 })
			//将vue实例挂载到id为app的容器上
			//如果不挂载,视图不会被渲染
		app.mount("#app")
		</script>

接下来我们来了解一下{{}}语法

{{}}语法

    这里我们定义了两个数据,一个是count值是0,在我们将数据渲染的时候,我们对他进行了加+1,

第二个我们定义了一个boolean值 true,数据渲染的时候我们进行了三目运算符,意思就是,flag取反就是会显示false,如果是true,就显示第一个,否则显示第二个

     <div id="app">
			{{count+1}} {{!flag?"true":"false"}}
		</div>
		<script>
			//创建一个vue实例
			const app=Vue.createApp({
			data(){
				return {
					count:0,
                    flag:true
				}
			}
	 })
			//将vue实例挂载到id为app的容器上
			//如果不挂载,视图不会被渲染
		 app.mount("#app")

 Vue的方法

    我们的方法也是需要放入到我们的VM层(Vue实例对象),因为它像是中间的一个桥梁,而如果要定义方法,在这里方法算是一个属性 ,methods:{}

注意:别写在data函数里,或者少括号什么的

    ​​​​​我们有三种方式可以定义方法,这里我们最常用的就是第一种

 methods: {
				 //函数的声明方式一
			 	add(){
			 		console.log("这是一个添加",this)
			 	},
				//函数的声明方式二
				upd:function(){
					console.log("这是一个修改",this)
				},
				//函数的声明方式三
				//在methods不推荐使用
				del:()=>{
					console.log("这是一个删除",this)
				}
			 }

 第三种是不推荐的,因为当我们使用this关键字的时候,它指向的往往不是当前这个对象,也就是Vue的实例对象,我们可以调用测试一下,我们通过

	//将vue实例挂载到id为app的容器上
			//如果不挂载,视图不会被渲染
		 const vm=app.mount("#app")
		 vm.add();
		 vm.upd();
		 vm.del();

效果,我们的前两个方法中的this是响应对象,而我们第三种是window是这个页面

Vue的基础指令 

v-html,v-text

 v-html 的内容直接作为普通 HTML 插入—— Vue 模板语法是不会被解析的,它就相当于更新元素的 innerHTML。

 v-text 通过设置元素的 textContent 属性来工作,因此它将覆盖元素中所有现有的内容。它就相当于innerText

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
	</head>
	<body>
		<div id="app">

			<span v-html="txt"></span><br>
			<span v-text="txt"></span>
		</div>
		<script>
			const app=Vue.createApp({
			data(){
				return {
					txt:"<a href='https://www.baidu.com'>点我</a>"
				}
			}
	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

我们可以看到,我们使用的v-html指令,可以将我们的html标签识别到,而v-text指令,只能传入文本,是不能被转成html标签

v-bind 

        bind就有绑定的意思,可以将一个标签给他绑定一个属性,我们直接上代码,我们给他绑定一个属性,可以动态的给他一个样式,在class加上我们的v-bind会识别出我们的myclass的值,从而给他添加样式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
		<style>
			.aaa{
				color:red
			}
			#bbb{
				color:green
			}
		</style>
	</head>
	<body>
		<div id="app">
			<!--绑定指令-->
			<span v-bind:class="myclass">牛二</span>
			<!--简写-->
			<span :id="myid">牛一</span>
		</div>
		<script>
			const app=Vue.createApp({
			data(){
				return {
					myclass:"aaa",
					myid:"bbb",
				}
			}

	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

v-if,v-show

       首先 v-if大家应该都知道if是什么意思,没错!就是如果,我们的指令都是在html标签写的,所以我们要理解这个指令其实很简单,如果vip这个数据的值是1就显示普通会员,如果vip这个数据的值是2就显示中级会员,如果条件成立,其他的没有满足标签的会被移除

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
	</head>
	<body>
		<div id="app">
			<!--v-if指令没有满足的标签会被移除,很好保护我们的数据-->
			<span v-if="vip==1">普通会员</span>
			<span v-else-if="vip==2">中级会员</span>
			<span v-else-if="vip==3">高级会员</span>
			<span v-else>穷逼</span>

		</div>
		<script>
			const app=Vue.createApp({
			data(){
				return {
					vip:3,
				}
			}

	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

我们可以看到条件不成立的span标签是直接被销毁掉的

 而v-show就不一样了我们可以测试一下还是刚才的方式,我们这里的条件是不成立的,因为我们vip的值是4,如果vip的值是3的话会展示

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
	</head>
	<body>
		<div id="app">
			<span v-show="vip==3">高级会员</span>
		</div>
		<script>
			const app=Vue.createApp({
			data(){
				return {
					vip:4,
				}
			}

	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

我们的条件没有满足,但是还是会在控制台显示,是隐藏起来的,这就是v-if和v-show的区别

v-for 

           这里我们的数据返回了一个数组,数组内包含着几个json对象,另一个只返回一个json对象,第一个我们使用无序列表进行对数组循环 v-for  ,括号内第一个student是我们遍历出来的每一个json对象,i是我们遍历的每一个索引,当然我们可以不要索引,直接使用 student in students就可以

       而如果是要遍历三个的话,第一个就是我们的值,第二个是key,第三个是我们的下标,一般来说,只需要遍历出值就可以,不需要key和下标

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
		
	</head>
	<body>
		<div id="app">

			<ul>
				<li v-for="(student,i) in students">
					 {{student.name}}===={{i}}
				</li>
			</ul>
			<ol>
				<li v-for="(val,key,index) in person">
					{{val}}====={{key}}====={{index}}
				</li>
			</ol>
		</div>
		<script>
			const app=Vue.createApp({
				data(){
					return{
						students:[
							{name:"小美",age:12,sex:"男"},
							{name:"小帅",age:12,sex:"男"},
							{name:"小明",age:12,sex:"男"},
						],
						person:{
							name:"niuer",
							age:21,
							sex:"男"
						}
					}
				},
		
			})
			app.mount("#app")
		</script>
	</body>
</html>

  • 45
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值