首先为了打消大家对Vue.js存在的顾虑,先通过大家所熟知的JQ作为对比。

都知道JQ的语法相对简单、清楚、使用方便、功能齐全;

那么Vue.js呢,同样的,Vue.js与JQ在很多地方都是相同之处,JQ能处理的事情,Vue.js同样能处理

但是,令人兴奋的就在于,Vue.js在处理某些需求,完成某些功能的时候,比JQ更简单,更快捷,更方便。

那么,我们首先来了解一下Vue.js的关键句 --- --- --- “数据驱动视图”。

按照通俗一点的解释就是,视图随着数据的改变而改变。

我们再次拿众所周知的 JQ 作一个对比,比如说,我们用JQ创建了一个列表,那么列表的数据,我们是从Laravel获取的

于是,当我们要加上某个数据的时候,我们需要遍历所有数据,再把需要的数据加入到相应数据加入到dom节点中去

那如果我们要删除一行表格,我们就需要在这个列表中找到这个DOM节点的位置,再删除这一个节点。这样一想,其实绕了很多圈子

于是一大堆大牛就一起写了Vue.js这个框架,我们如果用Vue.js来处理这个问题,那就很简单,数据+1,列表+1;数据-1,列表-1

没有中间商赚差价。

废话了这么多,我们进入到代码环节。

首先,我们看一下,Vue的基础语法 如下:

new Vue({

  el : ' #surprise ',

  data{

    bigSurprise : 'Hello world !'

}

})

注:  1. el ,一个新鲜的东西,其实很好理解,我们可以把它当作JQ的节点选择器,通过 el:'', 来获取你想拿到的东西

    2. data{} 而它,就是我们会经常用到的东西,通常我们在这个花括号里定义某项东西,如上面的代码,我们定义了一个键值对。

    3.{{}}里面为数据变量,vue会自动将其解析为HTML

数据定义好了之后,我们开始“驱动”视图,如下:

<div id="surprise" >{{ bigSurprise }}</div>

上述代码就会输出  Hello world!

很简单?好的, 我们进入到下一个环节。

我们给上面的代码添加一个事件,就用我们最常用的点击事件吧;

在添加事件之前,我有必要大致介绍一下,Vue.js最常用的两个基本语法:

 
v-on:click=""
(不用多解释,用来绑定点击事件)
 
v-bind:href="urf"
(这种方法用来绑定HTML已有属性,比如 style,class,src,href等等,所有这些属性的变动都是属于响应式的,即为动态变动)
 
以上,不难发现都是以V开头,以V开头的写法叫做 directive(对dom功能的一个拓展),是Vue.js数据控制视图的连接点,这一点我想应该很好理解。
 
介绍完了 ,进入代码世界:
 
<div id = " surprise "> {{bigSurprise}} </div>
<button v-on:click="changeBigSurprise">改变bigsurprise</button>
 
new Vue({
  el:' #surprise ',
  data:{
    bigSurprise : " Hello world "
}
 
  method{
    changeBigSurprise : function() {
      this.bigSurprise : " Hello World !!! "
}
}
})
 
写到这里,我们就已经利用Vue完成了一个简单的点击事件的绑定,当botton被点击的时候,id为surprise的标签中的元素将被改变
 
这里,我们引入了一些新的东西:
1. method{}, 这个区域里,我们用来定义方法,简单明了
2.changeBigSurprise,而这,就是我们定义的方法
3.this.bigSurprise, 这就是data{}里面的那个数据
4.为什么不用 this.data.bigSurprise? 恩,我承认你很有想法,但这个地方,我们需要先了解一下比较底层的东西
this为 Vue()的一个实例,而data则是传入对象参数的一个属性,两则不能混为一谈。
 
还是比较容易?那很棒,我们继续向前探索.........
 
Vue.js里有一个很出名很简单又很好用的东西叫做“双向绑定”,代码如下
new Vue({
  el:' #surprise ',
  data{
    bigSurprise : " Hello world! " 
}
})
<div id=" xiangpiaopiao ">
<div id=" surprise ">{{bigSurprise}}</div>
<input v-model="bigSurprise">
</div>
 
