VUE 常用指令

目录

Vue概念

同类产品

官网

特点

渐进式框架

入门案例.html

改造入门案例.html

MVVM框架

基础语法

运算符 operator

方法 methods

Vue解析数据

三种data值的写法

高级用法:v-命令

指令集

双向绑定 v-model

闪现 v-cloak

判断 v-if

v-else-if

循环 v-for

事件 v-on

绑定 v-bind

v-html

v-text

小结

Vue组件

概述

使用

测试

Vue的Ajax

Ajax概述

Ajax原理

axios

测试

常见错误

Vue路由

概述

使用步骤

入门案例

扩展:

观察者设计模式

HBuilderX自定义模板

vue模板.txt

创建新文件调用模板


Vue概念


同类产品


JavaScript在1995年由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。近年来发展非常迅速,标准也在不断完善已经达到ES6时代。

ECMAScript 6.0(简称 ES6)是JavaScript语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标是让JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言,洗白其一直被"鄙视"的脚本语言的前身。
在这里插入图片描述

随着js的强大,三大巨头横空推出,形成鼎足之势。前端新三大框架:Angular/React/Vue,三种是目前主流js框架。国外企业多用React,国内企业多用Vue。

Vue是我们国人开发的,作者:尤雨溪,是一个基于JavaScript的渐进式前端框架,更符合中国人习惯,在中国很多大型一线企业中广泛应用。

Vue3.0使用TypeScript编写,TypeScript是JavaScript的超集,微软研发,语法更加细致严谨,改js脚本语言为向一线强语言java、c靠拢,可以构建大型项目,基于ES6标准。

官网


https://cn.vuejs.org/ #官网

https://cdn.jsdelivr.net/npm/vue/dist/vue.js #下载最新版本
 

特点


一个轻量级的mvvm框架,双向绑定,数据动态更新,gzip后大小只有20k+
是一个渐进式框架,其核心思想是数据驱动、组件化的前端开发
原生html页面是通过js 操作的是dom,而vue.js操作的是数据。
和传统前端开发开发的关注点完全不同,传统方式关注的是都像的document结构的api,而vue关注的是数据。
优点显而易见,从而屏蔽了使用复杂晦涩难记的dom结构api。


渐进式框架

Vue是一个用于构建用户界面的渐进式 SPA ( Single-Page Applications )**单一页面框架。与其它庞大而单一框架不同的是,Vue从一开始就被设计为按需搭建。

可以只使用核心vue.js
可以只使用核心vue.js + components组件
可以只使用核心vue.js + components组件 + router路由
可以只使用核心vue.js + components组件 + router路由 + vuex状态管理
构建大型vue项目:npm(包依赖) + webpack(打包、压缩、合并等)
 

在这里插入图片描述 

 

入门案例.html

开发步骤:导入vue.js文件、准备数据渲染区、创建Vue对象




	
	vue
	
	
	
	


	
	
{{msg}}
{{msg}}

改造入门案例.html

上面的案例是传统写法,并不是Vue的真面目,下面就看看真正的vue怎么写?



	
		
		vue
		
		
		
	
	
		
		
{{msg}}

MVVM框架

请添加图片描述

上面看似结构非常简单,其实却深藏奥秘。和传统框架不同,Vue采用了最新的MVVM框架,它最大的特点就是:传统js机制操作的是页面,如我们之前写的html+css+js案例,大家会发现页面和页面里的数据混杂在一起。

而MVVM框架体系引入后端早已深入人心的分层思想,是后端MVC框架的延伸,实现把数据和页面分离。我们可以在页面布局好后,只对数据进行操作,当数据改变,页面上的内容会自动随之改变,而无需开发者开发专门的代码去改变,如之前ajax技术实现的局部刷新。

简而言之,MVVM框架实现了页面和数据的分离,代码结构更加清晰,责任更加明确,同时实现自动化,数据变化,页面随之变化,无需写代码,非常棒的一个改进。这是javascript、jquery、bootstrap等无法做到的,也是前端为何开始推崇Vue这些框架的根本原因,也标示着jquery的终结。


在这里插入图片描述

 

基础语法

运算符 operator

 



	
		
		vue的运算符
		
		
		
	
	
		

加法:{{2+3}}

减法:{{2-3}}

乘法:{{2*3}}

除法:{{3/2}}

取余:{{10%2}}

三元表达式: {{age>10?'yes':'no'}}

字符串操作:

{{str}} {{str.length}} {{str.concat(1000)}} {{str.substr(3)}}

方法 methods



	
		
		vue数据的写法
	
		
		
	
	
		
按钮1: 按钮2:

vue调用无参函数:{{ show() }}

vue调用含参函数:{{ sysout(100) }}

