Vue.js的简单概念和使用(代码及运行图)

MVVM
MVVM 是 Model-View-ViewModel 的简写。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。

通过Vue实现数据层和视图层的对应对象的自主绑定,由Vue框架进行数据的和绑定自动更新

VUE
什么是 Vue.js
Vue (读音 /vju ː/,类似于 view) 是一套用于构建用户界面的渐进式框架. 与其它大型框架不是,Vue 被设计为可以自底向上逐层应用。Vue 的核心 库只关注视图层,不仅易于上手,还便与第三方库或既有项目整合。 Vue.js 是前端的主流框架之一,和 Angular.js、React.js 一起,并成为前端三 大主流框架!

官网地址:https://cn.vuejs.org/

Vue.js 优点
1.体积小 压缩后 33K
2.更高的运行效率
用 JQuery 或者原生的 JavaScript DOM 操作函数对 DOM 进行频繁操作的
时候,浏览器要不停的渲染新的 DOM 树,导致页面看起来非常卡顿。
基于虚拟 dom,一种可以预先通过 JavaScript 进行各种计算,把最终的
DOM 操作计算出来并优化的技术,由于这个 DOM 操作属于预处理操作,并没
有真实的操作 DOM,所以叫做虚拟 DOM.最后在计算完毕才真正将 DOM 操作
提交,将 DOM 操作变化反映到 DOM 树上。
3.双向数据绑定,简化 Dom 操作
通过 MVVM 思想实现数据的双向绑定,让开发者不用再操作 dom 对象,
把更多的精力投入到业务逻辑上.
4 生态丰富、学习成本低
市场上拥有大量成熟、稳定的基于 vue.js 的 ui 框架、常用组件!来即用实现
快速开发!对初学者友好、入门容易、学习资料多.

Vue 安装
方式 1:直接用 <script> 引入
下载 Vue.js 并导入 js 文件
<script src="js/vue.js"></script>
方式 2:命令行工具 (CLI)
安装教程给出了更多安装 Vue 的方式。请注意我们不推荐新手直接使用 vue-cli,尤其是在你还不熟悉基于 Node.js 的构建工具时。

 

两个js,第一个是没有压缩过的,第二个是压缩过的

保留压缩过的js

导入文件vue.js文件

第一个 Vue 程序
1. 导入开发版本的 Vue.js
2. 创建 Vue 实例对象,设置 el 属性和 data 属性
3. 使用简洁的模板语法把数据渲染到页面上
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM的系统:

代码解析:

{{ 变量 }} 模板语法,插值表达式获取数据
new Vue();创建 Vue 对象(VM 对象)
el:数据挂载的 dom 对象
Vue 会管理 el 选项命中的元素及其内部的后代元素
可以使用其他的选择器,但是建议使用 ID 选择器
可以使用其他的选择器,但是建议使用 ID 选择器,
可以使用其他的闭合标签,不能使用 HTML 和 BODY
data:{ message:’hello world’} model 数据
Vue 中用到的数据定义在 data 中
data 中可以写复杂类型的数据,如对象,数组
渲染复杂类型数据时,遵守 js 的语法即可
模板语法
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循 规范的浏览器和 HTML 解析器解析。 在底层的实现上, Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统, Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。
插值文本
数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值: <span>Message: {{ msg }}</span>
Mustache 标签将会被替代为对应数据对象上 msg property 的值。无论何时,
绑定的数据对象上 msg property 发生了改变,插值处的内容都会更新。
使用 JavaScript 表达式
迄今为止,在我们的模板中,我们一直都只绑定简单的 property 键值。但实
际上,对于所有的数据绑定,Vue.js 都提供了完全的 JavaScript 表达式支持。
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
<div v-bind:id="'list-' + id"></div>
这些表达式会在所属 Vue 实例的数据作用域下作为 JavaScript 被解析。有个
限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效。
<!-- 这是语句,不是表达式 -->
{{ var a = 1 }}
<!-- 流控制也不会生效,请使用三元表达式 -->
{{ if (ok) { return message } }}

Vue 指令

指令带有前缀 v- 开头,以表示它们是 Vue 提供的特殊属性。
v-text
作用是设置标签的文本内容
默认写法会替换全部内容,使用差值表达式可以替换指定内容
内部支持写表达式
<p v-text="message+1">非凡英才</p>
<p>{{message+1}}非凡英才</p>
v-html
作用是设置元素的 innerHTML
内容中有 html 结构会被解析为标签
内部支持写表达式
<p v-html="message+1">非凡英才</p>

示例:

执行结果

