当前位置:首页 > 经验 >

为什么会出现vue(vue怎么没了)

来源:原点资讯(www.yd166.com)时间:2022-11-07 06:14:29作者:YD166手机阅读>>

版权声明:本文为CSDN博主「晴天Smile」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/liang377122210/article/details/71545459

————————————————


为什么会出现vue,vue怎么没了(1)


Vue.js新手入门指南

最近在逛各大网站、论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也很多,楼主自己也趁着这个大前端的热潮,着手学习了一段时间的Vue.js,目前用它正在做自己的结业项目。

在做的过程中也对Vue.js的官方文档以及其各种特性有了许多认识。作为一个之前以PHP 模版引擎为主的开发,从一个从未接触过除HTML CSS JavaScript JQuery以外的前端技术的人到现在可以独立使用Vue.js以及各种附属的UI库来开发项目,我总结了一些知识和经验想与大家分享。

下面我就以问答的形式来分享吧。这里假设你仅仅只掌握了HTML CSS JavaScript,如果你对JQuery这个前端库,以及各种后端模版语言比如说PHP,JSP还有所了解并且使用过的话那就太好了。


1、Vue.js是什么?


为什么会出现vue,vue怎么没了(2)

这是官网的介绍,是不是觉得非常的抽象非常的官方?看完之后可能还是有很多人不是很懂这个框架到底是用来做什么的,什么是“渐进式框架”?什么是“自底向上增量开发”?什么是“视图层”?什么是“单文件组件”?什么是“复杂的单页应用?”第二段话里面“响应的数据绑定和组合的视图组件”这又是个啥?还有最后一段话,“Vue.js 与其它库/框架的区别”究竟是什么?

不要担心,如果你慢慢看完这里面的所有问答,一定会对前面那些可能你从未听说过的专业术语有一种恍然大悟的感觉。


2、Vue.js到底是什么?

想必现在能看到我这篇文章的人,都是用着APP或者网页版知乎在阅读把。Vue.js就是一个用于搭建类似于网页版知乎这种表单项繁多,且内容需要根据用户的操作进行修改的网页版应用。


3.单页应用程序(SPA)

顾名思义,单页应用一般指的就是一个页面就是应用,当然也可以是一个子应用,比如说知乎的一个页面就可以视为一个子应用。单页应用程序中一般交互处理非常多,而且页面中的内容需要根据用户的操作动态变化。


4.你前面说的网页版知乎我也可以用JQuery写啊,为什么要用Vue.js呢?

讲到JQuery,就不得不说到JavaScript的DOM操作了。如果你用JQuery来开发一个知乎,那么你就需要用JQuery中的各种DOM操作方法去操作HTML的DOM结构了。

现在我们把一个网页应用抽象一下,那么HTML中的DOM其实就是视图,一个网页就是通过DOM的组合与嵌套,形成了最基本的视图结构,再通过CSS的修饰,在基本的视图结构上“化妆”让他们看起来更加美观。最后涉及到交互部分,就需要用到JavaScript来接受用户的交互请求,并且通过事件机制来响应用户的交互操作,并且在事件的处理函数中进行各种数据的修改,比如说修改某个DOM中的innerHTML或者innerText部分。

我们把HTML中的DOM就可以与其他的部分独立开来划分出一个层次,这个层次就叫做视图层。

Vue 的核心库只关注视图层。

我们为什么要把视图层抽取出来并且单独去关注它呢?

因为在像知乎这种页面元素非常多,结构很庞大的网页中,数据和视图如果全部混杂在一起,像传统开发一样全部混合在HTML中,那么要对它们进行处理会十分的费劲,并且如果其中有几个结构之间存在藕断丝连的关系,那么会导致代码上出现更大的问题,这什么问题呢?

你是否还记得你当初写JQuery的时候,有写过$('#xxx').parent().parent().parent()这种代码呢?当你第一次写的时候,你觉得页面元素不多,不就是找这个元素的爸爸的爸爸的爸爸吗,我大不了在注释里面写清楚这个元素的爸爸的爸爸的爸爸不就好了。但是万一过几天之后你的项目组长或者你的产品经理突然对你做的网页提出修改要求,这个修改要求将会影响页面的结构,也就是DOM的关联与嵌套层次要发生改变,那么$('#xxx').parent().parent().parent()可能就会变成$('#xxx').parent().parent().parent().parent().parent()了。

这还不算什么,等以后产品迭代越来越快,修改越来越多,而且页面中类似的关联和嵌套DOM元素不止一个,那么修改起来将非常费劲。而且JQuery选择器查找页面元素以及DOM操作本身也是有性能损失的,可能到时候打开这个页面,会变得越来越卡,而你却无从下手。

