作为 Vue 的初学者,您或许已经听过很多关于它的专业术语了,例如:单页面应用程序、异步组件、服务器端呈现等,您可能还听过和Vue经常一起被提到的工具和库,如Vuex、Webpack、Vue CLI和Nuxt。

面对这些海量、未知的专业术语和工具,您很可能会感到无助和绝望,没关系,这是所有新手在初次接触Vue时都会有的感受。

Vue庞大的体系和生态,很可能会让您无所适从。为了便于您更清晰的理解Vue的体系架构,在这里我将为您展示 “2019年Vue开发者知识图谱”,它包含了所有 Vue 开发过程中的关键部分。您可以参考这个图谱,为您在未来学习Vue的框架指引方向。

0.   JavaScript和Web开发基础

如果我让你去阅读纯英文书籍,那么你应该先学习英文,对吗?

同样,Vue是一个用于构建Web用户界面的JavaScript框架。在开始使用Vue之前,您至少必须先掌握JavaScript和Web开发的基础知识。

1.   Vue的基本概念

如果您是一名Vue的萌新开发者,您应该更专注于Vue.js 生态系统的核心,它包括Vue核心库、Vue Router和Vuex。因为这些工具将会在绝大部分的Vue应用程序中出现。

Vue核心功能

在一般情况下,Vue将网页和JavaScript保持同步,实现这一目标的特性是响应式数据指令和插值等模板功能,这些都是第一天需要学习的内容。

在构建你的第一个Vue应用之前,你还必须要去了解如何在网页中安装/使用Vue,以及了解Vue引用实例的生命周期。

组件

Vue的组件是可重复使用、且相互独立的UI元素。您首先需要学习,如何声明组件,及如何通过属性和事件使组件间达成通信。同时,学会组合组件也同样重要,这决定了你能否使用Vue构建出一个健壮、可扩展的Web应用程序。

单页面应用程序

单页面应用程序(SPA)架构,决定了你创建的Web页面能够展示和多页面网站一样丰富的内容,且不会发生在用户点击链接后重新加载整个页面这样低效的行为。

一旦您将您的“页面”创建成了一个Vue组件,您可以为每一个组件使用Vue Router,将每个请求映射到一个唯一的访问路径上,Vue Router是一个由Vue团队维护的用于构建单页面应用程序(SPA)的工具。

状态管理

随着项目规模越来越庞大, SPA的页面上将会有越来越多的组件,管理全局状态也将变得愈发棘手,组件因为大量的属性和事件监听器而变得臃肿。

为应对上述情况,你的需要开始了解Vue的状态管理:一种被称为“Flux”的特殊模式,可将您的数据保存在稳定的中央存储中。Flux可通过Vuex库来实现,该库由Vue团队维护。

2.   生产环境中的Vue

您从第一部分获取的知识理论上可用于构建高性能的Vue应用程序。那么,如何确保他们能够在实际生产环境下运行呢?

如果您要把基于Vue.js 的产品推向用户,您还需要了解更多内容,以下将为您介绍。

项目脚手架

如果您需要经常构建Vue应用程序,您会发现几乎每个项目都会提供配置、设置和开发人员工具。

Vue团队维护了一个名为Vue CLI的工具,它可以让您在几分钟内构建一个强大的Vue开发环境。

全栈 / 认证应用程序

Vue应用是数据驱动型的用户界面,数据通常由Node、Laravel、Rails、Django

或其他服务器框架编写的安全API作为来源,大部分数据是由传统的REST API或GraphQL提供,再或者是Web Socket提供的实时数据。

您应该熟悉这些用于将Vue集成到全堆栈配置中的设计模式,以及在Vue应用程序中保护用户数据安全的各种注意事项。

如果您正在评估什么后端产品是您开发Vue应用时的最好选择,那么这篇文章中应该有您的答案。(后续会翻译)

测试

如果您想确保您的Vue应用程序在生产环境中表现的既可维护又稳定,您需要对您的应用提供完整的测试。

在Vue应用程序中,单元测试可确保您的组件始终为给定的输入(属性或用户输入的内容)提供相同的输出(渲染好的HTML或事件)。

