“我们的技术栈在网飞剧里出现过,ClickUp 用类似的技术栈做出了估值200亿的产品,最受专业开发者喜欢的排名前十的技术中,我们将学会其中五项。”
在本次独立开发者训练营中,所有训练将围绕一个数字资产交易与订阅平台项目展开,我们会用到六个应用框架,五种语言,四个主要开发工具,三个三方服务,一个数据仓库系统,一个服务器操作系统。
根据著名开发者网站 Stack Overflow 的调查,在最受专业开发者喜欢的排名前十的技术里面,我们将学会其中五项,分别是排名前三的 JavaScript、HTML/CSS 与 SQL,排名第五的 TypeScript,还有排名第六的 Node.js。调查显示有 50% 的开发者表示 MySQL 是他们最常用的数据库,这也正是我们在这次训练营中选择的数据库系统。
训练营项目所选的技术栈,不但深受专业开发者的喜欢,而且拥有庞大的社区支持与市场需求,大小厂商也都将其用于生产。比如目前估值 200 亿的 ClickUp,它们的服务端技术用的就是 Node.js,数据服务主要用的是关系型数据仓库。微信公众平台、B站、Upwork 还有新宁皓等这些平台在用 Vue.js 做前端应用。字节、腾讯、美团、阿里等几乎所有大厂都在生产环境中使用 Flutter 框架构建移动端应用。所有这些技术都会在我们这次独立开发者训练营中用到。
数据来源于 Stack Overflow 网站的调查结果,查看原文。
下面是在本次独立开发者训练营中所用的技术栈,可以先简单了解一下我们将要使用的各种应用框架、语言、工具、数据仓库、第三方服务还有一些运维技术。
应用
Vue.js,Flutter,Node.js,Express.js,Nest.js,Socket.io。
Vue.js
前端应用框架。在训练营中我们将会用到这个构架构建应用的 Web 端界面,也就是通过浏览器使用的客户端应用,应用需要的界面组件全部手写,包括组件的逻辑与样式,不依赖任何第三方组件库与样式库,这样做能够帮我们更好地理解基于 Vue.js 的前端应用开发,也能学会使用 HTML 与 CSS 。
学会 Vue.js 框架还有个隐藏的技能,就是开发各个平台的小程序,通过一些技术我们可以使用 Vue.js 的方式开发各个平台的小程序。也就是如果你能用 Vue.js 开发前端应用,也就可以用它开发小程序。
Flutter
跨平台客户端应用构架。Flutter 支持使用同一种方法为不同平台开发客户端应用,在训练营中我们会用基于 Flutter 构建应用的移动端,也就是可以安装在安卓与 iOS 平台上的 App。
Node.js
服务端应用技术。Node.js 支持我们用 JavaScript / TypeScript 语言开发服务端应用,也就是在服务器上运行的应用,它可以给应用的客户端提供各种服务,比如存储数据,处理文件,调用第三方服务等等。
Express.js
基于 Node.js 的轻型服务端应用框架。Express.js 是一个轻型的应用框架,提供了最基本的中间件与路由等组件,在 npm 网站每周下载量达到两千多万,应该是最受欢迎的 Node.js 应用框架。在本次训练营中,我们将基于这个应用框架构建应用的服务端,为客户端应用提供身份验证,处理数据,内容管理,订阅管理与处理支付等服务。
Express.js 能做的事情其实也可以直接使用 Node.js 做到,不过它简化了很多工作,比如让定义路由,接口与中间件等工作变得更方便了。我们可以把它想成是 Node.js 里的一些功能包(Package)。
Nest.js
基于 Node.js 的高级服务端应用构架。Nest.js 与 Express.js 都属于 Node.js 服务端应用框架,相比 Expres.js,Nest.js 会给我们提供更多的零部件与更好的开发方法,它能让我们开发的应用更规矩也更稳定,适用于开发中大型或企业级的服务端应用。
在训练营中我们将使用 Nest.js 重构部分服务端,应用架构将采用扩展性极强的 CQRS 模式,更方便的数据处理,更规矩的数据验证方式与更灵活的策略型权限检查。
Socket.io
客户端与服务端实时通信构架。客户端与服务端的一般的交流方式是请求与响应,客户端请求一次,服务端做出一次对应的响应,不过有时候我们的应用需要双向实时的沟通,也就是客户端有什么事情可以实时告诉给服务端,服务端发生的事情也可以实时的通知给客户端,Socket.io 这个框架可以帮我们实现这种沟通。
我们在训练营中开发的应用会在有用户赞了某个内容或者发表了新的评论时,实时地更新所有用户正在使用的客户端界面,比如内容的点赞状态与数量,或者实时显示其它用户新发表的评论内容等等。
语言
JavaScript / TypeScript,HTML,CSS,Dart,SQL。
JavaScript / TypeScript
程序语言。 JavaScript 是最受开发者欢迎的程序语言,能够运行使用这种语言的环境非常多,不过主要还是浏览器,还有安装了 Node.js 的服务器。我们要开发的 Web 应用(前端应用)与基于 Node.js 的服务端应用都会用到这种程序语言。如果你是想学习应用开发的新手,强烈建议用 JavaScript 作为你的第一门程序语言。
TypeScript 可以想成是增强版的 JavaScript,它在 JavaScript 语言的基础之上,又给我们提供了一套类型系统,能帮我们减少开发中的错误。我们在训练营中开发的前端应用与基于 Node.js 的服务端应用,都会选择使用 TypeScript。
HTML
标记语言。在训练营中开发前端应用时,会用到 HTML 这种标记语言,构建界面的内容与骨架。
CSS
样式语言。在训练营中开发前端应用时,会使用 CSS 这种样式语言,设计界面的布局与样式。
Dart
程序语言。在训练营中基于 Flutter 应用构架构建移动端应用时,我们会用到 Dart 这种程序语言。
SQL
数据查询语言。在处理关系型数据仓库里的数据的时候,会用到 SQL 这种语言,比如将数据放到数据仓库里,或者从数据仓库里提取需要的数据,都需要通过 SQL 这种语言来表达。在训练营中,基于 Express 构架构建服务端应用时,我们会手写一些 SQL,应用会将它们交给数据仓库那里去处理。
虽然在开发服务端应用时,有很多方法可以不用与 SQL,直接用一些现成的方法就可以处理关系型数据仓库里的数据,不过还是强烈建议大家首先要理解使用 SQL,这样能够更好地解决后续遇到的各种复杂的问题。在基于 Nest.js 框架开发应用的训练中,我们就不再直接使用 SQL 了,而是通过 ORM 提供的方法来处理应用的数据,比如用 Repository 或者查询构建器等方法。
数据
MySQL 是此次训练营主要使用的数据仓库管理系统。
MySQL
关系型数据仓库管理系统。MySQL 的历史悠久,也是专业开发者最广泛使用的数据仓库管理系统。我们在训练营中开发的应用会选择使用这种数据仓库管理应用的数据,比如用户数据,用户发布的内容与评论,订单,还有访问日志等等。
工具
VSCode,Git,终端 / Cmder,Insomnia,TablePlus,Github。
VSCode
代码编辑器。VSCode 是微软公司做的一款开源的代码编辑器,可自由定制与扩展,是目前非常流行的编辑器。我们在训练营中会使用这款编辑器编写应用的所有的代码。
Git
版本控制(源代码管理)工具。学会使用源代码管理工具,对开发的项目做源代码管理是开发者必须要做的事情。Git 是目前最常用的源代码管理工具,它是我们在训练营中要学会使用的开发工具之一,它也是无论如何都要掌握的重要的开发工具。
终端/Cmder
命令行界面。学会在命令行界面下使用命令工具,是我们这次训练营里的重要任务之一,我们需要在命令行界面下去创建项目,给项目安装功能包,生成项目需要的各种组件,做源代码管理,远程管理服务器等等。
Insomnia
接口调试与测试工具。开发服务端应用时需要定义一些功能接口,客户端应用可以使用这些功能接口去做一些事情,在开发这些接口或者使用这些接口的时候,我们需要测试接口或者调试这些接口,这就需要用到接口测试与调试工具,在本次训练营中我们会使用 Insomnia 来测试与调试应用的接口。
TablePlus
数据库客户端。在本次训练营中我们会使用 TablePlus 这个数据库客户端软件,它可以用图形化界面展示与处理数据仓库里的数据,比如我们可以通过 TablePlus,直接查看在应用的数据仓库里都有哪些数据,查看数据表的结构,也可以直接通过图形化界面添加、更新或者删除数据表里的数据记录。
Github
远程代码仓库提供商。我们平时在本地电脑上开发项目,使用 Git 对项目做源代码管理,另外我们还可以找一个远程代码仓库提供商,在他们那里给项目创建一个远程仓库,这样团队的其它成员可以通过这个远程仓库获得我们对项目做的最近的修改,成功也可以贡献他们自己的修改。Github 就是一家远程代码仓库提供商,在训练营中我们在 Github 那里给项目创建一个远程仓库,然后把我们在本地对项目做的修改推送到这个远程仓库里。
运维
CentOS / Ubuntu,Nginx,阿里云,Let's Encrypt。
CentOS / Ubuntu
Linux 操作系统。在训练营中开发的服务端应用会部署到一种安装了 Linux 操作系统的服务器上,在这种类型的操作系统里面,我们要搭建应用的生产环境。CentOS 与 Ubuntu 都属于 Linux 这种类型的操作系统,由于 CentOS 在未来将不再更新,所以现在推荐用 Ubuntu 替代。
Nginx
Web 服务器。Nginx 是一款成熟的 Web 服务器,在训练营我们会使用 Nginx 提供的功能,给我们的前端应用创建一个 Web 服务器,给服务端应用创建一个反向代理服务器,用它接待来自客户端的请求。
阿里云
云服务提供商。在训练营我们会选择使用阿里云提供的服务器,给我们的服务端应用提供存储与计算能力。
Let’s Encrypt
加密证书签发商。如果你想让应用支持使用 HTTPS 协议,那就需要申请加密证书,并且配置好应用的 Web 服务。在训练营中我们会使用 Let’s Encrypt 签发的免费的加密证书。
服务
微信开放平台,微信支付,支付宝。
微信开放平台
在本次训练营中开发的前端应用里,我们会使用微信开放平台提供的微信登录功能,用户可以通过微信客户端扫码完成登录。
微信支付
第三方支付平台。在训练营中开发的应用里,我们会集成微信支付功能,允许用户使用微信支付完成订阅与数字资产交易。
支付宝
第三方支付平台,在训练营中开发的应用里,我们会集成支付宝的支付功能,允许用户使用支付宝完成订阅与数字资产交易。
在网飞的一部剧中,一名独立开发者正在使用 VSCode、Vue.js 与 Nest.js(这些技术全部包含在此次独立开发者训练营中)开发一个网上商店。(剧中男主角做了违法的生意,切勿效仿,引以为戒,遵纪守法。)
下载《独立开发者训练营(全栈)》手册(介绍、技术栈与训练目录)