前端进阶:Vue.js

目录

框架:

助解:

框架:

VUE

什么是Vue.js?

Vue.js优点

Vue安装

方式一:直接用<script>引入

方式二:命令行工具

第一个Vue程序

代码

代码解释:

运行

Vue指令

[v-text v-html](#v-text v-html)

v-text

v-html

代码

运行

[v-bind v-on](#v-bind v-on)

v-on

v-bind

代码

运行

v-model

代码

运行

[v-if v-show](#v-if v-show)

v-if

v-show

代码

运行

Vue生命周期

代码

运行


框架:

助解:

现在盖高楼大厦是如何盖的?

钢筋混凝土浇筑框架

然后在框架结构的基础上再次进行装修

框架结构(把很多的基础功能已经实现了,水,电,网线,下水...)

框架:

在语言的基础上,把一些常用的重复出现的功能进行封装,使得开发人员可以更高效的进行开发。

html、css、js

前端框架

js框架(对js进行封装,简化代码方便操作)

UI框架(把一些常用的组件(表单,表格,按钮...)进行封装)

Java后端框架

VUE

什么是Vue.js?

Vue是一个前端js框架,简化js操作,

其中MVVM思想实现数据双向绑定(标签展示和js中的数据),

任意一方发生改变,框架都会自动的更新另一方,

程序员不需要直接操作DOM对象(标签)

Vue.js优点

效率高

生态丰富,学习成本低

vue.js只是对js进行了封装,并不是代替js,基础的语法还是js

Vue安装

方式一:直接用<script>引入

下载Vue.js并导入js文件

<script src = "js/vue.js"></script>

方式二:命令行工具

命令行输入:

$ npm install vue@^2

第一个Vue程序

  1. 导入开发版本的 Vue.js

  2. 创建 Vue 实例对象,设置 el 属性和 data 属性

  3. 使用简洁的模板语法把数据渲染到页面上

代码

javascript 复制代码
 <!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue封装的js文件 -->
		<script src="js/vue.js"></script>
	</head>
	<body>
		
		<div id="app">
		  <!-- 插值表达式  直接可以将data中定义的数据获取-->
		  {{ message }}
		  {{a}}
		  <div>
			{{message}}
		  </div>
		</div>
				
		<script>
			//new Vue 对象
			var app = new Vue({
			  el: '#app',//将id为app的标签与Vue对象进行绑定
			  data: {//data中用来定义与标签进行双向绑定的数据,可以定义多组的
			    message: 'Hello Vue!',
				a:10
			  }
			})
		</script>
	</body>
</html>

代码解释:

1、{{ 变量 }} ,插值表达式获取 data 数据

**2、**new Vue();创建 Vue 对象(VM 对象)

**3、**el:数据挂载的 dom 对象

Vue 会管理 el 选项命中的元素及其内部的后代元素

可以使用其他的选择器,但是建议使用 ID 选择器

可以使用其他的闭合标签,不能使用 HTML 和 BODY

**4、**data:{ message:'hello world'} model 数据

Vue 中用到的数据定义在 data 中

data 中可以写复杂类型的数据,如对象,数组

运行

Vue指令

指令带有前缀 v- 开头,以表示它们是 Vue 提供的特殊属性。

v-text v-html

<P>{{msg}}</P> 插值表达插入变量。不会覆盖

v-text,v-html 会覆盖标签体中的内容

v-text

v-text 会把内容当作文本处理

<p v-text="msg"></p>

v-html

v-html 会把内容当作 html的内容处理,可以解析标签

<p v-html="msg"></P>

代码

javascript 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue封装的js文件 -->
		<script src="js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<P>{{msg}} vue</P>
			<p v-text="msg"></p>
			<p v-html="msg"></p>
		</div>
		
		<script> 
			var app = new Vue({
			  el: '#app', 
			  data: { 
			    msg: '你好!', 
			  }
			})
		</script>
	</body>
</html>

运行

v-bind v-on

v-on

v-on:事件名 为标签添加事件

事件名不需要写 on 指令可以简写为@

v-bind

v-bind:标签属性名="变量" 可以动态的来改变属性的值,只需要在js中改变属性的值即可

作用是为元素绑定属性

完整写法是 v-bind:属性名

简写的话可以直接省略 v-bind,只保留:属性名

代码

javascript 复制代码
​<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue封装的js文件 -->
		<script src="js/vue.js"></script>
		<style type="text/css">
			.imgcss{
				width: 100px;
				height: 100px;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<img v-bind:src="img">
			<img :src="img">
            <!-- 为class属性动态添加取消样式 -->
			<img :src="img" :title="title" v-bind:class="{imgcss:isActive}">
			<input type="button" value="改变1"/ v-on:click="test1()" >
			<input type="button" value="改变2"/ @click="test2('aaaaaa')" >
		</div>
		
		<script> 
			var app = new Vue({
			  el: '#app', 
			  data: { 
				  img:"img/1.jpg",
				  title:"这不是花",
				  isActive:true
			  },
			  methods:{  //定义函数 可以在函数中使用this关键字访问data中的数据改变变量值
				  test1(){
				    this.img = "img/2.jpg";
					this.title = "这是一朵花";
					this.isActive = false;
				  },
				  test2(a){
					this.img = "img/1.jpg";
					this.title = a; 
				    this.isActive = true;
				  }
			  }
			})
		</script>
	</body>
</html>

​

运行

初始态

test1

test2

v-model

v-model="msg" 可以将输入框中value值 与 vue中数据进行绑定

当输入框值发生改变时,会自动的更新到数据中

代码

javascript 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue封装的js文件 -->
		<script src="js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<p>{{msg}}</p>
			<input type="text" v-model="msg"/>
		</div>
		
		<script> 
			var app = new Vue({
			  el: '#app', 
			  data: { 
			    msg: "", 
			  }
			})
		</script>
	</body>
</html>

运行

v-if v-show

v-if v-show 都可以控制标签是否显示或隐藏

v-if

v-if隐藏标签时直接将标签从网页中删除,大量操作开销较大

v-show

v-show隐藏标签时只是改变了标签的display值

代码

javascript 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue封装的js文件 -->
		<script src="js/vue.js"></script>
		</style>
	</head>
	<body> 
		<div id="app">
			<img :src="img" v-if="isShow"/>
            <img :src="img" v-show="isShow"/>
		</div>
		
		<script> 
			var app = new Vue({
			  el: '#app', 
			  data: { 
				  img:"img/1.jpg",
				  isShow:true
			  },
			  methods:{ 
				 
			  }
			})
		</script>
	</body>
</html>

运行

Vue生命周期

每个 Vue 实例在被创建时都要经过一系列的初始化过程------例如,需要设置数 据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时 在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添 加自己的代码的机会。

beforeCreate: function () { console.log('beforeCreatea '); },

created: function () { console.log('createda ' ); },

beforeMount:function(){ console.log('beforeMounta'); },

mounted:function(){ console.log('mounteda'); }

代码

javascript 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue封装的js文件 -->
		<script src="js/vue.js"></script>
		</style>
	</head>
	<body>
		<div id="app">
		</div>
		
		<script> 
			var app = new Vue({
			  el: '#app', 
			  data: {

			  },
			  methods:{  

			  },//vue对象的声明周期钩子函数,在生命周期的每个阶段提供一个函数,供我们执行某些需要的操作
			  beforeCreate() {
			  	console.log("vue对象创建之前")
			  },
			  created() {
			  	console.log("vue对象创建完成")
			  },
			  beforeMount() {
			  	console.log("vue对象与标签绑定之前")
			  },
			  mounted() {
			  	console.log("vue对象与标签绑定之后")//常用的,当vue对象创建成功后,与标签绑定成功后执行我们想要的操作
				                                   //类似于之前的onlood事件
				this.test();								   
			  }
			})
		</script>
	</body>
</html>

运行

相关推荐
F-2H1 小时前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
苹果酱05671 小时前
「Mysql优化大师一」mysql服务性能剖析工具
java·vue.js·spring boot·mysql·课程设计
gqkmiss2 小时前
Chrome 浏览器插件获取网页 iframe 中的 window 对象
前端·chrome·iframe·postmessage·chrome 插件
m0_748247554 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
m0_748255024 小时前
前端常用算法集合
前端·算法
真的很上进5 小时前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html
web130933203985 小时前
vue elementUI form组件动态添加el-form-item并且动态添加rules必填项校验方法
前端·vue.js·elementui
NiNg_1_2345 小时前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
如若1236 小时前
对文件内的文件名生成目录,方便查阅
java·前端·python
滚雪球~6 小时前
npm error code ETIMEDOUT
前端·npm·node.js