Vue团队维护着一个名为Vue Test Utils的工具,它允许您对组件单独创建和执行测试过程。

优化手段

当您将应用程序部署到远程服务器后,这个应用的访问速度和执行效率很可能不会像在开发阶段表现的那样迅速,很可能当用户访问时速度会变得很慢。

为了提升效率,我们需要优化Vue应用,优化过程可以采用多种技术,如服务端渲染。在服务端渲染中,Vue程序将在服务端执行,在用户访问时,将渲染完成的HTML呈现给用户,从而达到提升访问速度的目的。

当然,优化手段不局限于这一种,还包括:异步组件和渲染功能。

3.   关键工具

到目前为止,我们所掌握的知识皆来自于Vue.js核心和生态系统中的工具。但Vue并不是孤立存在的,它只是前端技术栈的一部分。

在高级开发领域不应该仅仅熟悉Vue,还要熟悉一些其他关键工具,因为它可能将成为未来Vue应用的重要组成部分。

现代JavaScript和Babel

ES5可以有效构建的Vue应用程序,也几乎是所有浏览器都支持的JavaScript标准。

为了增强Vue的开发体验,使用最新的浏览器功能,您可以借助最新的JavaScript

标准(ES2015的特性或ES2016及更高版本的全新功能)来构建您的Vue应用程序。

注意:如果您选择使用了最新的JavaScript,那么旧版浏览器将会出现兼容问题,这很可能会造成您的产品损失掉一部分用户。

如何对旧浏览器做兼容呢? Babel 可以实现这个目的,它的职责就是在应用程序发布前将您应用程序中现代的特性“转换”(翻译和编译)为标准功能。

Webpack

Webpack是一个模块打包工具,意思是如果您的代码是由跨不同模块编写的(例如,不同的JavaScript文件),Webpack也可以将这些内容“打包”到同一浏览器可读的单个文件中。

Webpack 还可以构建流水线,它允许您在构建代码前进行转换。例如,使用前面提到的Babel、Sass或TypeScript,还可以使用一系列插件来优化您的Web应用程序。

许多开发者认为Webpack很难理解,也很难配置,但如果没有它,Vue的一些特性功能(如:单页面组件)将无法实现。我们有关于WebPack的系列教程,助您快速掌握Webpack的使用和配置。

TypeScript

TypeScript是JavaScript语言的超集,它包含了(String、Boolean、Number等)。有了这样的定义,能保证您在开发期间就能编写出健壮且稳定的代码,并尽早发现错误。

即将于2019年推出的Vue.js 3将完全用TypeScript编写,这并不意味着您必须在Vue项目中使用它。但假如您需要通过阅读Vue的内部代码并加入Vue的开源组织为其贡献力量,您至少也应提前了解TypeScript。

4.  Vue框架

基于Vue创建的框架,使您无需从头开始实现服务端渲染,就可创建自己的组件库以及其他类似的工作。

目前有许多优秀的Vue框架,这里,我们只列出了应用在不同领域最为广泛的三个框架。

Nuxt.js

如果你想要构建一个高性能的Vue应用程序,基于路由、服务端呈现、代码分离和其他前沿特性,同时还需要一些更高级的功能,例如:SEO标记等。您可以使用Nuxt.js框架。

Nuxt.js框架通过其丰富的社区插件提供了所有这些开箱即用的特性,甚至更多,如PWA等。

Vuetify

Google的Material Design标准是一个广泛使用的设计语言指南系统,它用于构建漂亮并合理的用户界面,这些界面被广泛应用于Google的产品,如Android和Web系统。

Vuetify框架在一系列Vue组件中实现了Material Design。这允许您使用Material Design布局和样式快速创建Vue应用程序,并在应用程序中实现模态框、提示框、导航栏、分页等页面小控件。

NativeScript-Vue

Vue.js 是一个用于构建Web用户界面的UI库。如果您想将他用于构建移动应用,可以使用NativeScript-Vue框架。