注意:

  • 方法必须写在methods代码段中
  • 方法体中访问数据代码段中声 明的变量,前面加this
  • 方法和属性声明方式的差异在于 function(){}
  • 方法和属性调用的差异是 {{msg}} {{sayHello()}},名称后加小括号

Vue解析数据



	
		
		hello vue
		
		
		
		
	
	
		

vue解析变量:{{str}} {{str.length}} {{str.replace('l','666')}} {{str.concat(123)}} {{num}} {{num+10}} {{num/3}} {{num%4}} {{num>5?1:0}} {{num--}}

vue解析对象:{{p.name}} {{p.age}}

vue解析数组:{{arrays[1].name}} {{arrays[0].age}}

vue调用函数的语法:{{sout()}}

三种data值的写法



	
		
		vue里data的三种写法
		
		
	
	
		
{{msg}}

高级用法:v-命令

指令集

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

指令用于在表达式的值改变时,将某些行为应用到 DOM 上。

常见的Vue指令:v-if v-for v-on v-bind v-model v-cloak等

双向绑定 v-model


通过指令v-model,实现双向绑定,修改一方同时修改相同的另一方,达到数据同时更新。MVVM是将"数据模型双向绑定"的思想作为核心,在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此View视图的数据的变化会同时修改Model数据源,而Model数据源数据的变化也会立即反应到View视图上。
 

在这里插入图片描述

 



	
		
		
		
	
	
			

{{address}}

{{address}}

{{address}}

{{address}}

{{address}}
{{address}}

闪现 v-cloak

F12打开Chrome的调试窗口,选中NetWork,在选择Slow3G,观察问题。

遇到插值表达式加载时闪烁对用户不好的现象,那怎么解决呢?

  • 在标签中增加指令:v-cloak
  • 增加style标签,[v-cloak]属性选择器,设置先不展示display:none;

实现在页面未渲染完成时先隐藏标签,渲染完成后在展示,这样就解决了闪烁问题



	
		
		
		
		
	
	
		

判断 v-if

v-if指令将根据表达式 seen 的值( true 或 false )来决定是否插入 p 元素



	
		
		vue数据的写法
	
		
	
	
	
		

成年人

未成年人

金领

白领

屌丝

成年人

Tip: 什么时候用 v-if ,什么时候用v-show?

v-show靠页面的样式进行控制,未显示但内容已在页面上,而v-if内容是不在的

v-if判断是否加载,可以减轻服务器的压力,但在需要时加载有更高的切换开销;v-show调整DOM元素的CSS的dispaly属性,可以使客户端操作更加流畅,但有更高的初始渲染开销。如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

v-else-if

v-else-if专门和v-if搭配使用,控制多个元素多选一显示的特殊的指令。其基本语法为:

注意,v-if和v-else-if和v-else之间必须连着写,不能插入其他元素。

示例关键代码如下:

优秀 良好 及格 及格

 

  
 

循环 v-for

v-for 指令可以绑定数组的数据来渲染一个项目列表



	
		
		vue数据的写法
	
		
		
	
	
		

地址:{{address}}

姓名:{{name}}

年龄:{{age}}

爱好:{{hobby}} , 个数:{{hobby.length}}

数组的第一个元素:{{hobby[0]}}

数组的第最后一个元素:{{hobby[2]}}

{{o}}

下标是:{{i}}---数据是:{{o}}

下标是:{{i}}---数据是:{{o}}

事件 v-on

@click为v-on:click的缩写



	
		
		
		
	
	
		

{{count}}

绑定 v-bind

当属性的值是变量而不是字符串时,通过v-bind进行标识,vue会自动处理

  • 全称: v-bind:href
  • 简称: :href 冒号开头就说明后面跟的是变量


	
		
		
		
	
	
		
	
	


 

v-html

如果{{}}绑定的是一段HTML片段时,是不会交给浏览器解析的。而是原样显示HTML片段的内容——和DOM中的textContent是一样的,假如希望html可被解析可以使用v-html代替{{}}。其基本语法结构为:

<元素 v-html="变量"> 这个位置显示变量内容

 

{{msg}}

 

  

v-text

v-text是可代替{{}}绑定元素内容的特殊指令,用于设置元素内部的文本内容,而且可以防止因网络延迟短暂显示{{}}的现象。其语法为:

<元素 v-text="变量或js表达式"> 

示例关键代码如下:

 

  

  

 

小结


可以看到Vue这类为何称为框架,名副其实,当之无愧。写javaScript时,我们要先去学习其复杂的api(document.getElementById()),写jQuery时,又学一套复杂的api(一堆的选择器),特别它的写法虽然简洁,却晦涩难懂,需要死记大量英文单词,初学者极易写错,门槛很高,就现在很多企业的程序员依然被绊倒,说不明白,讲不清楚,使用中bug满天飞,一堆糊涂虫。

