框架实战指南-前言

44 阅读16分钟

本文是系列文章的一部分:框架实战指南 - 基础知识

欢迎阅读第一本框架实战指南,名为《基础》。本书凝聚了作者近十年的专业软件开发生涯,也经过了两年多的写作、编辑和润色,是未来 Web 前端开发三部曲的第一部。

本系列将教您如何构建应用程序、现代 Web 框架下的概念以及高级编码模式,以帮助您提升工程水平。

虽然其他资源可以帮助您一次学习一个框架的这些概念,但本系列将帮助您一次学习三个不同的框架:React,Angular 和 Vue。

也就是说,我们将研究这些框架的最新迭代:React 18、Angular 19 和 Vue 3。

值得一提的是,React 和 Angular 的主要版本迭代频率远高于 Vue。因此,如果您以后阅读本文时看到“Angular 24”或“React 22”,则很可能它们在底层使用了类似的概念。

我们之所以能做到这一点,是因为尽管这些框架在很多方面存在差异,但它们都秉承着相同的基本理念,这些理念在任何现代应用程序中都发挥着主导作用。然而,这并不意味着它们完全相同,因此,我将抽出时间分别对每个框架进行阐述,解释它们的不同之处以及它们背后的工作原理。

在本系列结束时,您应该能够自信地使用这些框架浏览任何代码库。

但我要说的有点超前了;首先,让我们回答一些基本问题。

我今天为什么要学习 Web 开发?

学习 Web 开发是软件工程的一项重要技能。即使你最终没有从事 Web 技术工作,你的项目最终使用 Web 技术的可能性也非常高。了解并理解 Web 前端的局限性可以:

  • 使与这些团队的沟通变得更简单。
  • 使构建有效的后端 API 变得更容易。
  • 允许您将这些知识转移到其他 UI 开发。

更重要的是,就业市场规模绝对庞大。美国劳工统计局的数据显示:

预计2020年至2030年,计算机和信息技术行业的就业人数将增长13%,高于所有职业的平均增长速度。预计这些行业将新增约66.76万个就业岗位。

[...]

2020 年 5 月,计算机和信息技术职业的年薪中位数为 91,250 美元

虽然这个数字可能只针对美国,其他国家和市场也可能有不同的比率,但编程往往是可持续的长期职业的良好选择。

我为什么要学习这些工具?

虽然学习 Web 开发作为一项工程工作技能具有广泛的帮助,但学习这些框架尤其有益处。

生态系统规模

首先,这些工具已被广泛采用。React 、Angular 和 Vue 在 2021 年占据了 Web 的 9%,并且还在持续增长。虽然这听起来可能不多,但请记住,截至 2022 年,网站数量已超过 19 亿;即使 1% 也占了近 1000 万个网站。

例如,仅 NPM 平台的 React 每周下载量就高达 1700 万次,并支持 Meta 的产品(包括 Facebook、Instagram 和 Messenger)。此外,React 被众多公司使用;从财富 500 强企业到热门初创公司,都在不同程度地使用 React。

同样,尽管规模较小,Angular 如今依然生机勃勃(不像它的名字相似却又截然不同的前身“AngularJS”)。Angular 每周从 NPM 下载量超过 200 万次,并为微软 Xbox 网站、Office Web Home 网站、谷歌 Voice 网站、Messages 网站、Firebase 仪表盘等众多网站提供支持。

最后,Vue 在过去几年中取得了快速发展。从2019 年的 5000 万次下载到 2022 年 NPM 上的超过 1.25 亿次下载,它在生态系统中取得了惊人的成功。此外,Vue 在中国的采用率也非常高。在中国,Vue 的采用者包括大型购物网站阿里巴巴视频分享平台哔哩哔哩

生态系统工具

虽然生态系统规模很大,但如果没有大量的工具来增强开发人员的体验和上述框架的功能,那么它就毫无意义。

幸运的是,对于这三个框架来说,无数的工具都是建立在它们的基础之上的。

例如,您是否想在项目中添加静态站点生成或服务器端渲染以增强 SEO?没问题:React 有Next.jsGatsby,Angular 有Angular SSRAnalog,Vue 有NuxtJSVuePress

想要添加路由器来为你的应用添加多个页面吗?React 有“React 路由器”Angular 有其内置路由器,而 Vue 有“Vue 路由器”

你想添加全局状态管理,以便更轻松地在整个应用程序之间共享数据吗?React 有Redux,Angular 有NgRx,Vue 有Vuex