当你在编写项目的时候遇到了这种问题,你一定会抱怨,为什么世上会有HTML这种像盗梦空间一样的需要无数div嵌套才能做出页面的语言,为什么当初学JQuery看中的是它简洁的DOM操作,现在却一点也不觉得它有多简洁,难道我学的是假的JQuery?为什么写个代码这么难,你想砸电脑,你想一键盘拍在产品狗的脑袋上,责怪他天天改需求才让你原本花清香茶清味的代码变得如此又臭又长。

这个时候如果你学过Vue.js,那么这些抱怨将不复存在。


5.Vue.js为什么能让基于网页的前端应用程序开发起来这么方便?

因为Vue.js有声明式,响应式的数据绑定,与组件化的开发,并且还使用了Virtual DOM这个看名字就觉得高大上的技术。

可是这些名词都是啥?


6.响应式的数据绑定

这里的响应式不是@media 媒体查询中的响应式布局,而是指vue.js会自动对页面中某些数据的变化做出响应。至于是如何响应的,大家可以先把下面这段代码随便粘贴到一个扩展名为html的文件然后用浏览器打开,随便在文本框里面输入一些文字,观察一下页面变化。


为什么会出现vue,vue怎么没了(3)


是不是会发现一个很神奇的现象,文本框里面输入的文字和后面的p标签中的内容一起变化?

换句话说,p标签里面通过{{ message }}这个写法与input标签中的value绑定在了一起,其中变化,另外一个和它绑定的数据就跟着变化。

结合标题来说,就是vue.js会自动响应数据的变化情况,并且根据用户在代码中预先写好的绑定关系,对所有绑定在一起的数据和视图内容都进行修改。而这种绑定关系,在图上是以input 标签的v-model属性来声明的,因此你在别的地方可能也会看到有人粗略的称vue.js为声明式渲染的模版引擎。


7.组件化开发

还记得在传统前端开发的时候,我们都是每个人做一个页面,然后最后套入各种后端模版引擎,比如说PHP的Smarty或者Java的JSP等等。

但是现在我们做单页应用,页面交互和结构十分复杂,一个页面上就有许许多多的模块需要编写,而且往往一个模块的代码量和工作量就非常庞大,如果还按照原先的方法来开发,那么会累死人。而且遇到以后的产品需求变更,修改起来也非常麻烦,生怕动了其中一个div之后,其他div跟着雪崩,整个页面全部乱套,或者由于JavaScript的事件冒泡机制,导致修改一些内层的DOM事件处理函数之后,出现各种莫名其妙的诡异BUG。

在面向对象编程中,我们可以使用面向对象的思想将各种模块打包成类或者把一个大的业务模块拆分成更多更小的几个类。在面向过程编程中,我们也可以把一些大功能拆分成许多函数,然后分配给不同的人来开发。

在前端应用,我们是否也可以像编程一样把模块封装呢?这就引入了组件化开发的思想。

Vue.js通过组件,把一个单页应用中的各种模块拆分到一个一个单独的组件(component)中,我们只要先在父级应用中写好各种组件标签(占坑),并且在组件标签中写好要传入组件的参数(就像给函数传入参数一样,这个参数叫做组件的属性),然后再分别写好各种组件的实现(填坑),然后整个应用就算做完了。


8.Virtual DOM

现在的网速越来越快了,很多人家里都是几十甚至上百M的光纤,手机也是4G起步了,按道理一个网页才几百K,而且浏览器本身还会缓存很多资源文件,那么几十M的光纤为什么打开一个之前已经打开过,已经有缓存的页面还是感觉很慢呢?这就是因为浏览器本身处理DOM也是有性能瓶颈的,尤其是在传统开发中,用JQuery或者原生的JavaScript DOM操作函数对DOM进行频繁操作的时候,浏览器要不停的渲染新的DOM树,导致页面看起来非常卡顿。

而Virtual DOM则是虚拟DOM的英文,简单来说,他就是一种可以预先通过JavaScript进行各种计算,把最终的DOM操作计算出来并优化,由于这个DOM操作属于预处理操作,并没有真实的操作DOM,所以叫做虚拟DOM。最后在计算完毕才真正将DOM操作提交,将DOM操作变化反映到DOM树上。

