什么是Vue.js框架 为什么选择它?


Posted in Javascript onOctober 17, 2017

“大白话,讲编程”系列又回来了,这个系列我们一起学习的是Vue.js基础知识。你没看错,是基础知识。所以,哪怕你入行不久,相信你在的大白话风格下,也能学会。

但还是希望你有开发过html,css,javascript的项目经验,如果你连一点项目经验都没有,亦或者你早已掌握Vue.js的知识,那么这个系列不适合你当前的学习阶段。

1 学习目标

通过这一节,你会学会:

1.目前前端技术使用的趋势

2.什么是MVVM

3.Vue.js的优点

4.Vue.js的两大核心

5.Vue.js的适用场景

2 诞生背景

近几年来,得益于手机设备的普及和性能的提升,移动端的web需求大量增加,产生了一种叫webapp的东西,也就是移动端的网页应用。

它们功能越来越复杂,交互也越来越酷炫,功能与效果越来越接近于原生的APP。比如下面这些:

什么是Vue.js框架 为什么选择它?

什么是Vue.js框架 为什么选择它?

(效果直逼原生APP)

这种webapp它们不仅仅像h5营销网页一样有酷炫的效果,它们还有复杂的点击、输入、下拉选择,视图切换等复杂的交互。在这样的业务需求下,我们还是沿用PC端的开发方案,难免会不太合适。比如:视图切换。

在PC端,视图切换我们会用标签进行页面的跳转,但如果在移动端,那就歇菜了,你会遇到这样的画面:

什么是Vue.js框架 为什么选择它?

(等到花儿都谢了)

这个时候用户只能等.....3秒,5秒,8秒.......很难想象,在一个需要频繁切换视图的webapp里面,使用标签去实现,对用户来说是很不友好的,换你你也不愿意等那么久,反正我是不愿意了....

此外,接收用户输入的同时,很可能要及时更新视图,比如用户输入不同的内容,页面就会相对应进行更新,点击不同的选项,就会显示不同的状态等等交互效果。一旦这种交互多了,你要手动地进行操作,代码就容易变得复杂和难以维护。

为了解决webapp这些的体验和开发上的不足,我们决定学习并使用一个MVVM框架——Vue.js

3 什么是MVVM

MVVM可以拆分成:View --- ViewModel --- Model三部分 ,看下面的视图:

什么是Vue.js框架 为什么选择它?

那么,我们怎么理解MVVM呢?

上图中,左侧的View相当于我们的DOM内容,我们所看到的页面视图,右侧的Model相当于我们的数据对象,比如一个对象的信息:

而中间的监控者就负责监控两侧的数据,并相对应地通知另一侧进行修改。比如:你在Model层中修改了name的值为:“李四”,那么View视图层显示的“张三”也会自动变成了“李四”,而这个过程就是有ViewModel来操作的,不需要你手动地去写代码去实现(你不用再手动操作DOM了)。

如果你写过复杂的DOM操作,你就可以感受到它带来的便利。

这就是MVVM框架,属于MVVM的JS框架除了Vue.js,还有React.js,Angular.js。

这里我们不去分析具体这3个框架哪个更好,关于技术选型,每个开发团队的情况都不一样,考虑的因素也不一样,只要合适自己就好。这里我们只说一下Vue.js的优点:

1.Vue.js更轻量更快

2.更容易上手,易学

 

 
 
 
 
 
 

4 Vue的核心

 

铺垫了这么多,终于讲到了Vue的核心。

那么,我们就来认识一下Vue.js,这里摘取一段官网对它的介绍:

通过尽可能简单的API实现响应的数据绑定和组合的视图组件

 
 

 

这句话有两个关键词:数据绑定视图组件

Vue的数据驱动:数据改变驱动了视图的自动更新,传统的做法你得手动改变DOM来改变视图,vuejs只需要改变数据,就会自动改变视图,一个字:爽。再也不用你去操心DOM的更新了,这就是MVVM思想的实现。

视图组件化:把整一个网页的拆分成一个个区块,每个区块我们可以看作成一个组件。网页由多个组件拼接或者嵌套组成。看下图:

什么是Vue.js框架 为什么选择它?

具体在开发过程中怎样实现一个组件,到底哪些区块可以划分成一个组件,后面的章节我们再一一介绍,这里你只需要知道,在Vue.js中,网页是可以看成多个组件组成的即可。

5 适用场景

如果你还在用jquery频繁操作你的DOM来更新页面的话,那么,你可以用Vue.js来解放你的DOM操作了。

如果你的项目中有多个部分是相同的,并可以封装成一个组件,那么,你可以试试用Vue.js。

此外,Vue.js的核心实现中使用了ES5的Object.defineProperty特性,IE8及以下版本浏览器是不兼容的,所以,你的项目需要兼容这些较低版本的浏览器的话,那么,Vue.js就不适用了。

毕竟,开发一个项目的目的不是为了使用某个框架。

6 本节小结

为了更好满足当前移动webapp项目的开发需求,MVVM框架诞生,而Vue.js便是这样的一种js框架,其两大核心:数据驱动和组件化。

来源:公众号:web前端教程

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
简单js代码实现selece二级联动(推荐)
Feb 18 Javascript
jquery $(document).ready()和window.onload的区别浅析
Feb 04 Javascript
jQuery动态修改字体大小的方法【测试可用】
Sep 09 Javascript
JavaScript中document.referrer的用法详解
Jul 04 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
Jun 12 Javascript
vue实现自定义日期组件功能的实例代码
Nov 06 Javascript
VUE中使用MUI方法
Feb 12 Javascript
vue+element实现表单校验功能
May 20 Javascript
layui点击数据表格添加或删除一行的例子
Sep 12 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
Aug 31 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
Nov 12 Javascript
node使用Koa2搭建web项目的方法
Oct 17 #Javascript
Node 自动化部署的方法
Oct 17 #Javascript
利用JS实现scroll自定义滚动效果详解
Oct 17 #Javascript
jquery实现图片跟随鼠标的实例
Oct 17 #jQuery
vue获取input输入值的问题解决办法
Oct 17 #Javascript
node.js 用socket实现聊天的示例代码
Oct 17 #Javascript
Bootstrap图片轮播效果详解
Oct 17 #Javascript
You might like
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
php写app用的框架整理
2019/09/29 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
Python-for循环的内部机制
2020/06/12 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
德国购买门票网站:ADticket.de
2019/10/31 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
作风转变年心得体会
2014/10/22 职场文书
期末复习计划
2015/01/19 职场文书
2015年物资管理工作总结
2015/05/20 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
PHP新手指南
2021/04/01 PHP