Web 开发方向 · 共 9 问 · 内容来自 roadmap.sh
全栈开发者是指能够同时处理应用程序前端和后端的开发者。他们编写代码,并且在大多数情况下,还需要负责将产品推向生产环境所需的一切工作。
全栈开发者(也称为全栈 Web 开发者)通常具备处理 Web 开发流程中任何部分所需的技能。在前端,他们将专注于使用 HTML、JavaScript 和 CSS(层叠样式表,通常与 React 或 Vue 等 UI 框架结合使用)来构建用户界面。对于这些项目的后端部分,他们将编写业务逻辑以及所需的数据访问代码,这些代码可能涉及某种 SQL 数据库,或者在某些项目中涉及 noSQL 方案。作为后端的一部分,还可能涉及一些 API 设计,以及需要执行的性能和可扩展性优化。
总而言之,你可以说全栈开发者在 Web 开发方面是“万事通”。虽然他们可能并不总是这些技术的绝对专家,但他们完全有能力填补团队中的任何空白。
在全栈开发中,使用的语言可以从仅仅 3 种扩展到多种选择。
对于前端,选择并不多;你只能使用 HTML、CSS 和 JavaScript(可以自由选择最适合你偏好的框架)。然而,在后端,情况就大不相同了。当然,你可以选择 JavaScript,使整个技术栈保持一致,但如果你采用基于微服务的架构,你也可以选择添加多种编程语言,为每个服务选择最合适的语言。如果情况如此,一些最流行的语言包括 Python、Ruby、Java、PHP 或 C#。
最重要的是,你通常还会使用类似 SQL(结构化查询语言)的东西来进行数据库交互(除非你使用的是 NoSQL 数据库)。
要成为全栈开发者,你需要的技能非常多样化。你需要理解前端和后端的软件开发,包括一些最流行的框架和库。
这意味着你必须知道如何将设计转化为符合最新用户体验趋势的良好用户界面。在后端,你需要掌握服务端编程、与数据库打交道、管理 API,并确保所有内容都能按预期集成。所有这些都将是你日常开发流程的一部分。
除此之外,其他能提升你个人竞争力的关键全栈开发者技能还包括版本控制系统(例如 Git,这是当前的行业标准)以及理解 RESTful API。
当然,强大的问题解决能力、调试技能以及持续学习新技术的意愿,对于这个角色来说也至关重要,就像对任何软件开发工作一样。
最终,这种独特的技能组合使开发者能够从头到尾构建功能完整的 Web 应用程序。
要成为全栈开发者,你需要从学习 HTML、CSS 和 JavaScript 的基础知识开始,它们将为你掌握前端开发提供所需的一切。
一旦准备好了,你就可以选择一种后端语言,例如 Python 或 Java(甚至再次通过 Node.js 使用 JavaScript)。尽量从小处着手,为你的网站构建一个简单的后端。这里的一个好主意是选择一个全栈框架,例如 NextJS 或 Django;它们会让你轻松地将后端集成到你的项目中。然后慢慢将数据库管理引入其中。这将为更复杂的应用打开大门。只需记住从小项目开始练习你的全栈开发者技能,并逐步处理更复杂的项目。
作为长期的学习计划,创建一个展示你进步的作品集可以成为一个很好的激励因素。考虑遵循像全栈路线图这样的路线图,并通过在线课程或训练营继续学习,以加速你进入全栈开发的旅程。
你可以在 3 个月内学会全栈开发,但前提是你已经精通前端或后端开发,只需要补齐缺失的那一半。否则,期望在这么短的时间内掌握 Web 开发(包括前端和后端)的方方面面,对于一个开发者来说要求太高了。
通常,掌握全栈开发需要更多的时间和大量的实践经验。如果你只有 3 个月的时间来学习这项技能,并且假设你已经有编程经验,那么你能做的最好的事情就是快速浏览全栈开发者路线图。虽然你无法学到成为一名熟练的全栈开发者所需的一切,但你会对这个角色所涉及的方方面面有一个基本的了解。
典型的全栈开发者职位描述会要求同时精通前端和后端技术。你经常会看到对 HTML、CSS 和 JavaScript(以及 React 或 Angular 等相关框架)的要求,同时还有 Python、Ruby 或 Java 等服务器端语言。
除了这些技术,雇主还会看重数据库经验(无论是某种 SQL 还是更小众的 noSQL 选项)、API 集成经验(通常是 RESTful,但总有人要求 GraphQL 经验)、Git 等版本控制系统的使用,以及解决问题的能力——当然,这对任何开发岗位来说都是至关重要的。
他们甚至可能提到协作能力,以及随着项目演进愿意学习新技术的态度。
为了准备全栈开发者面试,你应先复习所有 Web 开发基础知识。从 HTML、CSS 和 JavaScript 开始,然后是 DOM、事件冒泡、错误处理、HTTP 协议、客户端-服务器模式等主题,最后进入后端领域,涵盖服务端渲染、REST、数据库管理和 SQL 等。
此外,多练习常见的编程题,复习算法和数据结构,并温习系统设计原则。
最后,对于全栈开发者而言,一个全面的作品集能很好地展示你的经验,所以可以考虑做一些小而精的个人项目,来展现你全栈技能的不同方面。
全栈开发者与软件工程师不同,因为虽然所有全栈开发者都是软件工程师,但并非所有软件工程师都是全栈开发者。
你可以把全栈开发者看作专注于 Web 应用的专业软件开发人员,他们负责从前端的视觉设计到后端的服务器逻辑和数据库的一切。
另一方面,软件工程师的范围更广,可以处理各种系统和项目,从移动应用和桌面软件,到嵌入式系统和大型分布式平台。
全栈工程师通常与全栈开发者一词互换使用。然而,“工程师”这个称呼可能暗示对系统设计、架构(包括后端和前端)以及可扩展性有更深入的理解。
另一方面,全栈“开发者”可能更偏向以代码为核心的角色,涉及较少策略,更多是通过代码来解决问题。
最终,两者的区别可能微乎其微,具体取决于公司和项目。
如果你尚未精通这一角色涉及的领域之一,学习全栈开发可能会比较困难,因为这意味着你需要了解整个 Web 生态系统如何运作,从浏览器及其 DOM API,一直到服务器端编程,以及这两个环境之间的通信。
在学习全栈开发的过程中,你需要掌握多种技术,但必须保持学习路径有条理,以免中途迷失。因此,使用全栈路线图是个好主意,它可以帮助你始终盯住目标,同时带你学习将要使用的所有技术(HTML、JavaScript、CSS、服务器端脚本语言、SQL 等)。
如果你是刚开始学习,这个过程可能需要 6 个月到 2 年不等,取决于你已有的经验水平和学习速度。
全栈开发中最流行的技术栈已成为行业标准有一段时间了。虽然你完全可以自由选择最适合特定需求和场景(项目时间线、团队经验等)的技术栈,但有一些组合已经被证明能很好地协同工作。
其中最流行的包括 MERN 技术栈,它使用 MongoDB(快速灵活的数据库)、Express.js(后端框架)、React(前端)和 Node.js(服务器)。如果你是 Angular 开发者,可以试试 MEAN 技术栈,它与 MERN 类似,但用 Angular 取代了 React。
还有其他一些:对于 PHP,有久经考验的 LAMP 技术栈;如果你更偏爱 Python,可以尝试 Django + React;如果你喜欢 Ruby on Rails,则有 ROR 技术栈(仅举几例)。
如果你刚开始学习,不知道应该专注于哪些技术,尝试这些行业标准技术栈中的几个可能是个很好的起点。
对于全栈开发,最常见的框架会根据你的技术偏好而有所不同。不过,对于每一门主要技术,如果你没有其他偏好,都有一些行业标准可供选择。
如果你的主要编程语言是 JavaScript,那么你可以使用 ExpressJS、NestJS 甚至 Hono 等框架作为后端,并使用 React(例如配合 React Router)这样的前端库来满足所有 UI 需求。这个组合提供了开发高效 Web 应用所需的一切。
如果你喜欢 Python,那么 Django + DRF(Django REST Framework)将为你提供入门所需的一切。这是一个高级 Python 框架,遵循“开箱即用”的理念(意味着它自带了你需要的一切)。它内置了 ORM(非常适合处理关系型数据库)、认证和管理后台,能解决你 95% 的 Web 开发需求。再搭配 DRF,你可以用最少的精力构建一个优秀的、基于 API 的可扩展后端。
最后,如果你更倾向于 Ruby 开发,那么你随时可以选择 Ruby on Rails(RoR),这是一个基于“约定优于配置”框架构建的,能简化全栈开发。它与 MVC 模式配合得很好,也内置了 ORM(ActiveRecord),并提供了脚手架工具来帮助加快开发速度。
可供选择的方案有很多,所以在做出决定之前,一定要做好调研。