这里又出现了一个陌生的东西:
1.v-model, 这又是一个directive,它的作用为双向绑定,即上面的代码把input与ID为surprise的标签中的HTML元素绑定,所以ID为surprise的标签中的HTML元素就会随着输入框中元素的变化而变化,而这,在JQ中,我们还需要利用onchange()事件,更繁琐更复杂,更多代码,不划算。
 
那么上面的代码,会输出一行字“Hello world!”加上一个输入框,具体效果,大家可以想象一下,这应该不难。
 
什么?你觉得这些太简单了,想来点更有意思的?
 
好的,那我们继续阔步向前,向着新大陆进发.....................
 
直接上图
 
如上图所示,不难发现,在视图和数据的中间,有一个viewModel层;因为光是数据摆在那里是没有任何作用的
而数据对视图的控制,就全都在这一层里面完成,至于完成的具体过程,这个地方先不提
由上图,我们可以这样理解:  数据绑定在视图上,而视图在监听数据的变化,通过绑定与监听来完成数据与视图的同步,即为数据控制视图。
 
而viewModel这一层其实就是:
var vm = new Vue({
  el:''
  data{}
})
我们把数据放进VM里面,通过VM处理,再将各种directive放到渲染到视图里,这样就完成了这一伟大的壮举。
 
既然提到了vm,那么不得不说的是,我们可以用vm来读取数据(vm的属性是直接跟数据的key绑定的),利用上面的例子:
vm.bigSurprise == "Hello world!"
而这个数据是响应式(reactive)的,根据我的理解,也就是动态的,如:
 
var data = { a:1 }
var vm = new Vue({
  data : data  
})
 
data.a === vm.data    //-> true
 
data.a == 1
vm.a == 1
 
vm.a == 2
data.a == 2
 
//设置vm的数据会让原来的数据发生改变,同样改变原来的数据,也会让vm的数据发生改变,就减少了jQ当中再次赋值的步骤;
 
其实我们还可以用vm获取其他属性:
 
vm.$el === document.getElementId("surprise")
vm.$data === data
vm.$data.bigSurprise === " Hello world "
 
而为了给大家加深印象,下面展示一下大家正常理解的写法(也就是错误的写法)
 
vm.el == "#surprise"
vm.data == {
  bigSurprise : " Hello world! "
}
vm.data.bigSurprise == " Hello world! "
 
注:这个地方出现的$,据说代表了vm的真实属性,这一点,我也很蒙逼啊,得有多真实?
 
WTF?上面的你都懂了?那我不得不说,你是难得一见的计算机天才,分分钟年薪百万的节奏啊;
It's no matter ,如果上面的没有完全理解,那我们先消化一下,明天继续。。。。。。  see you later~ good night~
 

