1-关于Vue

来源:互联网 发布:淘宝图片空间网址 编辑:程序博客网 时间:2024/05/18 00:04

Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。
Vue 采用自底向上增量开发的设计。
Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合
当与单文件组件和Vue生态系统支持的库结合使用时,Vue也完全能够为复杂的单页应用程序提供驱动

学习 vue 之前,我们需要对 渐进式框架 有一个基础的认识

框架

库和框架都是一种有别于软件、面向程序开发者的产品形式。

  • 库(Library):

    库是基于基础功能和算法的抽象,库是方法
    库是将代码集合成的一个产品,供程序员调用。
    面向对象的代码组织形式而成的库也叫类库。
    面向过程的代码组织形式而成的库也叫函数库。
    在函数库中的可直接使用的函数叫库函数。

开发者在使用库的时候,只需要使用库的一部分类或函数,然后继续实现自己的功能。
例如: glibc 和 STL 类库,一组有关联关系的类的集合,离最终产品较远,面向应用的开发。

  • 框架 (Framework):

    框架是基于通用功能和常见问题的抽象,框架是工具
    框架是为解决一类问题而开发的产品
    框架用户一般只需要使用框架提供的类或函数,即可实现全部功能。
    框架是库的升级版。

例如: spring , live555 等,一组有关联关系的类库的有效整合,这里的有效离最终产品较近,面向服务的开发,搭建好之后是可以直接提供一些基础服务的。

  • 平台

    平台是基于操作系统级或虚拟机的抽象,基于整个生产、生态环境的抽象
    平台有系统平台、应用平台之分。
    大部分都不指产品,而指产品运行的基础环境,比如系统平台如 Linux ,应用平台如监控平台,CDN平台等。
    有时也会把支持二次开发的成熟的产品也叫做平台,如现在在CDN行业比较火的 Openresty。

类库、框架、和平台的区别和联系

  • 类库:是框架的子集,可以被多个框架使用。
  • 框架:是类库的超集,可以只包含一个类库。
  • 平台:与框架和类库关系不大。
  • 类库集:只是一组有关联关系的类库的松散整合,有可能但不一定会形成框架。

对以上概念有了一些了解之后,有一个问题,前端框架的存在是为了解决什么问题?渐进式有什么好处呢?

为什么要用框架

1. 框架的存在是为了帮助我们应对复杂度

工作中我们可能会遇到各种的问题,这些问题有不同的复杂度。对应不同难度的问题,我们选择与之对应的工具去解决,可以极大的提升我们的生产力

所以,框架本身是帮我们把一些重复的并已经受过验证的模式,抽象到一个已经帮你设计好的 API 封装当中,帮助我们去应对这些复杂的问题

2. 框架自身也有复杂度

框架本身也会带来一些复杂度,在使用时你可能需要花一些时间来学习它
这里就抽象出一个问题,就是要做的应用的复杂度与所使用的框架的复杂度的对比
换句话说,是你所要解决的问题的内在复杂度,与要使用的工具的复杂度进行对比

那么如何为不同的内在复杂度的问题匹配合适的工具呢?

3. 工具复杂度是为了处理内在复杂度所做的投资

工具的复杂度是可以理解为是我们为了处理问题内在复杂度所做的投资。

如果你的问题并不复杂,却用了很复杂的框架,那么就相当于杀鸡用牛刀,不仅失去了工具本身所带来优势,还会增加各种问题,例如培训成本、上手成本,以及实际开发效率等。

如果你的问题很复杂,却用了很并不复杂的框架,就会因为工具太弱而极大的影响到工作进程

只有选择合适的工具,才会起到事半功倍的效果,极大的提升你的生产力

4. Pick the right tool for the job

“Pick the right tool for the job”一切都要看场景,在考虑框架选型问题时,一定要从问题的复杂度出发来选择相应复杂度的工具

5.前端框架复杂度
框架功能