v-on
作用是为元素绑定事件
事件名不需要写 on 指令可以简写为@
绑定的方法定义在 methods 属性中,可以传入自定义参数
<input type="button" value="按钮" v-on:click="test(1,2)" />
<input type="button" value="按钮" @click="test" />
methods:{
test(a,b){
alert(a);
}

点击后执行

 

v-model
作用是便捷的设置和获取表单元素的值
绑定的数据会和表单元素值相关联
绑定的数据<---->表单元素的值 双向数据绑定
<input type="text" v-model="message"/>
<p>{{message}}</p>
data:{
message:""
}

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="./vue.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<p>{{xx}}</p>
			<input type="text"  v-model="xx"/>
		</div>
		<script type="text/javascript">
			var app = new Vue({
			  el: '#app',
			  data: {
				  xx:456454,
			      
			  },
			  
			  methods:{
				  
			  }
			 
			})
		</script>
	</body>
</html>

输入框中的值改变会和影响上方的显示数据

 

v-show
作用是根据真假切换元素的显示状态
原理是修改元素的 display,实现显示隐藏
指令后面的内容,最终都会解析为布尔值
值为 true 元素显示,值为 false 元素隐藏
数据改变之后,对应元素的显示状态会同步更新
<img v-show="isShow" src="img/3.jpg" />
<img v-show="age>18" src="img/3.jpg" />
data:{
isShow:true,
age:20
}
v-if
作用是根据表达式的真假切换元素的显示状态
本质是通过操纵 dom 元素来切换
显示状态表达式的值为 true,元素存在于 dom 中,为 false,从 dom 中移除
频繁的切换 v-show,反之使用 v-if,前者的切换消耗小 v-bind
作用是为元素绑定属性
完整写法是 v-bind:属性名
简写的话可以直接省略 v-bind,只保留:属性名
<img
v-bind:src="imgSrc" />
<img :src="imgSrc" />
<img :title="imgTitle" :src="imgSrc" />
data:{
imgSrc:'img/3.jpg'
imgTitle:"这是一张图片"
}

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	<script src="./vue.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<img style="width: 500px; height: 500px;" src="../img/1.jpg" v-show="flog" >
			<img style="width: 500px; height: 500px;" src="../img/2.jpg" v-show="age>20" >
			<input type="button"  value="图片消失" v-on:click="xs()"/>
			<img style="width: 500px; height: 500px;" src="../img/1.jpg" v-if="flog" >
			<img style="width: 500px; height: 500px;" src="../img/2.jpg" v-if="age>20" >
			<p>if else</p>
			<img style="width: 500px; height: 500px;" src="../img/1.jpg" v-if="flog" >
			<img style="width: 500px; height: 500px;" src="../img/2.jpg" v-else >
			
		</div>
		<script type="text/javascript">
			var app = new Vue({
			  el: '#app',
			  data: {
			    flog:true,
				age:50,
			  },
			  
			  methods:{
				  xs(){
					  this.flog=false
					  this.age=10
				  }
			  }
			})
		</script>
		
	</body>
</html>
v-for
作用是根据数据生成列表结构
数组经常和 v-for 结合
使用语法是(item, index) in 数据
item 和 index 可以结合其他指令一起使用
数组长度的更新会同步到页面上是响应式的
为循环绑定一个 key 值 :key=”值” 尽可能唯一
<li v-for="item in array">
{{item}}省
</li>
<li v-for="(item,index) in array">
{{index+1}}{{item}}省
</li>
<li v-for="(item,index) in objects">
{{index+1}}{{item.name}}{{item.age}}
</li> data:{
array:['陕西','山西','河南'],
objects:[
{name:'admin',age:23},
{name:'jim',age:22}
]
}
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue.js -->
		<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			   <!-- 
			      v-bind 为标签其他的属性动态进行数据绑定
			   -->
			  <img  v-bind:src="imgurl" />
			  <img  :src="imgurl" />
			  <input type="button" @click="test1()" value="下一张"/>
		</div>
		
		<script>
		     //创建vue对象
			 var app = new Vue({
				 el:"#app",
				 data:{ 
					 array:["img/1.jpg","img/2.jpg","img/3.jpg"],
					 imgurl:"img/1.jpg",
					 index:0,
				 },
				 methods:{
					 test1(){
						 this.index++;
						 this.imgurl=this.array[this.index];
					 }
				 }
			 })
			 
			
		</script>
	</body>
</html>

使用v-for生成表格

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue.js -->
		<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			  <select>
				  <option v-for="c in ctity">{{c}}</option>
			  </select>
			  
			  <table border="1">
				  <tr>
					  <td>序号</td>
					  <td>姓名</td>
					  <td>年龄</td>
				  </tr>
				  <tr v-for="(user,index) in users">
				  	<td>{{index+1}}</td>
				  	<td>{{user.name}}</td>
				  	<td>{{user.age}}</td>
				  </tr>
			  </table>
		</div>
		
		<script>
		     //创建vue对象
			 var app = new Vue({
				 el:"#app",
				 data:{ 
					ctity:["北京","上海","天津"], //List<String> list = new ArrayList()
					users:[{name:"jim1",age:20},{name:"jim2",age:20},{name:"jim3",age:20}] //List<User> list = new ArrayList()
				 },
				 methods:{
					 
				 },
				 //生命周期钩子函数,在每个生命周期阶段,提供一个函数
			/* 	 beforeCreate() {
				 	console.log("beforeCreate")
				 },
				 created() {
				 	console.log("create")
				 }, */
				 mounted() {//vue对象创建完毕,且与标签进行了绑定,类似于 onload
				 		console.log("mounted");// 向后端发送请求,接收后端响应的数据
				 }
			 })
			 
			 
			/* var s = "";
			 for (var i = 0; i < ctity.length; i++) {
			 	   s+="<option>"+city[i]+"</option>"
			 } */
			
		</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’);
}

 

 

 

 