NativeScript是一个使用iOS和Android原生用户界面组件构建应用app的框架,而NativeScript-Vues 是基于NativeScript且支持Vue语法和Vue组件使用的框架。

5.  支持Vue的控件/组件

如果您想在项目中快速构建基于Vue的功能模块,如类似Excel功能和布局的电子表格、前端导入导出Excel、在Web应用程序中嵌入在线Excel、数据分析OLAP、金融图表等,您可以使用一些成熟的商业化开发工具,纯前端表格控件SpreadJS前端开发工具包WijmoJS

纯前端表格控件SpreadJS

SpreadJS 是一款基于 HTML5 的纯 JavaScript 电子表格和网格功能控件,以“高速低耗、纯前端、零依赖”为产品特色,可嵌入任何操作系统,满足 .NET、Java、响应式 Web 应用及移动跨平台的表格数据处理和类 Excel 的表格应用开发,实现在线 Excel 体验。

SpreadJS 在数据展示、前端导入导出、图表面板、数据绑定等场景无需大量代码开发和测试,可极大节省企业研发成本并降低交付风险。

前端开发工具包WijmoJS

WijmoJS 前端开发工具包由多款灵活高效、零依赖、轻量级的纯前端控件组成,如表格控件 FlexGrid、图表控件 FlexChart、数据分析 OLAP 等,完美支持原生 JavaScript,以及 Angular、React、Vue、TypeScript、Knockout 和 Ionic 等框架,可用于企业快速构建桌面、移动 Web 应用程序。

WijmoJS 凭借其先进的体系架构、简单易学的使用文档、超过 500 种 Demo 演示、顶级的控件性能,以及轻松、易用的操作体验,可全面满足企业前端开发所需,是构建企业级 Web 应用程序最高效的纯前端开发工具包。

6.  其他项目

在最后一部分中,我们将介绍一些重要但不包含在上述分类中的内容。

插件开发

如果您要在项目中重用Vue功能,或为Vue生态做出贡献,您可以把这部分功能打包成插件并发布给其他用户。

插件功能是Vue的一个重要特性,有很多工具和模板都可以帮助您创建轻便高效的Vue代码。

动画

动画也是 Vue核心功能的一部分,它允许您向DOM中添加或删除元素时应用动画。 为了启用一个动画,您可以创建CSS类来定义所需的动画效果,无论是淡入淡出、更改颜色还是任何其他效果。Vue将在添加或删除元素时,同时添加或删除您设置相应的类。

渐进式Web应用程序(PWA)

渐进式Web应用程序(PWA)与普通的Web应用程序类似,但用户体验、性能已经得到了增强,同时还增加了部分现代功能,如,离线缓存、服务端渲染、通知推送等。

大部分PWA功能可以通过Vue CLI 3插件或注入Nuxt.js之类的框架添加到Vue应用中,但您仍需学习其中的关键技术,包括Web应用json清单(minifest)和服务等。

扩展控件

在您的Web应用中,如有电子表格、报表、数据分析、金融图表、在线表格编辑等需求,可以使用上文提到的支持Vue框架的控件和组件包,除了无需考虑兼容性问题外,这些控件可使您的Web应用为用户带来更稳定、更高效的使用体验。

