Vue是什么?能给我们的前端开发带来什么好处?

“这里是云端源想IT,帮你轻松学IT”
嗨~ 今天的你过得还好吗?
所有的糟糕都是经历
所有的美好都会在最后相遇
- 2023.05.08 -
最近知乎上看到关于前端框架Vue的提问,想必对于前端新手来说HTML+CSS+JS是经常被挂在嘴边的,大家已经耳熟能详了,那么Vue又是什么?前端能用它做什么呢?

今天小编就来给大家讲讲什么是Vue,Vue框架在前端开发中的作用以及它的优缺点。

一、Vue是什么?
Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。

Vue就是一个JS库,并且无依赖别的JS库,直接引入一个JS文件就可以使用,与传统JS和JQuery框架不同,Vue的渐进式框架表示开发者可以由简单组件写起,渐渐搭建出一个复杂的前端平台。
形成Vue渐进式框架的核心概念为:组件化,MVVM,响应式,和生命周期。下面分别说说这几个核心概念是什么,为什么要使用Vue来作为前端开发的框架。
二、为什么要用Vue?
1. 组件化
Vue将组成一个页面的HTML,CSS和JS合并到一个组件中,可以被其他组件或页面引入而重复利用。通常每个.Vue文件作为一个组件导出,组件可以作为基础组件(如按钮)或一个页面(如登录页面)。

组件化很好的将一个庞大复杂的前端工程拆分为一个个组件,重复利用的性质也大大提高了开发的效率。
2. MVVM 数据双向绑定
MVVM模式(全称为Model-View-ViewModel)为Vue实现数据双向绑定。
在MVVM中,View为视图层,ViewModel为业务逻辑层,Model为数据层。
什么是数据双向绑定呢?
当用户使View变化时(如填写表单),变化会自动同步到ViewModel处理相应逻辑,并将变化更新到Model数据库。
反之,若服务端数据变化(如股价波动),变化会自动同步到ViewModel处理相应逻辑,并将变化同步到View展现给用户。
在用Vue之前,完成HTML和JS之间的交互需要使用大量的DOM操作来实现动态加载。

MVVM的数据双向绑定减少了DOM操作,更高效地实现了视图和数据的交互。同时,MVVM使界面、交互和数据层分离,便于设计人员负责设计界面,后端开发人员提供数据接口,而前端开发人员专注于业务交互逻辑的实现。
3. 响应式虚拟DOM
对于DOM来说,当HTML的一个元素(如div)需要响应数据更改时,会刷新整个页面,导致效率堪忧。
对于虚拟DOM,浏览器会将HTML文件转换为JS文件并复制一个额外使用(虚拟)。对于任何更改,虚拟DOM都将复制的JS与原始JS进行比较,只重新加载更改的部分,局部修改到真实DOM上。

在Vue中,每个绑定data属性的组件都有一个Watcher检测data属性的变化。一旦检测到改变,则重新渲染该组件,这就是响应式。
4.生命周期
最后,每个Vue组件都有生命周期,过程为创建 -> 挂载 -> 更新 -> 销毁。开发者可以通过钩子函数(如mounted)在组件生命周期中的不同时刻进行操作。下面是一张Vue生命周期的完整图解。

VUE 的生命周期指的是组件在创建、运行和销毁过程中所经历的一系列事件,通过这些事件可以让开发者在不同阶段进行相应的逻辑处理。VUE 组件的生命周期分为 8 个阶段:
- beforeCreate:组件实例刚被创建,但是数据还未初始化。在这个阶段,无法访问到 data 和 methods 等组件属性。
- created:组件的数据已经初始化完成,但是 DOM 元素还未生成。可以进行一些异步操作,如发送 AJAX 请求获取数据等。
- beforeMount:组件即将被挂载到页面上。在这个阶段,所有的模板和组件都已经编译成 render 函数,并准备好渲染。
- mounted:组件已经挂载到页面上,此时可以访问到组件的 DOM 元素。可以进行一些需要访问 DOM 元素的操作,如使用第三方插件等。
- beforeUpdate:组件更新之前被调用,在此时可以对组件进行更新前的状态和数据进行处理。
- updated:组件更新完毕后被调用。在此阶段中不能再更新组件的数据,否则会导致死循环。
- beforeDestroy:组件即将被销毁,在此时可以进行一些清理工作,如清除定时器、解绑事件等。
- destroyed:组件已经被销毁,此时所有的事件监听和子组件都已经被移除。
掌握 VUE 组件的生命周期可以帮助开发者更好地理解组件的运行机制,在不同阶段进行相应的逻辑处理,从而实现更加灵活、高效的组件开发。
四、Vue的优缺点
Vue能够成为目前主流的框架之一,必然是跟它高效、易用和灵活等等的优势息息相关的,当然也存在一些缺点限制了它在大型项目中的使用,小编在这里整理了它的部分优缺点。
优点:
1. 轻量级
Vue作为一款轻量级前端框架,大小只有18–21KB,工程搭建简单,只需要几行命令符。因为Vue使用的主体语言为JS,开发者可以灵活地将其他框架(如React和Angular)的项目迁移到Vue,具有很高的集成能力。Vue提供的router路由可以便捷地搭建一个多界面应用。
2. 高性能
虚拟DOM和响应式避免了不必要的全局重新渲染,提升了用户体验,使用户操作更加流畅。
3. 好上手
与面向对象编程性质类似,组件化更符合人类思维。打个比方,我们在设计网页时,通常会把一个界面分成一块一块的、用于某功能的特定样式模块。Vue的组件化使前端开发更加容易理解,同时MVVM可以更便捷地实现交互,对新手十分友好。
4. 插件化
由于Vue框架的流行性,目前有许多基于Vue的npm扩展包和开发工具(如Vuex)。Vue可以在一个文件下统一管理所有外部插件的全局使用。
5. 便于测试
组件化利于开发者对于单一组件进行测试,很少发生在整个页面下找不到是哪个地方报错的情况。
6.运行速度更快
像比较与react而言,同样都是操作虚拟dom,就性能而言,vue存在很大的优势
7.视图,数据,结构分离
使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作

缺点:
1. 生态系统相对较小
与 React 和 Angular 相比,Vue.js 的社区和第三方组件库相对较小,可能需要自己编写一些功能组件。
2. 缺乏官方支持
由于 Vue.js 是由个人创建并维护的项目,缺少像 React 和 Angular 工具链一样的官方支持,这可能使一些企业或开发者对其使用感到不安。
3. 中小规模项目适用
Vue.js 更适合中小规模的项目,大型项目使用会有一些限制,如处理复杂的数据流和状态管理。

Vue是目前比较火的前端框架之一,通过这篇文章你对Vue是不是有了一定的了解呢?至于新手到底要不要学Vue看你自己选择了,简单易上手,学习成本低,也是很多人推荐新手学Vue的理由之一。
今天的分享就到这里了,记得点赞和收藏!

我们下期再见!
END
文案编辑|云端学长
文案配图|云端学长
内容由:云端源想分享

请先 后发表评论~