Vue学习之路---No.1(分享心得,欢迎批评指正)的更多相关文章

  1. vue学习之路 - 4.基本操作(下)

    vue学习之路 - 4.基本操作(下) 简述:本章节主要介绍 vue 的一些其他常用指令. Vue 指令 这里将 vue 的指令分为系统内部指令(vue 自带指令)和用户自定义指令两种. 系统内部指令 ...

  2. Vue学习之路之登录注册实例代码

    Vue学习之路之登录注册实例代码:https://www.jb51.net/article/118003.htm vue项目中路由验证和相应拦截的使用:https://blog.csdn.net/wa ...

  3. Vue学习之路---No.4(分享心得,欢迎批评指正)

    这里说声抱歉,周末因为有其他事,没有更新博客,那么我们今天继续上周5的说. 老规矩,先回顾一下上一次的重点: 1.利用V-if和v-else来提到show()和hide(),同时要记住,v-else一 ...

  4. JAVA学习之路与大家分享

    这是我四年以前总结的JAVA学习之路,希望对初学者或想从事JAVA开发的人有帮助. 本人是软件工程专业出身,先后学过C.C++.JAVA.VB.delphi等等开发语言以及网络相关管理技术.哎,好久不 ...

  5. Vue学习之路第一篇(学习准备)

    1.开发工具的选择 这个和个人的开发习惯有关,并不做强求,厉害的话用记事本也可以.但是我还是建议用人气比较高的编辑工具,毕竟功能比较全面,开发起来效率比较高. 我之前写前端一直用的是sublimete ...

  6. Vue学习之路---No.2(分享心得,欢迎批评指正)

    昨天我们大致了解了有关Vue的基础知识和语法:今天我们继续在大V这条路上前进. 首先,我们回忆一下昨天提到的相关知识点: 1.了解Vue的核心理念------"数据驱动视图" 2. ...

  7. Vue学习之路---No.6(分享心得,欢迎批评指正)

    我们还是先回顾一下上一次的重点: 1.事件绑定,我们可以对分别用方法和js表达式对事件进行处理 2.当方法名带括号的时候,在方法中一定要传参:而不带括号的时候,vm会自动配置默认event 3.各类事 ...

  8. Vue学习之路---No.7(分享心得,欢迎批评指正)

    老规矩,先回顾一下上回的重点: 1.对于input框,若为单选框,如果没有对其设置value,那么其checked的值将在true Or false之间切换:如果设置了value,那么将会切换valu ...

  9. Vue学习之路---No.3(分享心得,欢迎批评指正)

    同样的,我们先来回顾一下昨天学习的内容: 1.利用v-once来组织双向绑定 2.filter{}过滤器的使用(详情请看上一章) 3.computed(计算属性),利用computed属性实现filt ...

随机推荐

  1. YII 1.0模型标签与验证规则,前后台验证

    model Admin.php model(),tabName()是固定格式 <?php /* 管理员模型 * ----------------------------------------- ...

  2. HDU-2031-进制转换

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2031 进制转换 Time Limit: 2000/1000 MS (Java/Others)    M ...

  3. BNU Online Judge-34777-Magical GCD

    题目链接 http://www.bnuoj.com/bnuoj/problem_show.php?pid=34777 题意 如样例 输入 1530 60 20 20 20 输出 80 如  30 和 ...

  4. Raphael的text及对齐方式

    Raphael的text及对齐方式 <%@ page language="java" contentType="text/html; charset=UTF-8&q ...

  5. [html5] 学习笔记-服务器推送事件

    1.HTML5服务器推送事件介绍 服务器推送事件(Server-sent Events)是Html5规范的一个组成部分,可以用来从服务端实时推送数据到浏览器端. 传统的服务器推送技术----WebSo ...

  6. Syslog4j如何实现接收日志

    1.Syslog4j是一个实现Syslog(RFC3164)协议的Java开源类库包括客户端与服务器端.通过 UDP/IP, TCP/IP, TCP/IPover SSL/TLS, Unix Sysl ...

  7. 一次dns缓存引发的惨案

    时间2015年的某个周六凌晨5点,公司官方的QQ群有用户反馈官网打不开了,但有的用户反馈可以打开,客服爬起来自己用电脑试了一下没有问题,就给客户反馈说,可能是自己网络的问题,请过会在试试.早点8点,越 ...

  8. C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

    作者: Aicken(李鸣)  来源: 博客园  发布时间: 2010-09-08 15:00  阅读: 4520 次  推荐: 0                   原文链接   [收藏] 摘要: ...

  9. 循环语句——do…while语句

    一.do while语句结构 do { 执行语句 } while (条件表达式); 条件表达式必须是trur或false 二.do while语句特点 不论条件是否满足,都先执行一次执行语句 三.示例 ...

  10. BOM之history对象(转)

    前面的话 history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起.由于安全方面的考虑,开发人员无法得到用户浏览器的URL,但借由用户访问过的页面列表,可以在不知道实际URL的情况下实现后 ...