Vue 2019开发者图谱的更多相关文章

  1. VueConf 全球首届Vue.js开发者大会资料整理

    最近一直关注VueConf全球首届Vue.js开发者大会,现在将此次开发者大会资料整理如下: 一.Vue 2017 现状与展望   [尤雨溪] 在线视频: PPT整理: Vue 2017 现状与展望 ...

  2. React vs Angular vs Vue 2019

    React vs Angular vs Vue 看待这三个主流框架给出的想法 Angular is the entire kitchen that gives you all the tools ne ...

  3. Vue UI:Vue开发者必不可少的工具

    译者按: Vue开发工具越来越好用了! 原文: Vue UI: A First Look 译者: Fundebug 本文采用意译,版权归原作者所有 随着最新的稳定版本Vue CLI 3即将发布,是时候 ...

  4. 都 9012了,该选择 Angular、React,还是Vue?

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 尽管 Web开发的典型应用场景除了将服务器用作平台.浏览器用作客户端之外,几乎很少活跃于其他业务领域,但不可 ...

  5. React 和 Vue 到底谁更牛?听听尤雨溪怎么说

    React 和 Vue 到底谁更牛?听听尤雨溪怎么说 知乎上近日有人发起了一个 “react 是不是比 vue 牛皮,为什么?” 的问题,再度引发一场关于前端框架谁更牛的口水战,评论里可以说是撕得不可 ...

  6. Vue.2.0.5-深入响应式原理

    大部分的基础内容我们已经讲到了,现在讲点底层内容.Vue 最显著的一个功能是响应系统 -- 模型只是普通对象,修改它则更新视图.这会让状态管理变得非常简单且直观,不过理解它的原理以避免一些常见的陷阱也 ...

  7. 像VUE一样写微信小程序-深入研究wepy框架

    像VUE一样写微信小程序-深入研究wepy框架 微信小程序自发布到如今已经有半年多的时间了,凭借微信平台的强大影响力,越来越多企业加入小程序开发. 小程序于M页比相比,有以下优势: 1.小程序拥有更多 ...

  8. VUE 与其他常见前端框架对比

    对比其他框架(转官方文档) 这个页面无疑是最难编写的,但我们认为它也是非常重要的.或许你曾遇到了一些问题并且已经用其他的框架解决了.你来这里的目的是看看 Vue 是否有更好的解决方案.这也是我们在此想 ...

  9. Angular和Vue.js 深度对比

    Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面.当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强.如今,已有许多开发人员开始使用 Vue ...

随机推荐

  1. LCA离线Tarjan,树上倍增入门题

    离线Tarjian,来个JVxie大佬博客最近公共祖先LCA(Tarjan算法)的思考和算法实现,还有zhouzhendong大佬的LCA算法解析-Tarjan&倍增&RMQ(其实你们 ...

  2. ArrayList,LinkedList和String

    import java.util.ArrayList; public class Demo{ public static void main(String[] args) throws Excepti ...

  3. BZOJ 2959 长跑 (LCT、并查集)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2959 题解 真是被这题搞得心态大崩--调了7个小时--然而并查集都能写成\(O(n^2) ...

  4. Android_(控件)使用ListView显示Android系统中SD卡的文件列表

    使用ListView显示Android SD卡中的文件列表 父类布局activity_main.xml,子类布局line.xml(一个文件的单独存放) 运行截图: 程序结构: <?xml ver ...

  5. 线程系列3--Java线程同步通信技术

    上一篇文章我们讲解了线程间的互斥技术,使用关键字synchronize来实现线程间的互斥技术.根据不同的业务情况,我们可以选择某一种互斥的方法来实现线程间的互斥调用.例如:自定义对象实现互斥(sync ...

  6. 如何使用getattr运行单个函数

    import sys def foo(): print("哈哈想不到吧") if __name__ == '__main__': getattr(sys.modules[__nam ...

  7. SpringSecurity——默认过滤器链

    介绍Spring Security默认的过滤器链,介绍顺序按照过滤器在过滤器链中的顺序排序 1.WebAsyncManagerIntegrationFilter 将Security上下文与Spring ...

  8. 通过ssh管道连接内网数据库(mysql)

    公网连接内网数据库(如云数据库)时,通常需要白名单:如果不是白名单IP,通常需要一个跳板机(类似代理)来连接内网数据库, 下方以mysql为例(其他数据库基本一致): import pymysql a ...

  9. [redis]redis实现分页的方法

    每个主题下的用户的评论组装好写入Redis中,每个主题会有一个topicId,每一条评论会和topicId关联起来,大致的数据模型如下:{ topicId: 'xxxxxxxx', comments: ...

  10. Angularjs E2E test Report/CoverageReport

    前端Angularjs是一个很热门的框架,这篇是学习基于Angularjs的nodejs平台的E2E测试报告和E2E JS覆盖率报告.用到的都是现有的工具,只是一些配置的地方需要注意. 环境前提: 1 ...