对于vue.js的Virtual DOM,目前业界有着褒贬不一的评价。有人认为Vue.js作为一个轻量级框架,引入Virtual DOM会加大Vue.js本身的代码尺寸,也会消耗更多CPU(手机上会更耗电)(注意:消耗更多的CPU并不意味着会更卡,因为JavaScript计算是后台计算,他的计算量还不至于让DOM操作变得卡顿),并且在操作单个DOM元素的时候,反而多了一道计算工序,会更慢。但也有人认为基本上会用Vue.js开发的都是页面中内容很多的元素,肯定操作的DOM量级普遍较大,平均一下还是比较划算的。


9.我到底该怎么用Vue.js做单页应用开发?

说了这么多,我还是不知道怎么用它做出一个像知乎那样的页面啊,到底怎么学它呢?

前面我们看了一个响应式的数据绑定案例,那只是一个DEMO,而且也看不出有什么实际意义,离真正的单页应用程序还差得远,到底怎么用它开发真实的项目呢?

我的建议是,先把介绍 - vue.js官方文档的基础部分硬着头皮看一遍。除了组件这个小节涉及到了很多晦涩难懂的名词以外,前面几章完全就是把Vue.js当作一个模版引擎来用。

然后开始学习ECMAScript6,Webpack,NPM以及Vue-Cli的基本用法,最好对Node.js也要有所了解。

最后组件部分先大致看一遍,了解组件里面都有哪些概念之后,开始看网上各种实战视频以及文章还有别人开源的源代码。


10.在前面你提到过好几次ECMAScript,这是啥?

ECMAScript听名字好像和JavaScript很像,难不成他们有什么千丝万缕的联系?

没错你猜对了,他们之间还真有着很深的联系。

引用阮一峰老师的话:(ECMAScript 6入门)

为什么会出现vue,vue怎么没了(4)

首页 12下一页

栏目热文

哪些大公司用vue(大厂为什么不用vue)

哪些大公司用vue(大厂为什么不用vue)

【51CTO.com快译】作者丨Ashika Elza译者丨布加迪策划丨云昭应该使用哪种 JavaScript 框架:R...

2022-11-07 06:28:59查看全文 >>

vue有前景吗(vue开发移动端app)

vue有前景吗(vue开发移动端app)

vue.js优势介绍:渐进式构建能力是vue.js最大的优势,vue有一个简洁而且合理的架构,使得它易于理解和构建。vu...

2022-11-07 06:20:59查看全文 >>

vue是国内开发的吗(vue是最新技术么)

vue是国内开发的吗(vue是最新技术么)

今天在浏览知乎的时候,看到这么一个问题:在前端中,今年是 Vue 的天下吗?为什么现在各大招聘网站上招的都是要求会 Vu...

2022-11-07 06:06:01查看全文 >>

vue被淘汰了(vue会被淘汰么)

vue被淘汰了(vue会被淘汰么)

6月30日,腾讯收购的原创Vlog平台“VUE VLOG”宣布将于2022年9月30日23时59分停止VUE VLOG的...

2022-11-07 06:00:33查看全文 >>

vue用的人多不多(vue 难不难)

vue用的人多不多(vue 难不难)

一句话总结:用数据绑定的思想,vue可以简单写单个页面,也可以写一个大的前端系统,也可以做手机app的界面。1、Vue....

2022-11-07 06:08:03查看全文 >>

什么样的公司用vue(为什么要学习vue)

什么样的公司用vue(为什么要学习vue)

以前有人说 vue 适合小项目,没找到佐证的东西,最近看到一个统计,统计上万网站发现,使用 vue 的站点更小更快,v...

2022-11-07 06:00:45查看全文 >>

vue被淘汰了吗(vue为什么停运)

vue被淘汰了吗(vue为什么停运)

作者 | Yanique Andre译者 | Arvin,责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | C...

2022-11-07 05:56:20查看全文 >>

vue 真的比其他框架好吗(vue最好用的框架)

vue 真的比其他框架好吗(vue最好用的框架)

  VueJS 是一个用于构建 Web 界面的 JavaScript 库,它旨在为数据反应组件提供简单灵活的 API,...

2022-11-07 06:09:10查看全文 >>

vue到底好不好用(vue好处与缺点)

vue到底好不好用(vue好处与缺点)

在本文中,我们将探讨一些最常见的vue js组件。你可以收藏一波。Vue Tables-2地址:https://gith...

2022-11-07 05:56:00查看全文 >>

国内哪些公司用vue(vue有前途吗)

国内哪些公司用vue(vue有前途吗)

南方财经全媒体见习记者程浩 东莞报道“跨越微米、亚微米,我们的检测精度要向纳米进军,不断向技术高峰攀升。”站在一台自主研...

2022-11-07 06:01:45查看全文 >>

文档排行