对于什么是全栈开发者并无一个明确的定义。可是,有一件事是确定的:2019 年对全栈开发者的需求量很大。在本文中,我将向你概述一些趋势,你能够尝试根据这些趋势来肯定你可能要投入的时间。前端
简单地说,全栈开发者就是能够构建完整应用程序的人。他们了解前端和后端技术、工具和服务,并结合全部这些技能开发出能够在生产环境中运行的东西。webpack
这是美国全栈开发者在 2019 年的工资走势:git
人生苦短,因此尽可能少作无用功。若是你但愿保持最新状态并成为全栈开发者,如下是你须要了解并考虑列入学习计划的 2019 年技术趋势。程序员
基础
HTML、CSS 和 JavaScript 是必须掌握的,你还须要学习 React、Vue 或 Angular 等前端框架或库。可是,你应该选择哪个?对于一个真正的全栈开发者,你能够在 2019 年选择这三个框架中的任何一个。web
来自React 16 的更新
你须要了解 React 的基础知识及其基于单向数据流架构的组件。今年咱们看到了 React 16 的大量更新和 2019 年即将发布的一些小版本更新。算法
新的生命周期方法;数据库
这意味着你须要知道如何使用 React.lazy() 和 < React.Suspense> 进行代码拆分,使用 React.memo 进行优化,并时刻关注新功能,如 React Hooks,它可能会给 React 生态系统带来重大改变。编程
咱们如今还有标准化的 React Context API,你应该对它有一个基本的了解。json
React 生态系统将在 2019 年继续发展和演化。它这不只限于 Web,在移动、物联网和 AR/VR 等不一样平台上移植和使用 React 的能力将使其变得愈来愈重要,并在 2019 年领先于其余 2 个库。后端
Vue 3.0
2018 年,Vue 持续得到开发者的青睐,2019 年将会继续增加……但它是否足以超越其余两大玩家?咱们拭目以待。
Vue 生态系统正在不断发展,并且,随着 Vue 3.0 的发布极其改进的 Vue CLI,2019 年的开发者体验将比以往更好。
开发者可使用 Vue Native 进行跨平台开发(就像 React Native 那样),咱们已经很接近 React 那样的大型生态系统,但仍是有一大段距离。
Vue 有一个很是有趣的趋势,它将在 2019 年继续增加:阿里巴巴、百度、腾讯、小米和 DJI 等中国科技巨头更喜欢 Vue。预计中国市场将继续保持快速增加,由于 Vue 是一个独立的开源库,与西方的大型科技巨头无关。
Angular Ivy 和 Angular Elements
新的渲染引擎 Ivy 即将推出,性能将会获得大幅提高。
Ivy 将成为 Angular 渲染引擎的第三个化身,它的目标是成为更小、更快、更简单的编译器。
Angular Elements 将使咱们可以在 Angular 之外的其余环境中使用 Angular 组件。简单地说就是你能够构建能够被添加到不使用 Angular 的 HTML 页面中的组件,有点像 Web 组件。如今,我可使用 Angular 建立世界上最好的组件,并将它交给个人朋友,她将它用在她的 React 应用程序中!
2019 年,Angular 将继续作他们擅长的事情:提供一个功能齐全的框架,用于构建丰富的 Web 应用程序。
Angular、Vue、React——更小更快
总的来讲,2019 年将看到这 3 个前端库的发展。如前所述,你只要掌握其中一个,就已经为进入新的一年作好了准备。预计在 2019 年,这些库都会发生微小的变化,提升渲染速度并缩小库的体积……但它们都不会带来任何重大改进来压倒其余库。
CLI 将会风靡
你必须使用 babel、webpack、eslint、测试库和其余工具搭建项目脚手架的日子已经一去不复返了。个人意思是,咱们仍然能够这么作,但 CLI 确实让这种体验变得更好了。
2019 年,咱们将在 CLI 中看到愈来愈多的改进体验。
状态管理
新的 Context API、Redux 和 GraphQL
Apollo 内置的离线客户端缓存将使 Apollo + GraphQL 在 2019 年成为 Redux 的一个重要替代品(固然,从技术上讲,能够同时使用它们)。新的 Context API 问世了,不少人称它为 Redux 终结者。
2019 年,你须要了解它们三者,了解它们的工做原理,以及它们能够用来解决哪些问题。但若是从就业方面来看,学习 Redux 仍然是一个很好的选择。
服务器端渲染
服务器端渲染在 JavaScript 领域仍然是一个待解决的问题。咱们知道,单页应用程序和客户端渲染很容易让项目出现代码膨胀,并且须要向客户端发送太多的 JavaScript 代码,并且可能会影响你的 SEO(但可能没有你想象的那么多)。
有一些方法能够解决这个问题,例如:PRPL 模式、prerender.io,或者你能够这么想,其实谷歌机器人在抓取单页应用程序时没有那么糟糕。
目前,若是要进行服务器端渲染,可使用:
静态页面正在从新刮起一阵流行风,你能够看看 JAM Stack:
https://www.netlify.com/blog/...
它的主要思想是:预构建标记(静态页面),经过利用服务器的 API 在客户端成为动态单页面应用程序。这将在 2019 年真正改变服务器端渲染,我预测会有更多人使用像 GatsbyJS 这样的工具,而不是本身构建复杂的服务器端渲染逻辑。
浏览器采用的 Web 组件终于离咱们想要的标准愈来愈近了。2019 年,咱们将看到更多关于 Web 组件的讨论,但它仍然不会在 2019 年达到临界点。你能够密切地关注它们,但不须要花费大量时间在掌握如何构建 Web 组件上。
你能够了解 React、Angular、Vue 和普通 HTML 的组件,但很难说 Web 组件会在何时获得大规模采用并为咱们带来主要的好处。
性能
每一个人都喜欢谈论性能。2019 年,代码拆分可能会成为标准实践,更多新的优化图像格式(如 WebP)将会发挥愈来愈重要的做用。
人们仍然会讨厌谷歌的 AMP。
你应该学习并为 2019 年作好准备的是:
PWA
渐进式 Web 应用程序在 2019 年仍然会很热门,但它最复杂的功能可能不会流行起来(即推送通知)。
大多数状况下,你将使用 HTTPS、App Shell 和 Service Worker 来得到一些额外的脱机功能、安全性和性能。你应该学习如何构建 PWA,并使用像 Lighthouse 这样的工具来测试它。
Safari 最终为 PWA 添加了一些支持,实现渐进式 Web 应用程序功能可能会更容易一些。但说到底,你须要先学会使用 manifest.json 文件和 Service Worker。谷歌正在这方面努力推动,但不要期望在 2019 年会看到任何突破。
别担忧!2019 年的后端世界并不会像前端世界那样疯狂。
HTTPS 无处不在
须要将用户输入的数据发送到服务器的网站必须使用 HTTPS。若是你没有使用 HTTPS,谷歌将会惩罚你。幸运的是,HTTPS Everywhere 或 Gaddy 让迁移到 HTTPS 变得更容易。
REST 与 GraphQL
RESTful API 在 2019 年还会存在,你须要学习如何实现和设计这些 API。你应该学会使用 Node.js 和 Express.js 来建立 API 服务器,在 2019 年,这两个框架的组合仍然会占主导地位。
如今出现了不少有关 GraphQL 的炒做,但它还不是能够赢得全部市场的大赢家。了解 GraphQL 能够解决哪些问题,以及如何在 RESTful API 中用它来进行路由优化。这将是 2019 年最重要的趋势:不是如何单独使用 GraphQL,而是如何在极少数状况下使用 GraphQL 优化一些 RESTful API 路由。
HTTP2
HTTP2 变得愈来愈广泛,你须要知道如何使用这个协议来优化内容的传输。此外,HTTP3 正在开发当中,你能够关注它,但它并非你在 2019 年须要过度关注的东西。
基础设施即服务
须要本身构建和管理服务器的场景愈来愈少,如下是 2019 年的主要选择。
你须要学习 SQL
Firebase、AWS 等托管数据库将继续增加,但你仍是须要学习 SQL。2019 年,像 PostgreSQL 这样的数据库将继续发展,而像 MongoDB 这样的 NoSQL 数据库彷佛会有所降低。你可能须要了解每种方案的优势和缺点,由于在数据库领域并无能够解决全部问题的完美解决方案。
不要把搜索给忘了
搜索可能不是绝对必要的,但它是 Web 的重要组成部分。2019 年,全栈开发者能够试着了解下面两个平台:
你可能须要学习 Redis
了解使用 Redis 做为缓存以及内存存储的工做原理。缓存和内存存储是 2019 年须要学习的重要概念,能够用它们来优化你的系统。Redis 是理解这些概念的一个很好的起点。
学习三种测试类型
不少人都在讨论这个话题,但为了简单问题,能够将测试分解为三种类型:
保持简单
测试框架有不少选择,但下面是 2019 年最好的两个组合:
将 Jest 视为一体化的测试框架,就不须要像第二个选项那样添加其余工具和库。若是你想要简单些,只需使用 Jest。若是你想要更多可定制性和模块化,请选择 Mocha。
若是你还了解这些,那是锦上添花:Mock、Spy、存根和快照测试。
适当的端到端测试就能够了
进行端到端测试须要公司投入大量的成本,因此在你的职业生涯中有可能会也有可能不会遇到这种测试。但无论怎样,在 2019 年,你最好能够学习这些框架,或至少能够了解一下:
跟移动开发说再见?
移动开发在 2019 年的日子可能会有点难过。应用程序的下载量不像过去那么多,并且最热门的下载要么是游戏,要么是大型科技公司的应用程序。2019 年,移动端 Web 浏览量将超过原生移动应用程序。所以,对于全栈开发者和移动开发者而言,他们应该将更多的关注点放在移动设备 Web 应用程序上(例如使用 PWA)。
iOS 和 Android 仍然是企业所须要的重要开发技能,但在过去几年中对它们的需求一直在降低,彷佛出现了从原生移动开发到 React Native 引领的混合开发(或接近原生)的重大转变。若是你看一下上面的图表,React Native 已经取代了 Swift,它是原生 iOS 开发的主要编程语言。
如下是你须要关注的开发技术:
React Native 在 2018 年遭遇了一些挫折,一些大公司在博文说他们正在放弃它。但这些公司都曾经尝试将 React Native 添加到他们现有的 iOS 或 Android 代码库中。若是你是这方面的新手,对于你来讲,它仍然是 2019 年的一个很好的选择。它将会继续增加下去。
Flutter 在 2018 年很是火爆,但如今判断它在 2019 年将会怎样发展还为时过早。你须要关注它,但到目前为止,它并无带来比 React Native 更显著的优点。
Ionic 和 NativeScript 的使用将在 2019 年逐渐减小,除非你正在使用 Angular,不然你不该该关注它们。
因此,在 2019 年,请继续关注 React Native。
你应该使用的 NPM 包
JavaScript 是饱受争议的编程语言之一。2018 年,静态类型在 JavaScript 的动态类型领域变得愈来愈受欢迎。那么竞争者有哪些?
关于静态与动态类型语言的讨论由来已久,不会很快就得出结论。以上这些都不会取代 JavaScript 做为 Web 主要编程语言的主导地位。可是,Angular 和 Vue 都采用了 TypeScript,并将其做为开发者社区的标准,所以,TypeScript 可能会继续增加,并超越上述其余语言。
你须要学习 TypeScript 的基础知识及其原理(以及静态类型的好处),但要注意,它并不是写出好代码的惟一方法。要写出好代码,能够先关注如何写出好的单元测试。
模块捆绑器
Webpack 4 和 Parcel 是 2019 年的主要工具。它们都朝着下降复杂性和更多“为用户着想”的方向发展,不少前端库都提供了 CLI。学习这两个工具,但请记住,CLI 在项目开始时帮你消除掉最初 80%的复杂性。若是要发布 NPM 包,请使用 Rollup。
数据结构 + 算法
讨论技术趋势的文章不多会提到计算机科学基础知识。但这多是最重要的主题,并且我能够很是自信地说,这个趋势具备 99.99999%的准确率:若是你想在 2019 年和将来几年成为一个全栈开发者,计算机科学基础是很是重要的。计算机科学基本原理不怎么会发生变化,而且已经存在了很长时间,不会像开发库那样,一旦有新东西出来就变得过期了。
容器和 serverless
容器为咱们提供了与几年前彻底不一样的架构,其中的一个主要的想法是 serverless。serverless 并非说不须要服务器了,而是说有人为你管理服务器(基础设施),你能够专一于本身的应用程序逻辑,无需担忧扩展性等问题。
serverless 的流行始于 2017 年,并持续到了 2018 年。2019 年,咱们将看到一些相同的常见用例,好比 AWS API Gateway 与 AWS Lambda 的结合,供前端应用程序代码调用。
在下降成本的同时提升性能是一个好主意,若是冷启动问题在 2019 年能够获得解决,那么它将变得愈来愈流行。
平台即服务 / 后端即服务
亚马逊、谷歌和 Azure 将在 2019 年争夺服务器市场,它们当中的每个都提供了全托管的服务。
AppSync、Amplify、App Services、App Engine 等服务将继续发展,但因为程序员很难放弃如此多的控制权(除非是小型的我的项目),因此它们并不会真正有大转机。
2019 年,Azure 将主导企业市场,AWS 将主导通常的开发者市场,而谷歌将主导机器学习市场。
机器学习
2019 年,你须要学习并了解如何经过如下 API 使用机器学习模型:
Google Cloud AI;
亚马逊机器学习;
Azure 机器学习;
除了以前列出的平台即服务和后端即服务,还会有更多的服务出现,这些大公司提供的机器学习 API 和模型将在 2019 年成为一个更重要的趋势。你应该学会在将来的项目中使用其中一些(不用担忧,它们使用起来没有那么难,就像使用大多数其余 API 同样)。
2019 年,咱们将能够看到机器学习 API 在 Web 上的应用,而不是从头开始构建本身的机器学习模型。由于与上述大型科技巨头不一样,大多数人或公司没法为机器学习提供足够的资源或数据。
WebAssembly
WebAssembly 集将继续缓慢改进,但仍然只有一小部分开发者会使用它(主要用于游戏、图像处理)。你能够先了解它,在几年后等它成为主流时你就是这方面的专家了。
以上是个人我的意见,无论怎样,学习新东西毫不是一个坏主意。
但不论技术风向如何变化,葡萄城一直都秉承着为开发者着想,赋能开发者的企业理念,同时为开发者提供技术领先、功能可靠的一站式开发工具、解决方案及技术服务。
本文是由葡萄城技术开发团队发布,转载请注明出处:葡萄城官网