在开始之前,虽然我们没有在roadmap中列出HTML/CSS,但我们还是建议用户有基本的HTML/CSS技能,至少能写一些基本的HTML/CSS。 1。学习一门语言 有多种语言可供选择。为了您的方便,我把它们分类了。对于刚接触后端开发的新手,我强烈建议大家选择脚本语言,因为他们需求多,上手快。最好的选择当然是Python,它的需求量增长很快,可供选择的岗位也很多。 2。学以致用 最后的学习方法就是实践。一旦选择了一种语言,并对它有了基本的了解,就可以开始使用它了。尽量多用它来演练,写一些小程序练练手,了解一下。以下是一些小示例,可帮助您入门。 *在bash中完成一些你常用的命令,比如ls 的功能*写一个小程序,从reddit的/r/编程频道抓取数据并保存为JSON格式 *编写一个程序将目录结构保存为JSON文件。 *根据上面生成的JSON文件生成目录结构。 *想想你日常工作中的任务,测验会自动完成。 3。学习包管理器 一旦你了解了语言的基础知识,一起写一些示例程序,然后学习语言的包管理器。包管理器可以帮助你使用第三方库,你也可以通过它发布自己的库供他人使用。 如果你选择了Python,你应该学过Pip。Node.js有NPM或Yarn,PHP有Composer,Ruby有RubyGems。无论您选择什么,请进一步了解其包管理。 4。标准和最佳实践 每种语言都有自己的标准和最佳实践。你需要掌握这个东西。例如,Python有PEP8和GooglePython代码标准。Node.js社区有不同的标准。其他语言的情况也大不相同。 5.安全 请务必掌握安全最佳实践。阅读OWASP指南以了解不同的安全问题以及如何避免它们。(你选择的语言) 6。实践 既然你已经掌握了语言基础、最佳实践、安全相关和包管理,那么你可以开发自己的库供他人使用。如果使用Python,需要发布到Pypi,如果使用Node.js,需要发布到Npm。 此时,你可以在Github上找到一些项目并参与其中。 *重构以完成您所学的最佳实践测试类型及其意图。但是现在,主要学习单元测试和综合测试,并在你的程序中使用它们。此外,了解不同的测试术语,如模拟、存根等。 8。练习测验 为您编写的所有内容编写单元测试,尤其是您在Github上贡献的项目。 一起,学习覆盖率的概念,计算覆盖率的问答代码。 9.关系数据库 学习使用关系数据库存储数据。在学习之前,首先要掌握与数据库相关的术语。例如:keys,indexes,normalization,tuples等等。 有很多数据库可以选择,你只需要掌握一个,其他的都会变得很简单。流行的有MySQL、MariaDB(MySQL的分支,与其非常相似)、PostgreSQL。推荐选择MySQL启动。 10。开始时间-练习 是时候整合你所学的东西了。 使用您所学的一切创建一个简单的应用程序。实现一个想法,可能是创建一个简单的博客站点,完成以下功能: *账号系统——注册&登录 *注册用户可以创建博客 *用户可以查看自己的所有创作博客 *用户可以删除自己的博客 *保证用户只能看到自己的博客,看不到别人的 *写作单元/综合测试使用 *用于查询创建索引.分析查询确保索引有效 11.学习一个结构 根据你的项目类型和你的语言,你可能需要一个结构来辅助开发。(或者可能不需要)。每种语言都有不同的选择,只需选择适合您的即可。 如果选择Python,建议选择Django,微结构推荐Flask。 关于Node.js,最广为人知的结构就是Express.js。 12。Practice-Structure 使用选定的结构重构您的博客。不要忘记将测验代码集成到其中。 13。学习NoSQL(notonlySQL)数据库 首先了解什么是NoSQL,它们与关系型数据库的区别,以及为什么需要它们。NoSQL数据库的选择也很多,了解并比较它们的特点和区别。常用的有MongoDB、Cassandra、RethinkDB、Couchbase。推荐选择MongoDB启动。 14。缓存 了解如何在您的程序中实现使用级缓存。了解如何使用Redis或Memcached实现缓存,并在您的博客应用程序中实现缓存。 15。创建RESTfulAPI 了解REST,学习如何编写RESTfulAPI,并阅读有关REST的白皮书。(罗伊菲尔丁)。了解REST不仅仅是HTTPAPI。 16。学习不同的认证方式 学习不同的认证认证方式。您需要了解它们是什么、它们有何不同以及它们的适用范围。 *OAuth--OpenAuthentication *BasicAuthentication *TokenAuthentication *JWT--JSONWebTokens *OpenID 17.MessageBroker 了解消息代码,了解何时何地使用它们。有很多可供选择,最著名的是RabbitMQ和Kafka。建议从RabbitMQ开始学习。 18.搜索引擎 随着应用规模的增大,简单的查询已经不能满足要求。这时候就需要借助搜索引擎了。还有很多选择,每个都有自己的特点。 19.学习使用Docker(容器) Docker可以为你的开发提供极大的便利。它可以使您的开发环境与生产环境保持一致,保持您的系统清洁,加速您的编码和测试部署。Docker的好处请自行google。现在开始学习Docker。 20。Web服务器知识 这时候,你可能已经处理过服务器相关的问题了。这个过程主要是为了了解不同服务器之间的差异、限制和不同的调优方式。 21。学习WebSockets 虽然不是必须的,但是掌握WebSockets技能还是有好处的。学习编写实时Web应用程序。在使用博客时,可以即时更新博客列表。 22。学习GraphQL 学习GraphQlAPI。了解它与REST有何不同,以及为什么将其称为REST2.0。 23。学习Graph数据库 Graph模型在处理数据之间的关系时具有很好的灵活性。图数据库提供高速高效的访问和查询。了解Neo4j或OrientDB。 24。不断探索 在你学习和实践的过程中,你一定会遇到路线图中没有提到的事情。你只需要保持开放和渴望学习新事物。 永远记住,学习的关键在于实践。多做!一开始你可能会觉得不好,但是随着你的坚持和时间的流逝,你会越来越好。**
