今天的Web开发与几年前彻底不一样,有不少不一样的东西能够很容易地阻止任何人进入Web开发。这是咱们决定制做这些按部就班的视觉指南的缘由之一,这些指南展现了更大的图景,并让任何人清楚了解他们在网页开发中扮演的角色。php
这是咱们决定制做这些按部就班的视觉指南的缘由之一,这些指南展现了更大的图景,并让任何人清楚了解他们在网页开发中扮演的角色。前端
绝不迟疑,让咱们开始吧。你能够在下面的图片中找到详细的路线图,可是我也将在下面的描述中解释每一步。数据库
咱们来分解它,并解释下面部分中的每一步。json
在咱们开始以前,虽然咱们没有在上面的路线图中列出 HTML/CSS 的知识,但建议您至少了解一些基本的 HTML/CSS 并了解如何编写基本的 HTML/CSS。后端
谈到选择语言有不少选择。我已经将它们分红几类,以便你更容易作出决定。对于刚开始进入后端开发的初学者,我建议你选择任何脚本语言,由于它们有不少需求,它可让你快速起步。若是你有一些前端知识,你可能会发现Node.js更容易,再加上有一个很大的就业市场。api
若是你已经在作后端开发而且知道一些脚本语言,我建议你不要选择另外一种脚本语言,并从“功能”或“多参数”部分中选择一些。 例如,若是你已经在使用PHP或Node.js,请不要使用Python或Ruby,而应尝试使用Erlang或Golang。它确定会帮助你延伸思惟,并开启你的思想到新的视野。缓存
没有比实践更好的学习方式。一旦你选择了你的语言,而且对这些概念有了基本的了解,就可使用它们。尽你所能制做尽量多的小应用程序。尽你所能制做尽量多的小应用程序:安全
ls
的功能jsonify dir-name
给你一个带有 dir-name
内结构的JSON文件了解了该语言的基础知识并制做了一些示例应用程序后,请了解如何使用你选择的语言的软件包管理器。软件包管理器可帮助你在应用程序中使用外部库,并分发你的库供其余人使用。bash
若是你选择了PHP,你将不得不学习 Composer,Node.js 有 NPM 或 Yarn,Python 有 Pip,Ruby 有 RubyGems。不管你选择什么,请继续学习如何使用其包管理器。服务器
每种语言都有本身的标准和作事的最佳实践。研究他们为你挑选的语言。例如 PHP 有 PHP-FIG 和 PSR 。使用 Node.js 有许多不一样的社区驱动指南,其余语言也有相同的指导。
请务必阅读有关安全的最佳作法。阅读 OWASP
指南并了解不一样的安全问题以及如何以你选择的语言避免它们。
如今你已经掌握了语言,标准和最佳实践的基础知识,安全性以及如何使用软件包管理器。如今开始建立一个包并分发给其余人使用,并确保遵循你迄今为止学到的标准和最佳实践。例如,若是你选择了PHP,那么你将在Packagist上发布它,若是你选择了Node.js,那么你将在Npm注册源中发布它,等等。
一旦你完成了,在Github上搜索一些项目,并在某些项目中打开一些pull请求。对此的一些想法:
测试有几种不一样的测试类型。了解这些类型它们的目的是什么。了解如何在应用程序中编写单元测试和集成测试。另外,了解不一样的测试术语,如 mocks
, stubs
等。
对于练习,继续编写单元测试,以完成目前为止所作的实际任务,特别是你在步骤6中所作的练习。
还要学习和计算你编写的测试的覆盖率。
了解如何将数据保存在关系数据库中。在你选择要学习的工具以前,请先了解不一样的数据库术语,例如键,索引,规范化等。
这里有几个选项。可是,若是你学习一个,其余的应该至关容易。你想学习的是MySQL,MariaDB(大部分是相同的,是MySQL的分支)和PostgreSQL。选择MySQL开始。
如今是时候把你所学到的一切都用到这里去了。
使用你迄今为止学到的全部内容建立一个简单的应用程序。能够选择任何想法,也许建立一个简单的博客应用程序,并实现其中的如下功能。
根据你选择的项目和语言,你可能须要也可能不须要框架。每种语言都有几个不一样的选项,继续看看你选择的语言有哪些选项可供选择,而后选择相关的一个。
若是你选择了PHP,我会建议你使用 Laravel或Symfony,若是是为框架的话,使用Lumen或Slim。若是你选择Node.js,有几种不一样的选择,但突出的是Express.js。
为了实现此步骤,请将你在 步骤10 中建立的应用程序转换为使用你选择的框架。还要确保移植包括测试在内的全部内容。
首先了解它们是什么,它们与关系数据库有何不一样以及为何它们是须要的。有几种不一样的选择,研究一点看看,并比较它们的特色和差别。你能够选择的一些经常使用选项是Rdeis,MongoDB,Cassandra,RethinkDB和Couchbase。若是你必须选择一个,请使用Redis。
了解如何在你的应用程序中实施应用程序级缓存。了解如何使用Redis或Memcached并在你在 步骤12 中建立的应用程序中实施缓存。
了解REST并学习如何制做RESTful API,并确保从 Roy Fielding
的原始文章中阅读关于REST的部分。若是他们说REST仅适用于HTTP API,请确保你可以与其余人对战。
了解不一样的身份验证和受权方法。你应该知道他们是什么,他们有什么不一样以及何时偏好某一个
了解消息代理并了解什么时候以及为什么使用它们。有多种选择,但突出的是 RabbitMQ
和 Kafka
。如今学习如何使用RabbitMQ
,若是你想选择一个。
随着应用程序的增加,对关系数据库或NoSQL数据库的简单查询不会将其切断,你将不得不求助于搜索引擎。有多种选择,每种选择都有本身的差别。好比 Solr, Sphinx, ElasticSearch,Xapian等。
不管你是在复制与生产环境相同的环境,仍是保持操做系统清洁或加快你的编码,测试或部署,Docker均可以在开发过程当中大大方便你的工做。在这一步中,继续学习如何使用Docker。
若是你已经走到这么远,你可能不得不在前面的步骤中使用服务器。这一步主要是找出不一样Web服务器之间的差别,了解限制和不一样的可用配置选项,以及如何最好地利用这些限制编写应用程序。
虽然不是必需的,但在工具带中有这些知识是有益的。学习如何使用 Web sockets
编写实时Web应用程序并使用它建立一些示例应用程序。你能够在上面制做的博客应用程序中使用它来实现博客文章列表中的实时更新。
学习如何使用GraphQL制做API。了解它与REST的不一样之处,以及它为何被称为 REST 2.0
。
Graph 模型表明了一种处理数据中关系的很是灵活的方式,图数据库为其提供了快速高效的存储,检索和查询。学习如何使用 Neo4j
或 OrientDB
。
一旦你开始学习和练习,你必定会遇到咱们在这个路线图中没有涉及的东西。只要保持开放的心态和对新事物的健康渴望。
记住关键是要尽量多地练习。它在开始时看起来更加可怕,你可能会以为你并无抓住任何东西,但这是正常的,随着时间的推移,你会以为本身愈来愈好。
好了,就这么多。感谢阅读。
更多PHP知识,请前往PHPCasts