从上图可以看到框架的主要功能:

  • 声明式渲染功能

    基础概念:

  • 声明式(Declarative):

    与命令式相对立,它描述目标性质,让计算机明白目标,而非流程。声明式编程不用告诉电脑问题领域,从而避免随之而来的副作用。声明式是面向对象。

    声明式语言包括数据库查询语言(SQL,XQuery),正则表达式,逻辑编程,函数式编程和组态管理系统

  • 命令式:

    命令式更基于动作,它描述解题过程中的每一步动作。程序的运行过程就是问题的求解过程,命令式面向过程。

    Fortran、ALGOL、COBOL、C、Ada、Pascal等都是命令式程序设计语言。

    声明式的渲染功能可以让我们尽可能的避免手动操作,或可变的命令式操作,尽可能地让 DOM 的更新操作是自动的,状态变化的时候它就应该自动更新到正确的状态

  • 组件系统

    我们需要使用组件系统,将一个大型的界面切分成一个一个更小的可控单元;

  • 客户端路由

    客户端路由是针对单页应用而言
    做单页应用,需要有一个 URL 对应到一个应用的状态,就需要有路由解决方案

  • 大规模的状态管理

当应用简单的时候,一个很基础的状态和界面映射就可以解决问题,但是当应用变得很大,涉及多人协作的时候,就会涉及多个组件之间的共享、多个组件需要去改动同一份状态,以及如何使得这样大规模应用依然能够高效运行,这就涉及大规模状态管理的问题,当然也涉及到可维护性,还有构建工具。

  • 构建工具
    建工具就是用来让我们不再做机械重复的事情,解放我们的双手的。

Vue 非常专注的只做状态到界面映射,以及组件
Vue 是一款 ‘做的少’ 的框架
Vue 的核心虽然只解决一个很小的问题,但它有自己的生态圈及配套的可选工具,当你把他们一个一个加进来的时候,就可以组合成非常强大的栈,就可以涵盖其他的更完整的框架所涵盖的问题。

样的一个配置方案,使得在你构建技术栈的时候有可弹性伸缩的工具复杂度:
当所要解决的问题内在复杂度很低的时候,可以只用核心的这些很简单的功能;
当需要做一个更复杂的应用时,再增添相应的工具,当你把它们一个一个加进来的时候,就可以组成一个非常强大的栈,就可以涵盖其他的这些更完整的框架所涵盖的问题。

视图层核心 + 可选附加库/工具链
可弹性伸缩的工具复杂度应对不用复杂度的场景

Vue渐进式框架:

关于 Progressive(渐进式的)

渐进式代表的含义是:主张最少

每个框架都不可避免会有自己的一些特点,从而对使用者有一定的要求,这些要求就是主张。
主张有强有弱,它的强弱程度会影响在业务开发中的使用方式

比如说,Angular,它是强主张的,如果你用它,必须接受以下东西:
- 必须使用它的模块机制
- 必须使用它的依赖注入
- 必须使用它的特殊形式定义组件(这一点每个视图框架都有,难以避免)

所以Angular是带有比较强的排它性的,如果你的应用不是从头开始,而是要不断考虑是否跟其他东西集成,这些主张会带来一些困扰。

比如React,它也有一定程度的主张,它的主张主要是函数式编程的理念,比如说,你需要知道什么是副作用,什么是纯函数,如何隔离副作用。函数式编程业务逻辑的占比要比视图大的多,如何组织这些东西,是个很厚重的问题

框架是不能解决业务问题的,只能作为工具,放在合适的人手里,合适的场景下 就会发挥很强大的效果
在看一下这张图:

框架功能

Vue 虽然涵盖这张图上的所有功能,但是你并不需要一上手就把所有的东西都用上。

声明式渲染和组建系统是 Vue 的核心库所包含内容,而客户端路由、状态管理、构建工具都有专门解决方案。这些解决方案相互独立,你可以在核心的基础上任意选用其他的部件,不一定要全部整合在一起

Vue与其他框架的区别就是渐进式的想法,没有强主张:“Progressive”——这个词在英文中定义是渐进,一步一步,你可以根据自己的需求来选择功能,不需要一竿子都用上

渐进式的含义,我理解为:不做多余的事情
它会使得你的工具轻量、灵活、并且强大!

原创粉丝点击