清单的列表很长很长。更妙的是,我给的每份清单都不全面!

事实上,虽然这些框架传统上与浏览器的网络相关联,但甚至还有生态系统工具允许您将 Angular、React 或 Vue 嵌入到移动和本机应用程序中。

这些工具包括用于桌面应用的ElectronJSTauri,以及用于移动端的React NativeNativeScript。虽然 React Native 仅支持 React,但我提到的其他选项也支持我们将要讨论的三个框架。

虽然本书不会涉及生态系统的大部分内容,但我们三部曲中的第二本书的标题将是“生态系统”。“生态系统”将教您如何整合本书介绍的基础知识,以便使用这些社区工具构建更复杂的应用程序。

谁在建造什么?

这并不是说这些工具能够继续存在的唯一原因是因为它们很受欢迎;这些框架中的每一个背后都至少有一个著名的支持者。

React 由 Meta 构建,并支持其所有主要应用程序。此外,核心团队已开始通过由主题专家组成的“工作组”就框架开发提供反馈,从而接受外部贡献。近年来,甚至像 Vercel 这样的团队也聘请了 Meta 以外的 React 核心成员来开发该项目

然而,大多数人提到“React”时,往往指的是整个 React 生态系统。React 的核心维护者往往只专注于一小部分工具。相反,他们依赖RemixVercel等外部团队来提供应用程序开发中必不可少的库。

另一方面,Angular 完全由 Google 资助和支持。他们在其框架之上构建了相当一部分主要网站,因此,他们对持续发展有着浓厚的兴趣。与 React 的不同之处在于,Angular 核心团队维护着一系列辅助库,提供从HTTP 调用层表单验证的所有内容。

谈到资金,Vue 常常显得格格不入。Vue 的开发由一个独立团队推动,由来自不同团体和个人的众筹平台进行。虽然目前尚不清楚他们筹集了多少资金,但可以肯定的是,其中肯定有阿里巴巴、百度、小米等重量级的金融投资者。

与 Angular 类似,Vue 核心团队由致力于广泛工具集的团队组成。从官方路由库到其两个不同的全局存储库(VuexPinia),以及其他所有内容都被视为 Vue 核心的一部分。

为什么要学习这三个框架?

虽然显而易见的答案是“它拓宽了你能做的工作类型”,但同时学习多个框架的原因有很多。

具体来说,每个框架都有其自身的限制、规则和最佳实践。这些规则和限制可以帮助你理解一种不同的编码方式,而这种编码方式通常会迁移到其他框架。

例如,Angular 专注于面向对象编程,而 React 生态系统则偏向函数式编程。虽然它们各自的含义并不重要,但它们允许你以不同的方式完成许多相同的事情,并且各有优缺点。

因此,一旦您掌握了每一种方法,您就可以选择在应用程序的各个部分中应用哪种编程方法。

考虑支持

除此之外,重要的是要记住,这三个框架并不是 Web 开发中唯一的选择。例如,Svelte 是一个越来越受欢迎的替代方案。虽然它与我们正在学习的三个选项有更大的不同,但 Svelte 仍然与 React、Angular 和 Vue 共享许多基础。

这种知识转移并不仅限于 JavaScript 或 Web 开发。你对编程任何方面了解得越多,就越能将其运用到其他语言或类型的编程中。我在 Web 开发中使用过的许多 API,在使用原生语言进行工程工作时也同样有用。

这些工具会继续存在吗?

说实话?谁说得准呢。生态系统本身就存在波动;很多开发者在 React 生态系统中待了这么久,肯定会感到某种程度的倦怠。

但事实是:这些工具得到了一些最大公司的广泛支持和使用。

这些类型的工具不会在一夜之间消失,与这些工具相关的工作也不会。

以 ColdFusion 为例。如果你问大多数前端开发者,他们很可能要么不知道 ColdFusion,要么认为它已经死了。毕竟,ColdFusion 的历史可以追溯到 1995 年,而且至今仍然是一种专有的付费编程语言——是的,付费编程语言确实存在。

但 ColdFusion 并没有消亡!(我的朋友 Mark 在几千里之外都能听到他兴奋地大喊大叫,表示赞同。)如今,ColdFusion 仍然被像 2024 年 的 Angular 一样多的网站使用,并且它维持着一个相当规模的生态系统,足以让 Adobe 在 27 年后继续维持这门语言的开发。

