首先为了打消大家对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. Google Chrome调试js代码

    你 是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~, ...

  2. git 配置SSH免密

    1.安装TortoiseGit(比较简单,直接在官网上下载安装包安装) 2.打开下图标识 点击 generate按钮 生成key(需要等一会)   3.生成Key保存成.ppk文件,记得存放路径,(建 ...

  3. win8 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法

    1)安装Oracle 11g 64位2)安装32位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0)下载 instantclient-basic-win ...

  4. Windows Server 2008 R2防火墙出站规则

    出战规则指Windows Server 2008 R2系统访问外部的某台计算机通信数据流. 配置防火墙阻止Windows Server 2008 R2系统通过IE软件访问外部的网站服务器,阻止Wind ...

  5. java算法 蓝桥杯 高精度加法

    问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数,就要用软件来扩展了,比如用数组或 ...

  6. iOS 多线程NSThread理解与场景示例

    NSThread是相对GCD和NSOperationQuene而言,比较轻量级的一种多线程处理方式. 但同时,它的弊端就是需要自己管理线程的生命周期,以及线程同步:而另外两种不需要自己管理. 常见方法 ...

  7. 抽象类 abstract 和 接口 interface 类的区别

    在看一些框架的优秀改良时,都会设计一层base层,并且 base里面一般都是 abstract 类,然后 就找了为什么做的原因.发现: PHP5支持抽象类和抽象方法.抽象类不能直接被实例化,你必须先继 ...

  8. Hybrid容器设计之第三方网站

    平台化容器API释放 接上文:(阅读本文前,建议阅读前三篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 之前设计 ...

  9. [个人翻译]GitHub指导文件(GitHub Guides[Hello World])

    [个人翻译]GitHub指导文件(GitHub Guides[Hello World]) Mirage_j个人翻译,欢迎转载,最好标明出处http://www.cnblogs.com/mirageJ/ ...

  10. [html5] 学习笔记-应用缓存与Web workers

    1.应用缓存 HTML5引入了应用缓存程序,这意味着Web应用可进行缓存,并可在没有因特网连接时访问. 应用缓存的优势: 1)离线浏览--用户可在应用离线时使用它们 2)速度--已缓存是从本地加载,加 ...