又来做笔记啦,今天又自暴自弃了,还好及时清醒过来了,什么时候努力都不晚,主要是要一直坚持下去,只要坚持就一定会有收获,所有成功得人背后都是付出了巨大得努力的,没有人平白无故的成功。看似光鲜亮丽的背后,人家都不知道付出多少时间和汗水,所以我也要加油,对自己有信心,虽然现在不懂,没关系只要学习就一定会有收获,要对自己有信心。加油,我可以的。废话不多说啦,开始我今天的总结。
首先,第一节学的就是Vue的计算属性Computed啦,Computed的作用呢就是可以使复杂的逻辑和频繁的数据变化操作变得简单起来。比如,它适用于 搜索功能啦,以及复杂的逻辑运算啦。只有数据发生改变时,计算属性才会被调用,避免的资源的浪费啦,相比之下,每当触发重新渲染时,methods方法呢,调用方法将总会再次执行函数。
举例说明:
<!-- vue-app是根容器 -->
<div id="vue-app">
<h1>Computed 计算属性</h1>
<button v-on:click="a++">Add to A</button>
<button v-on:click="b++">Add to B</button>
<p>A —— {{a}}</p>
<p>B —— {{b}}</p>
<!-- 在标签内部调用方法的时候方法名字后面需要添加"()" -->
<!-- <p>Age + A = {{addToA()}}</p> -->
<p>Age + A = {{addToA}}</p>
<!-- 如果调用计算属性computed里面的方法,不需要加() -->
<!-- 一般dom数据变话大的,例如大量搜索和耗时的情况下会用计算属性,一般情况下还是用methods实现 -->
<p>Age + B = {{addToB}}</p>
</div>
<script>
//实例化
new Vue({
el:'#vue-app',
data:{
a:0,
b:0,
age:20
},
methods:{
// addToA:function(){
// console.log("Add To A");
// return this.a + this.age;
// },
// addToB:function(){
// console.log("Add To B");
// return this.b + this.age;
// }
},
computed:{
addToA:function(){
console.log("Add To A");
return this.a + this.age;
},
addToB:function(){
console.log("Add To B");
return this.b + this.age;
}
}
})
</script>
第二 Vue动态绑定class样式: v-bind:class="{changeColor:changeColor}" 这种方式我理解的是有参数时候会用大括号的形式。
v-bind:class="compareClass" 没有大括号的这种是直接调用某个属性名字
<!-- vue-app是根容器 -->
<div id="vue-app">
<h1>动态绑定 css class</h1>
<h2>示例1</h2>
<!-- 动态改变颜色,首先添加一个class,点击的时候改变changeColor的状态,取反。就能实现点击切换颜色 -->
<div v-on:click="changeColor = !changeColor" v-bind:class="{changeColor:changeColor}">
<span>韩艳红</span>
</div>
<h2>示例2</h2>
<button v-on:click="changeColor = !changeColor">改变颜色</button>
<button v-on:click="changeLength = !changeLength">改变长度</button>
<!-- 利用动态属性实现修改颜色功能 所有写在标签上的属性或者事件里面的名字都不用加{}大括号,如果有参数得话,就需要添加大括号了 -->
<div v-on:click="changeLength = !changeLength" v-bind:class="compareClass"> 利用动态属性实现修改颜色功能
<span>学习Vue</span>
</div>
//实例化
new Vue({
el:'#vue-app',
data:{
changeColor:false,
changeLength:false
},
computed:{
compareClass:function(){
// 返回一个对象,里面有当前的颜色和长度
return{
changeColor:this.changeColor,
changeLength:this.changeLength
}
}
}
})
第三Vue的v-if和v-for的运用:
v-show 和 v-if的功能是一样的。
<!-- 点击为真的话,这句话是存在的,如果为假就不存在了,说明是没有占位符的。 -->
<p v-if="erro">网络连接错误,404</p>
<p v-else-if="success">网络连接成功,200</p>
<!-- v-show和v-if的区别就是v-show是存在占位符的,它只是display:none;用样式控制了显示和隐藏。 -->
<p v-show="erro">网络连接错误,404</p>
<p v-show="success">网络连接成功,200</p>
script里面设置了:
data:{
erro:false,
success:false
},
v-for实例: v-for="(items index) in user"
<!-- 用v-for遍历循环数组字符串 -->
<ul>
<li v-for="character in characters">
{{character}}
</li>
</ul>
<!-- 用v-for遍历循环数组对象 -->
<ul>
<li v-for="user in user">
name:{{user.name}}
age:{{user.age}}
</li>
</ul>
<!-- 取用户的下标 在里面可以再添加一个参数index-->
<ul>
<li v-for="(user,index) in user">
{{index}} name:{{user.name}}
age:{{user.age}}
</li>
</ul>
<!-- 如果用div循环的话,会有资源浪费的问题。会生成很多个无用的div -->
<div v-for="(user,index) in user">
<h3>{{index}}.{{user.name}}</h3>
<p> age:{{user.age}}</p>
</div>
<!-- 优化div,把无用的div去掉 template就不会被渲染出来-->
<template v-for="(user,index) in user">
<h3>{{index}}.{{user.name}}</h3>
<p> age:{{user.age}}</p>
</template>
-------------------------------------------------------------
<!-- 循环这个数组 -->
<template v-for="(user,index) in user">
<!-- 再循环数组里面的单个对象 -->
<div v-for="(val,key) in user">
<p>
{{key}} —— {{val}}
</p>
</div>
</template>
scritp里面:
data:{
characters:["a","b","c"],
user:[
{name:"lili",age:20},
{name:'pipi',age:25},
{name:'tete',age:18}
]
},
新版的vue里面v-for如果不提供key值得话加载慢,而且会报红,如何解决?
遍历得时候都给他一个key值,这样就没问题了。
<!-- 如果用div循环的话,会有资源浪费的问题。会生成很多个无用的div -->
<div v-for="(user,index) in user" :key="index">
<h3>{{index}}.{{user.name}}</h3>
<p> age:{{user.age}}</p>
</div>
好啦,今天大致就学了这么多,还有一个综合性的小练习。虽然学了这么点,但是很多在写例子的时候还是想不起来怎么,还有逻辑能力也有待提高。慢慢来,加油。
- Vue学习记录第一篇——Vue入门基础
前面的话 Vue中文文档写得很好,界面清爽,内容翔实.但文档毕竟不是教程,文档一上来出现了大量的新概念,对于新手而言,并不友好.个人还是比较喜欢类似于<JS高级程序设计>的风格,从浅入深, ...
- Vue学习记录第一天
今天开始了Vue的学习,下面我就记录一下学习了什么. 1.什么是Vue? vue是一套基于javaScript的渐进式框架,是MVVM框架.View ——ViewModel——Model 其中Vie ...
- vue学习记录:vue引入,validator验证,数据信息,vuex数据共享
最近在学习vue,关于学习过程中所遇到的问题进行记录,包含vue引入,validator验证,数据信息,vuex数据共享,传值问题记录 1.vue 引入vue vue的大致形式如下: <temp ...
- [20190614]webpack+vue学习记录
本文记录一些学习webpack+vue相关的知识点,方便以后查阅,添加或修改 1. 初始化vue项目的代码结构 build--项目依赖包配置信息 config--项目配置文件 dev.env.js-- ...
- vue学习记录④(路由传参)
通过上篇文章对路由的工作原理有了基本的了解,现在我们一起来学习路由是如何传递参数的,也就是带参数的跳转. 带参数的跳转,一般是两种方式: ①.a标签直接跳转. ②点击按钮,触发函数跳转. 在上篇文章中 ...
- Vue学习记录(二)
一.指令 指令是Vue.js中一个重要的特性,主要提供了一种机制将数据的变化映射为DOM行为.当数据变化时,指令会依据设定好的操作对DOM进行修改,这样就可以只关注数据的变化,而不用去管理DOM的变化 ...
- Vue学习记录(一)
一.引入js文件(直接采用CDN): http://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js 二.简单实例: (1)HTML代码: &l ...
- Vue学习记录-初探Vue
写在开头 2017年,部门项目太多,而且出现了一个现象,即:希望既要有APP,也能够直接扫码使用,也能放到微信公众号里面. 从技术角度来说,APP我们可以选择原生开发,也可以选择ReactNative ...
- vue学习记录(一)—— vue开发调试神器vue-devtools安装
网上有些贴子少了至关重要的一步导致我一直没装上, 切记!!install后还需build,且install和build都在vue-devtools文件夹内执行 github下载地址 点击跳转 具体步骤 ...
随机推荐
- 最简单有效的关于linux下配置Git操作免登录ssh公钥
ssh-keygen -t rsa -b 4096 -C “someone@xxx.com” 然后回车三连击… 进入目录(执行cd ~/.ssh),可以看到当前目录下多出两个文件 id_rsa.pub ...
- 【原创】大数据基础之Alluxio(1)简介、安装、使用
Alluxio 1.8.1 官方:http://www.alluxio.org/ 一 简介 Open Source Memory Speed Virtual Distributed StorageAl ...
- javascript事件委托的原理与实现
事件委托 事件流 捕获:查找目标元素: 目标:执行目标的事件: 冒泡:依次执行祖先元素的事件. onmouseenter和onmouseleave不支持冒泡: onmouseover和onmouseo ...
- 基于BootStrap的initupload()实现Excel上传和获取excel中的数据
简单说明:后边要做exl解析(还没做呢),所以先有一个excel的的上传以及获取excel中的数据,展示出来. 代码: //html代码 <div class="btn-group&q ...
- ECMAScript6 - 2.变量的解构赋值
1.数组解构赋值 1.1.基本用法 // (1)对数组变量赋值 let [foo, [[bar], baz]] = [1, [[2], 3]]; foo; // 1 bar; // 2 baz; // ...
- 在macOS下使用MAXPP搭建本地开发服务器简易流程
本文适用于解决前端开发时所需的服务器支持,包括文件上传和下载.在开发环境中需要保持尽量的开放,并不是安全的.根据浏览器安全协议,所下载的开源项目是不能直接在file中直接打开的,需要把文件放置在服务器 ...
- 关闭 Visual Studio 的 Browser Link 功能
最近公司弄新项目需要用 MVC,就把 IDE 升级到了 Visual Studio 2013,在开发的时候发现有好多请求一个本地49925的端口 . 很奇怪,一开始以为是 Visual Studio ...
- C# 堆栈(Stack)和队列(Queue)
一.什么是堆?(Heap) 堆是无序的,是一片不连续的内存域,由用户自己来控制和释放,如果用户自己不释放的话,当内存达到一定的特定值时,通过垃圾回收器(GC)来回收. 是程序运行期 ...
- LBS(Location Based Service)(基于位置的服务)
LBS(Location Based Service)(基于位置的服务) Android 中定位方式基本可以分为两种:GPS定位,网络定位. GPS定位的工作原理是基于手机内置的GPS硬件直接和卫星进 ...
- 第七篇 Flask 中路由系统以及参数
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...