此外,从文化角度来看,许多开发人员也厌倦了以看似极快的速度在新框架之间来回切换。许多公司可能会选择使用这些工具的时间比预期的要长,仅仅是因为他们对这些工具的熟练程度有所提升。

仅仅因为一个工具是新的并不意味着它本质上更好;即使是更好的感知工具也可能由于各种原因而不会被选择。

先决条件是什么?

我们将从基础开始学习 React、Angular 和 Vue,直到了解这些框架的内部工作原理。

您不需要具备这些框架的任何先决知识,也不需要具备 JavaScript、HTML 或 CSS 的先决知识。

事实上,我会尽力提供所有预计会用到或对后续学习有帮助的内容的链接。不过,如果你对这些主题还不熟悉,建议你先阅读以下资料:

我们没有学到什么?

在了解我们将要学习的一些具体内容之前,让我们先讨论一下我们不会在本系列中花费专门时间学习的内容

  • 独立 JavaScript API
  • CSS
  • 代码检查工具,例如 ESLint 或 Prettier。
  • IDE 功能,例如 VSCode、WebStorm 或 Sublime Text。
  • TypeScript——虽然 Angular 代码示例会包含其中的一部分,但我们不会深入探讨其细节。

所有这些主题本身都很广泛,内容丰富,足以写成一本书。毕竟,缺乏清晰范围的资源会面临解释肤浅、内容过渡不顺畅,甚至出版延期等问题。

记住,知识就像一张网——这些主题以错综复杂的方式交织在一起!你可以花时间学习这些知识,甚至可以限制你的学习范围,专注于特定的知识子集。没有人能够完美地掌握所有这些知识,这很正常!

但是,再次强调,如果这些主题中的任何一个与本书相关,我们将链接到可帮助您探索更多内容并拓宽知识面的资源。

内容大纲

在了解了我们不会看的内容之后,让我们来讨论一下我们要学习的内容:

这看起来可能让人不知所措,但请记住,本书旨在成为从“新手”到“专家”的资源。您绝对不需要一次性全部掌握。您可以随时停下来,去其他地方看看,然后等您方便的时候再回来。本书不会消失,并且将永远免费在线提供;它是开源的,以确保这一点

等等,还有更多!虽然这是本系列第一本书的大纲,但之后还会有两本书讲解 React、Angular 和 Vue。第二本书将重点介绍这些工具的生态系统,第三本书将专注于内部原理和高级用法。

本书将尝试构建一个“组件简介”章节中概述的单个应用程序。在本书结束时,您将拥有一个功能齐全的用户界面,该界面是您通过本书中展示的代码示例和挑战自行构建的。

如果您已经是特定框架的专业人士并希望快速学习,我们还将提供易于参考的资源:

  • 与这些框架相关的各种术语的词汇表
  • 这些框架之间等效 API 的查找表

关于框架细节的说明

最后,在阅读本书的其余部分之前,我想谈谈有关这些框架的几点:

以下是我们在本书有关 Vue 的教学中应该记住的一些细微差别:

我们正在使用 Composition API

Vue 有两种不同的编写代码的方式:“Options” API 和“Composition” API。

虽然“Options” API 已经存在很久了,而且与 Angular 的类更相似,但本书将使用 Vue 的“Composition API” 。原因如下:

  1. Composition API 较新,并且似乎比 Options API 更受新应用程序的青睐。
  2. Composition API 与 React 的 Hooks 共享一些 DNA,使得解释跨框架概念更加容易。
  3. 一旦完全掌握了 Options API,学习 Composition API 就相对简单了。
  4. 他们的文档很好地提供了 Options API 和 Composition API 中的代码示例——让您可以更轻松地学习这两者。
  5. 该项目的创建者和首席维护者 Evan You 告诉我这么做的。😝

同样,本书也不会介绍Vue 即将推出的另一个基于编译器的语法选择,即$refsugar。然而,本系列丛书中的“内部”一书将带你了解所有这些不同的 API,了解它们存在的原因,以及它们是如何相互构建的。

我们正在使用 SFC

Vue 是一个高度灵活的框架,因此允许您使用各种方法定义组件,每种方法都有其优点和缺点。

本书将特别关注使用“单文件组件”(简称 SFC)方法通过文件创建 Vue 组件.vue

虽然“Internals”一书(该系列的第三本)将介绍其他方法及其底层工作原理,但 SFC 通常被用作大多数应用程序创建 Vue 组件的实际方法。

不用多说,让我们开始吧。