前端进阶:Vue.js

news2024/9/20 5:44:39

目录

框架:

助解:

框架:

VUE

什么是Vue.js?

Vue.js优点

Vue安装

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

方式二:命令行工具

第一个Vue程序

代码

代码解释: 

运行

Vue指令

v-text  v-html

v-text

v-html

代码

运行

v-bind   v-on

v-on

v-bind

代码

运行

v-model

代码

运行

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. 使用简洁的模板语法把数据渲染到页面上

代码

 <!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>

代码

<!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,只保留:属性名

代码

​<!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中数据进行绑定
当输入框值发生改变时,会自动的更新到数据中

代码

<!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值

代码

<!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’); }

代码

<!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>

运行

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1888572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑版微信自动发送微信消息给好友或者群聊

一.软件下载 点击微信自动发送消息下载 二.相关使用方法 1.打开软件&#xff0c;输入想自动发送的内容 2.确保登录了微信电脑版【PC端】&#xff0c;然后切换到想要自动发送的好友或群聊的窗口。 3.点击开始&#xff0c;现在自动发送即可&#xff0c;稍等三秒程序自动运行。 …

# Sharding-JDBC从入门到精通(6)-- Sharding-JDBC 水平分库 和 垂直分库。

Sharding-JDBC从入门到精通&#xff08;6&#xff09;-- Sharding-JDBC 水平分库 和 垂直分库。 一、Sharding-JDBC 水平分库-分片策略配置 1、分库策略定义方式如下 # 分库策略&#xff0c;如何将一个逻辑表映射到多个数据源 spring.shardingsphere.sharding.tables.<逻…

法制史学习笔记(个人向) Part.3

5. 三国两晋南北朝法律制度 以下为三国魏晋南北朝直到唐代的历史发展脉络图&#xff1a; #mermaid-svg-6AVVMjllKTBaBbRO {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6AVVMjllKTBaBbRO .error-icon{fill:#55222…

Meta 3D Gen:文生 3D 模型

是由 Meta 公布的一个利用 Meta AssetGen&#xff08;模型生成&#xff09;和 TextureGen&#xff08;贴图材质生成&#xff09;的组合 AI 系统&#xff0c;可以在分分钟内生成高质量 3D 模型和高分辨率贴图纹理。 视频演示的效果非常好&#xff0c;目前只有论文&#xff0c;期…

2.(vue3.x+vite)调用iframe的方法(vue编码)

1、效果预览 2.编写代码 (1)主页面 <template><div><button @click="sendMessage">调用iframe,并发送信息

记录前端发现问题之 mock接口无返回数据导致所有后续接口调用报错:网络异常

1. 背景 就更新了代码&#xff0c;发现新涉及的页面&#xff0c;切换tab 之后会报错网络异常&#xff0c;再次切换其他没涉及的功能页面&#xff0c;继续报错网络异常 测试环境&#xff1a;纯前端代码&#xff0c;后端是前端mock的数据&#xff0c;仅供demo 2. 问题报错 手动…

华为 eNSP 模拟器 配置RIP实例 动态路由协议

1 实验拓扑 2 配置路由器 #R1 Huawei>sys [Huawei]sysname R1 [R1]interface GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.0 [R1-GigabitEthernet0/0/0]qu [R1]rip [R1-rip-1]network 192.168.1.0 [R1-rip-1]version 2 [R1-rip-…

05 docker 镜像

目录 1. 镜像 2. 联合文件系统 3. docker镜像加载原理 4. 镜像分层 镜像分层的优势 5. 容器层 1. 镜像 镜像是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好行程一个可交付的运行环境&#xf…

深入浅出:npm常用命令详解与实践【保姆级教程】

大家好,我是CodeQi! 在我刚开始学习前端开发的时候,有一件事情让我特别头疼:管理和安装各种各样的依赖包。 那时候,我还不知道 npm 的存在,手动下载和管理这些库简直是噩梦。 后来,我终于接触到了 npm(Node Package Manager),它不仅帮我解决了依赖管理问题,还让我…

Apache Ranger 2.4.0 安装部署