而Vue框架结构搭建好,就剩下修改数据和展示数据,而其结构非常简单,一看就会,如调用信息{undefined{message}},就是这么豪横,还等什么,快速拥抱它吧。
 

Vue组件

概述

组件(Component)是 Vue.js 最强大的功能之一。
组件可以扩展 HTML 元素,封装可重用的代码。
组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树

使用


注册一个全局组件(所有实例都能用)语法格式如下:
Vue.component(tagName, options)
tagName 为组件名,options 为配置选项。注册后,我们可以使用以下方式来调用组件:
也可以注册一个局部组件(只能在这个实例中使用)

测试



	
		
		
		
		
	
	
		

Vue的Ajax

Ajax概述

Ajax 即Asynchronous Javascript And XML( 异步的 )
Ajax并不是一种新的编程语言,而是多种技术的综合应用
Ajax是 客户端 的技术,它可以实现 局部刷新 网页
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

Ajax原理

AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

在这里插入图片描述

axios

1, Vue中封装了ajax并增强了它,在异步并发处理优于原生ajax。称为:axios(ajax input output system)
2, 使用步骤: 要使用一个单独的js文件,注意导入顺序



3, 语法

 

axios.get("url地址信息","参数信息").then(res=>{
	console.log(res.data);
})

测试

引入js支持:从课前资料找axios.min.js文件,复制到js目录下



	
		
		ajax
		
		
		
		
	
	
		

{{info}}

Tip :axios请求头的 Content-Type 默认是 application/json,而postman默认的是 application/x-www-form-urlencoded。

ajax/postman一般采用@RequestParam接收参数:

@ResponseBody

public Result testpost(@RequestParam String username) {}

axiso采用@RequestBody的json方式接收参数

@ResponseBody

public Result testget(@RequestBody Map map) {}

常见错误

注意:浏览时必须用服务模式浏览,否则报跨域错误

在这里插入图片描述

Vue路由

概述

说明: 用户发起一个请求,在互联网中经过多个站点的跳转.最终获取服务器端的数据. 把互联网中网络的链路称之为路由. (网络用语)
VUE中的路由: 根据用户的请求URL地址,展现特定的组件(页面)信息. (控制用户程序跳转过程)

使用步骤




入门案例



	
		
		router
		
		
		
	
	
		
主页 帮助页

扩展:

观察者设计模式

设计模式是最精髓的东西,是软件思想的体现,是软件的灵魂。如三大框架SSM只所以傲视群雄,它的傲娇,它的底气就来自对经典设计模式的全面应用。所以如果只会应用不懂其义,那你只是个码农;如何能领会设计模式的奥义,你就有了高级程序员的潜力;如果你能自己仿写,你就有了架构师的入门证。

Vue这类为何称之为框架,就是其不是简单的编程,而是应用了经典的设计模式,那它应用了什么什么模式呢?它应用了"观察者设计模式"。

那什么是观察者设计模式呢?

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个目标对象,当这个目标对象的状态发生变化时,会通知所有观察者对象,使它们能够自动更新。

在这里插入图片描述

1.页面data中的address就是数据,get为获取当前数据,set为设置数据新值
2.观察者watcher就为那多个插值表达式和input文本框,在页面加载时这些关系进行绑定
3.当我们让数据变化时,如input文本框修改内容,其就调用数据的set的方法,把数据进行更新,4.其更新就被vue框架通知notify众多的观察者。如众多的插值表达式就会触发trigger,进行再次渲5.染re-render,修改虚拟dom树。最终vue框架局部宣传页面
6.同样,当我们利用谷歌浏览器改变数据v.address赋值时,就调用数据的setter方法进行数据更新,数据更新后,通知众多的观察者,观察者更新如上面的流程


可以看出Vue设计非常巧妙,我们页面展现的数据,必然会涉及到数据的读写,于是Vue实现了一整套机制,这套机制监控数据的获取(get),数据的更新(set),这样当数据变化,Vue就能知道。它知道有什么用呢?它就能控制当数据变化时就能重新进行页面的渲染,从而用户看到页面展现新的内容
 

HBuilderX自定义模板

自定义html模板

在这里插入图片描述

在这里插入图片描述

注意:模板是根据选择的文件类型独立的,我们现在是创建的html模板,只有创建html时,才能选择这个模板。

在这里插入图片描述

 

vue模板.txt

创建vue模板.txt,文件名自定义。这样就无需每次敲这些重复的代码,高效



	
		
		
		
	
	
		
{{msg}}

创建新文件调用模板

在这里插入图片描述

 

你可能感兴趣的:(VUE,vue.js,javascript,前端)