玹之又玹
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图解Vue.js项目及其目录结构
我为编程狂,我为外语狂
08-15 4979
  项目包含: 基础库: vue.jsvue-router、vuex、whatwg-fetch 编译/打包工具:webpack、babel、node-sass 单元测试工具:karma、mocha、sinon-chai 本地服务器:express build:最终发布的代码的存放位置。   config:配置路径、端口号等一些信息,我们刚开始学习的时候选择默认配置。   node_mod...
vue在html中执行js代码,Vue.jsVue.runtime.js
weixin_35006181的博客
06-07 1867
Vue官方中文文档:Vue有两个版本:完整版:vue.jsvue.min.js(运行时版+编译器)(编译器:将模板字符串编译成为JS渲染函数的代码)运行时版:vue.runtime.js、vue.runtime.min.js(用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码)vue-cli 创建的 vue 项目,默认的配置是 vue.runtime.js 版本后缀为.min.js的是生产...
运行vue项目完整流程
cpc980209的博客
03-09 2243
这里建议安装16版本(支持vue2/vue3),若是低版本vue可下载更低版本node。以下为运行成功效果:Ctrl + 单击 可打开到浏览器运行,或复制。安装步骤一直下一步即可(默认C 盘防止后续环境出现其他问题)到浏览器地址(注意8080为运行端口,不同项目端口会不同)完整的public、src文件夹等才是真正vue根目录。用vscode打开可直接新建终端运行指令。注意辨别vue文件夹,文件夹下。有版本号则表示有node环境。即可用命令行打开运行相关指令。win键+R打开,输入。到所在文件夹单击路径。
一文速通 Vue 基础
最新发布
codechatter的博客
08-19 910
Vue 速通篇
vue.计算属性(通过数据改变便执行js代码,用处多多)
成长的嘻嘻哥
10-12 227
vue.计算属性and表达式and侦听 and方法(metheds)进行计算,表达式用于一些简单的,简短的数据处理,侦听和方法不是干这事的东西,有点勉强,但是可以,计算属性是针对复杂的计算问题设定的,下边介绍一下书写的格式
vue.js 体系结构导图
07-09
vue.js 体系结构导图/vue快速入门/vue前端技术前瞻/Vue.js 2.0 参考
vue学习--js代码执行机制简单
AngelQ
09-10 462
//凡是 异步代码和定时代码 都会等待主程序执行完毕后再开始 //哪些事异步操作 1 定时器延时器2 ajax3 绑定的onclick事件函数,,, //注意new promise会立刻执行 console.log(1) new Promise(function(resolve,reject){ console.log(2) }) console.log(3) =->>123 //而.then需要异步执行 console.log(1) let p1 = new Pro.
Vue.js前端开发实战-源代码.zip
07-07
10. **单元测试**:Vue.js可以使用Jest或Mocha+Chai等工具进行单元测试,确保代码的质量和稳定性。 实战项目中可能涵盖的模块有: - 登录注册系统:涉及用户认证、表单验证和路由保护。 - 数据展示:通过API获取...
Vue.js黄金基金收益计算器代码
05-01
Vue.js是一种广泛使用前端JavaScript框架,它以组件化开发、数据绑定和响应式更新为核心特性。在"Vue.js黄金基金收益计算器代码"这个项目中,开发者利用Vue.js 2.2.2版本来构建了一个实用的在线工具,帮助用户快速...
详解Vue.js在页面加载时执行某个方法
10-17
主要介绍了详解Vue.js在页面加载时执行某个方法的实现代码,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
Vue.js Up & Running Building Accessible and Performant Web Apps pdf
04-16
Vue.js是目前非常流行的前端JavaScript框架,以其轻量级、易学易用和灵活性著称。本书旨在帮助开发者深入理解Vue.js的核心概念,并学习如何利用它来创建高效、无障碍的现代Web应用程序。 Vue.js的核心特性包括组件...
vue.js学习心得
aim_ty的博客
12-20 491
在课程中,学习Vue.js课程是一次非常有收获的经历。通过这次课程,我深入了解了Vue.js的核心概念特性和应用,同时也掌握了一实用的开发技巧和最佳实践。我相信这些知识和经验将对我未来的开发工作产生积极的影响。
【web前端】如何运行第一个vue.js程序,尝试运行官方指导案例
The_Handsome_Sir的博客
05-04 883
首先我们了解vue.js的官网 https://vuejs.bootcss.com/guide/ 官网上有明确的安装教程:       尝试 Vue.js简单的方法是使用 Hello World 例子。你可以在浏览器新标签页中打开它,跟着例子学习一些基础用法。或者你也可以创建一个 .html 文件,然后通过如下方式引入 Vue: <!-- 开发环境版本,包含了有帮助的命令行警告 --> <script src="https:/
JS小练————轮播图(含注释,运行图
m0_45293340的博客
08-31 232
JS小练————轮播图(含注释,运行图
vuejs如何调试代码
weixin_30645617的博客
08-12 1243
基于webpack的配置调试 使用Vue-cli命令行工具初始化基于wabpack模板的项目的命令语法: npm install -g @vue/cli # 全局安装vue-cli,版本vue3.x vue init webpack [my-project] [app-name] # 使用vue-cli初始化一个完整的webpack项目。 cd my-p...
vue中引入js脚本块或者js文件 js函数 js方法
global_coding的博客
05-23 1541
vue中引入js脚本块或者js文件 js函数 js方法
如何在启动Vue项目的同时跑 node.js脚本
开源世界
07-29 2287
编写copyFile.js 脚本实现,将文件夹内所有文件和子文件夹拷贝到另外的文件夹中 注意 copyFile.js 属于后端脚本,需要执行 node copyFile.js 运行 引入node环境中自带的两个模块 写文件模块和读文件模块 const fs = require(‘fs’); const path = require(‘path’); 复制代码 以下两段代码是一个整体 :使用方法是直接调用 copyFolde(源文件相对路径,复制目标的相对路径) 函数 将源文件拷贝到目标文件: //!将src
如何做一个简单vue页面,并启动autojs脚本,用JS任意控制手机上的APP
lqy617的博客
06-07 2998
如何做一个简单vue页面并启动autojs脚本,彻底解放双手
使用Node.js与npm安装及配置Vue.js开发环境
"这篇内容主要介绍了如何下载Node.js,使用npm来管理依赖,并通过Vue CLI创建和配置一个Vue.js项目。Vue.js是一个流行的前端框架,npm则是JavaScript的包管理器,用于安装和管理项目依赖。" 在前端开发中,Node.js...
写文章

热门文章

  • HTML中的表格和表单(含有示例代码) 49962
  • XML语言简介 4058
  • lambda表达式 3353
  • 十大排序算法 3092
  • 泛型的用法 2840

分类专栏

  • JVM虚拟机 4篇
  • 云服务器 2篇
  • MyBatis-plus 3篇
  • 设计模式 1篇
  • Springboot 3篇
  • Spring 2篇
  • 平时遇到的问题 1篇
  • javaEE 5篇
  • Mybatis 4篇
  • 前端 4篇

最新评论

  • 十大排序算法

    辣椒种子: 大佬太优秀了,期待大佬的更多精彩文章,帮忙也看看我的博文,一起加油一起冲!

  • 十大排序算法

    goyeer(工蚁): 优质博文,干货满满~不愧是我佬,跟着我佬学习,每天都能学到很多知识!!期待我佬来指点一番~!!!!

  • 泛型的用法

    904531552: 很清晰啊

  • java语言中类,包,继承,封装,多态简介

    一个成长中的菜鸟程序猿: 大哥,牛啊!

最新文章

  • Mybatis中Dao接口中支持方法重载吗
  • HashMap添加元素的详细解读
  • Shiro框架权限控制
2023年21篇
2022年60篇
2021年7篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳坪山网站建设公司德宏网站优化渠道网站优化哪里可以学网站核心的优化外包网站优化公司排名增城网站的优化惠州外贸网站关键词优化排名都江堰营销型网站优化河南家纺行业网站优化推广优点网站优化课程海报龙口个性化网站优化公司邵阳网站优化哪家值得信赖网站推广排名优化雨花台区网站优化信息推荐福田产品网站优化软件孝感专业网站优化工体网站优化网站的网站优化哪个品牌好普宁推广排名优化SEO网络网站教育培训网站优化引流嘉兴百度搜索网站优化优化网站访问速度个人网站优化联系方式广义的网站优化响应式网站优化哪家好东城网站首页优化廊坊网站快照优化哪家好潍坊网站专题优化公司的网站诊断及优化方案青浦区百度网站优化方案绵竹网站优化哪家好香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化