1、安装ranger admin 2、源码编译Ranger wget https://www.apache.org/dist/ranger/2.4.0/apache-ranger-2.4.0.tar.gz tar zxvf apache-ranger-2.4.0.tar.gz cd apache-ranger-2.4.0 mvn -Pall clean mvn clean package -DskipTests maven settting可以设置阿里云进行资源下载…

北斗/GPS模块输出的NMEA语句详解

NMEA协议采用 ASCII 码来传递 GPS 定位信息&#xff0c;我们称之为帧。 帧格式形如&#xff1a;$aaccc,ddd,ddd,…,ddd*hh(CR)(LF) 1、“$”&#xff1a;帧命令起始位 2、aaccc&#xff1a;地址域&#xff0c;前两位为识别符&#xff08;aa&#xff09;&#xff0c;后三位为…

Email OTP验证认证接口和API发送邮件平台?

Email OTP验证认证接口如何设计&#xff1f;邮件发送平台怎么选&#xff1f; Email OTP验证认证接口和API发送邮件平台为实现这一目标提供了有效的解决方案。AokSend将深入探讨Email OTP验证认证接口及API发送邮件平台的关键功能和优势。 Email OTP&#xff1a;工作原理 用户…

vue3 在el-input的光标处插入文本

点击文本框下方的按钮&#xff0c;将相应的文本插入光标处的实现&#xff1a; <el-input type"textarea" rows"4" v-model"formula" blur"handleBlur" clearable></el-input><el-button-group class"short_btn&q…

解决“Undefined control sequence. \hline”

解决“Undefined control sequence. \hline” Q:创建表格时显示错误“Undefined control sequence. \Xhline”A:解决方法C介绍\usepackage{makecell}作用使用方法示例其他功能总结 Q:创建表格时显示错误“Undefined control sequence. \Xhline” MTMAGVDPP.tex: 错误: 211: Un…

R语言学习与笔记2-RRStudio环境配置(Windows版)

R语言学习与笔记2-R&RStudio环境配置&#xff08;Windows版&#xff09; 安装 R安装RStudio修改默认工作目录修改镜像验证镜像源修改文件编码 环境测试 安装 R R下载地址&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/base/ 点击下载链接并运行安装…

互联网医院系统源码解析:如何打造智能数字药店APP?

在互联网技术飞速发展的今天&#xff0c;医疗行业也在不断与之融合&#xff0c;互联网医院系统应运而生。特别是智能数字药店APP的兴起&#xff0c;使得医疗服务变得更加便捷、高效。本文将深入解析互联网医院系统源码&#xff0c;探讨如何打造一个智能的数字药店APP。 一、互…

聚焦 Navicat 17 新特性 | 让用户界面交互更丝滑

随着 Navicat 17 的发布&#xff0c;引起业界热烈反响和深入讨论。早前&#xff0c;我们介绍了 Navicat 17 《模型设计创新与优化​​​​​​​》与《查询与配置》的新特性。此外&#xff0c;Navicat 在用户界面交互方面进行了显著优化&#xff0c;新增了一系列实用的功能&…

springboot高校在线健康咨询服务APP-计算机毕业设计源码86100

摘要 随着信息技术的快速发展和智能手机的普及&#xff0c;移动互联网已经成为现代人生活中不可或缺的一部分。在这一背景下&#xff0c;高校在线健康咨询服务APP应运而生&#xff0c;旨在为广大高校师生提供更加便捷、高效、个性化的健康咨询服务。 高校作为人才培养的摇篮&am…

【硬件模块】SGP30气体传感器

SGP30 这是SGP30官方文档里开头的介绍&#xff0c;简单来说就是SGP30是一个数字多像素气体传感器&#xff0c;然后具有长期稳定性和低漂移。 这些我们都不用管&#xff0c;我们只需要知道SGP30是通过I2C来通信的&#xff0c;并且可以采集的数据有CO2和TVOC的含量。TVOC是“To…

记一次android打包,因路由规则设置不合理而导致pom文件无法访问的错误

一、错误详情 FAILURE: Build failed with an exception.* What went wrong: Could not determine the dependencies of task :mediaplayer:compileReleaseAidl. > Could not resolve all task dependencies for configuration :mediaplayer:releaseCompileClasspath.> C…