vueJs的学习笔记(二)
来源:互联网 发布:任务多打码辅助软件 编辑:程序博客网 时间:2024/06/07 08:29
开始
一个实例的创建
//一个实例的产生 var vm = new Vue({ //你的代码 })
数据与方法
vue的实例中采用了响应式系统,其实就是数据的双向绑定。如果创建了一个对象,并且又在vue的实例中添加了这个对象,那么就可以实现“响应”.
<script> //创建一个对象 var data = {a:1} //把对象加入到实例中。实例会找到所有的属性 var vm = new Vue({ data:data }) vm.a === data.a //true //设置某一个值,另外一个也会发生改变 ,反之亦然 vm.a = 2; data.a//2 </script>
但是响应式必须满足的条件是,对象和实例中都存在才可以。
vue中提供了一些预定义的方法和属性,为了和用户的区分开来,所以前面会添加$。
模版语法
插值
<!--大括号是最常见的插值方式,它会和数据对象进行绑定更新--> <p>{{msg}}</p>
纯HTML
在vuejs中,单纯的大括弧数据绑定只能实现纯文本,但是提供了v-html来显示具有html结构的数据。
<body> <div id="app"> <p >{{datas}}</p> </div> <script> var app = new Vue({ el:"#app", data:{ datas:"<em>你好啊</em>" } }) </script> </body>
在网页中将会显示具有em(倾斜)属性的文本,如果没有v-html的绑定,就只会显示纯文本。
javascript
每一个{{}}中都可以使用javascript语句,但是限制的是,只能使用一个语句。
<div id="app"> <p >{{number+1}}</p> </div>
指令
指令是带有v-的特殊属性,一般是产生单个js的表达式。作用是,当表达式的值发生改变的时候,响应式的作用域dom结构。
参数
有的指令后面可以跟一个参数,以冒号开始,告知绑定的数据的作用。
<p v-on:click="onclick">点我</p>
它的含义就是,点击时触发点击事件,执行onclick函数。
计算属性与观察者
什么是计算属性,首先我们知道在{{}}运算符中可以执行js的计算,但是只建议进行简单的计算。如果把冗长的计算过程放在其中,不仅代码不宜阅读,而且不宜维护,所以对于计算的部分当然是放在js的地方。
HTML
<div id="example"> <p>Original message: "{{ message }}"</p> <p>Computed reversed message: "{{ reversedMessage }}"</p></div>
JS
var vm = new Vue({ el: '#example', data: { message: 'Hello' }, computed: { // a computed getter reversedMessage: function () { // `this` points to the vm instance return this.message.split('').reverse().join('') } }})
这是js官方文档提供的一个实例。没错所谓的计算属性,就是把计算的部分放在vue的实例中,在HTMl只是提供一个引用。那么这个时候就有一个疑问了,computed和methods的区别是什么?1.computed在dom加载完毕就执行,而methods中的方法需要调用才可以执行。2.二者都可以达到相同的效果。3.computed的是基于依赖的关系,也就是最后的结果reverseMessage,取决于message是否发生改变。4.computed的优势在于依赖缓存,假设有一个开销比较大计算属性A,B依赖A产生结果。如果A没有发生变化,那么B会调用之前的缓存,而无需重新计算。但是在methods中,每一次的调用,都会进行一遍计算。
所以computed的重要点在于依赖,如果没有依赖关系的computed是没有意义的。
computed本质上还是一个属性,所以使用的时候,采用属性的方式调用。
观察者
虽然默认的vue是没有setter的,但是我们可以自行添加。比如当你想要在执行计算属性的时候,执行另一个异步操作(通常是为了解决开销大的情况),那么这个时候采用watch。比如一个vuejs官方文档的实例:
<script>var watchExampleVM = new Vue({ el: '#watch-example', data: { question: '', answer: 'I cannot give you an answer until you ask a question!' }, watch: { // 如果 question 发生改变,这个函数就会运行 question: function (newQuestion) { this.answer = 'Waiting for you to stop typing...' this.getAnswer() } }, methods: { // _.debounce 是一个通过 lodash 限制操作频率的函数。 // 在这个例子中,我们希望限制访问 yesno.wtf/api 的频率 // ajax 请求直到用户输入完毕才会发出 // 学习更多关于 _.debounce function (and its cousin // _.throttle), 参考: https://lodash.com/docs#debounce getAnswer: _.debounce( function () { if (this.question.indexOf('?') === -1) { this.answer = 'Questions usually contain a question mark. ;-)' return } this.answer = 'Thinking...' var vm = this axios.get('https://yesno.wtf/api') .then(function (response) { vm.answer = _.capitalize(response.data.answer) }) .catch(function (error) { vm.answer = 'Error! Could not reach the API. ' + error }) }, // 这是我们为用户停止输入等待的毫秒数 500 ) }})</script>
阅读全文
1 0
- vueJs的学习笔记(二)
- vueJs的学习笔记(四)
- 学习vuejs的第一天(vuejs)
- vueJs 2.0学习笔记(一)
- vuejs学习入门笔记
- vuejs学习笔记
- Vuejs学习笔记 一
- VueJS学习笔记
- Vuejs学习系列(十四)---vue实例的生命周期(二)
- vueJs第二讲学习笔记
- Vuejs学习系列(十六)--模板语法(二)
- Vuejs学习系列(二十三)-- 条件语句(一)
- Vuejs-学习记录(二)属性和计算属性
- Vuejs的学习笔记1---------响应式原理
- vuejs 学习(一)
- springboot整合vuejs(二)
- vuejs笔记
- VueJs学习
- EU4-61: Explaining problems
- Java常用程序片段
- meachine learning 第六周 2
- Struts1和Struts2区别
- #include <fstream> 和#include <sstream>在c++中的作用
- vueJs的学习笔记(二)
- CNN学习(一)
- 重绘和回流repaint/reflow
- authorware7.0 中文免费版
- ConcurrentHashMap的JDK1.8实现
- Python字符串中的换行符和制表符
- ubuntu系统下,hp 650 G2笔记本合上盖子后不进入睡眠状态的问题
- 开博小记
- JMeter之JDBC请求