人工智能浪潮下的 Web 开拓轨范员该若何上手?_措辞_数据库
经历了网络互联的 Web 1.0 时期、社交的 Web 2.0 时期、基于移动的 Web 3.0 时期,如今的我们正逐步迈向知识分配的 Web 4.0 时期。与此同时,随着人工智能的兴起,谈天机器人和会话式 UI 也开始渗透 Web 领域,以是说,现在的 Web 开拓已经和几年前完备不一样了。
当面对日月牙异的技能、错综繁芜的网站时,新入行的开拓者很容迷失落方向。以下这篇指南,展示了后端开拓的全景、运维的趋势,希望给从事 Web 开拓的程序员们一个清晰的观点,去其糟粕取其精华。
以前,后真个路线图只是一些平铺的技能先容,而无法给出任何有关趋势的方向。而在这篇文章中,有详细的后端学习路线图,可助前行路上的开拓者一臂之力。废话不多说,现在就开始吧。
接下来,我们将一步步来阐明一下这张图。
开始之前要解释一点,虽然我们在图中没有列出 HTML/CSS 的知识,但建议你至少懂得一点,并会写一些基本的 HTML/CSS。
▌学一门措辞
选择措辞时总是会碰着无数种选择。我把措辞按照种别分开,以便你作出决定。对付刚刚进入后端开拓的初学者,我建议选任何一种脚本措辞,它们的市场需求都很大,因此你可以迅速进步。如果你有前端知识,Node.js 会很随意马虎,而且事情机会大概多。
如果你已经在从事后端开拓,并且会某种脚本措辞,我建议你不要再选另一种脚本措辞,而是从“函数式”(Functional)或“多重编程”(Multiparadigm)中选择一种。例如,如果你会 PHP 或 Node.js,那就别再学 Python 或 Ruby,而是考试测验下 Erlang 或 Golang。这样能开阔你的思维和视野。
▌练习学到的知识
学习知识的最佳路子便是练习。选好措辞并理解一些基本观点之后,就该当学甚至用,用它多做一些小运用。下面是一些建议:
实现一些常用的 bash 命令,例如实现 ls 的功能;写个命令从 reddit 的 /r/programming 上以 JSON 格式获取并保存文章;写个命令以 JSON 格式返回目录构造,例如 jsonify dir-name,返回一个 JSON 文件,内容是 dir-name 下的目录构造;写个命令读取上一条的 JSON 文件并创建目录构造;想一想每天要做的任务,并考试测验自动化。▌学习包管理器
理解措辞的根本知识并做了一些大略的运用后,可以学一下那门措辞的包管理器如何利用。包管理器可以帮你在运用中利用第三方库,还可以把你的库发布给其他人利用。
如果你选了 PHP,可以学一学 Composer;选了 Node.js 可以学习 NPM 或 Yarn;选了 Python 可以学一学 Pip;选了 Ruby 可以学一学 RubyGems。不论你选和种措辞,都该当去学学相应的包管理器。
▌标准做法和最佳实践
每种措辞都有标准做法和最佳实践。学一学你选择的措辞的这些知识。例如, PHP 有 PHP-FIG 和 PSR。Node.js 和其他措辞都有许多社区主导的规范。
▌安全性
务必要读一读有关安全性的最佳实践。阅读OWASP(https://www.owasp.org/index.php/Main_Page)的规范,理解各种安全问题,以及如何在所选措辞中避免这些问题。
▌练习
现在你已经理解了措辞的基本知识、标准做法和最佳实践、安全信息,以及如何利用包管理器。现在可以去创建一个包,并把它发布给其他人利用了。在这个过程中要时候遵照你学到的标准和最佳实践。例如,如果你选了 PHP,你就应该在 Packagist 上发布。选择了 Node.js,就该当在 Npm 上发布等。
完成这一步之后,可以在 Github 上找一些项目,然后试着建一些 pull request。一些建议:
重构代码,实现你学到的最佳实践;探求 Bug 并试图办理;增加新功能。▌学习测试
测试有好几种类型。要理解这几种类型的测试,以及每种测试的目的。不过,可以从给你的运用编写单元测试和集成测试开始。同时,还要理解各种测试的术语,如 mock、stub 等。
▌实践
作为练习,可以为你之前的项目写一些单元测试,特殊是给第 6 步做好的那些项目。
还要学习并打算你写的测试用例的覆盖率。
▌学习关系型数据库
学习如何在关系型数据库中永久保存数据。在选择要学习的数据库之前,要先理解各种数据库术语,如键、索引、正规化、元组等。
学习数据库有好几种选择。不过,学完个中一个数据库后,再学其他的就会很随意马虎。可以学习 MySQL、MariaDB(是 MySQL 的一个分支,与 MySQL 险些完备相同)或 PostgreSQL。建议先从 MySQL 开始。
▌练习韶光
现在可以把所有学到的知识放到一起了。
用学到的所有知识做一个大略的运用。选一个点子,比如建立一个大略的博客运用,并实现以下的功能:
用户账号 - 注册和登录注册用户可以创建博文用户可以查看他创建的所有博文用户可以删除博文用户只能看到他自己的博文,看不到其他人的给运用写单元测试和集成测试数据库查询要利用索引。剖析查询,确保索引被用到了。▌学习一个框架
根据项目和措辞不同,你可能须要框架,也可能不须要。每种措辞都有多个框架供选择,应该去看看你选择的措辞都有哪些框架,然后选一个关联最大的。
如果你选的是 PHP,我建议学习 Laravel 或 Symfony,如果须要微型框架的话,可以选择 Lumen 或 Slim。如果选择 Node.js,也有多种框架可以选择,但最盛行的便是 Express.js。
▌练习韶光
这一步的练习,可以将你之前在第 10 步创建的运用改成用框架实现。同时要担保移植统统功能,包括测试用例。
▌学习一种NoSQL数据库
首先要理解 NoSQL 是什么,它们与关系型数据库有何差异,以及为什么须要 NoSQL。NoSQL 数据库也有许多种,做一点研究,比较它们的功能和差异。常见的选择有 MongoDB、Cassandra、RethinkDB 和 Couchbase。如果必须选择其一,可以用 MongoDB。
▌缓存
学习如何在运用级别实现缓存。理解如何利用 Redis 或 Memcached,并在第 12 步创建的运用中运用缓存。
▌创建 RESTful API
理解 REST 并学习 RESTful API。一定要读一读 Roy Fielding 的论文中有关 REST 的那部分。确保有人说 REST 只能用于 HTTP API 时你能够回嘴。
▌学习不同的认证办法
学习各种认证和授权办法。你该当知道它们的含义,它们之间的差异,以及何时该用哪个。
OAuth - 开放认证Basic认证Token认证JWT - JSON Web TokensOpenID▌通报
学习通报机制,理解为何、何时要利用通报。也有多种选择,但主流便是RabbitMQ和Kafka。如果只能选择其一,可以先学习RabbitMQ。
▌搜索引擎
随着运用程序变得越来越大,在关系型数据库或 NoSQL 上的大略查询将无法知足需求,这就必须利用搜索引擎。搜索引擎也有多种选择,每种都有自己的优缺陷。
▌学习利用 Docker
Docker 可以大幅度降落开拓的难度,它能复制与生产环境完备相同的环境,能担保操作系统干净,还能让编码、测试和支配更快捷。读者可以自己搜索“Docker 有哪些好处”的答案。在这一步,只须要去学习如何利用 Docker。
▌Web 做事器的知识
如果你已学到这里,那么在前面的步骤中你一定已经打仗过了做事器。这一步紧张是要找出不同 Web 做事器之间的差异,理解其限定和不同的配置选项,并理解若何编写运用才能更好地利用这些限定。
▌学习如何利用 WebSocket
只管这一步不是必须,但节制 WebSocket 总会有好处。学习如何利用 WebSocket 编写实时 Web 运用程序,并用它写个示例运用。可以在前面完成的博客运用中利用 WebSocket 实现实时更新博文列表。
▌学习 GraphQL
学习如何用 GraphQL 编写 API。理解它与 REST 的差异,理解为何它被称为 REST 2.0。
▌看看图数据库
图模型能灵巧地表示并处理数据之间的关系,而图数据库供应了快速、有效的办法来存储、读取并查询图。学学如何利用 Neo4j 或 OrientDB。
▌连续探索
一旦开始学习并练习后,你一定会碰着很多我们没有覆盖到的东西。保持开放的心态和康健好学的态度,去学习新东西吧。
记住,关键便是要多练习。刚开始可能有些不该用,但很快就会习以为常,韶光长了还会以为越来越好。
在此也推举作者之前写的一篇前端开拓技能全景文章:https://medium.com/tech-tajawal/modern-frontend-developer-in-2018-4c2072fa2b9c原文:https://medium.com/tech-tajawal/modern-backend-developer-in-2018-6b3f7b5f8b9
作者:Adnan Ahmed,tajawal 的首席工程师,喜好 Web 开拓、新技能,崇尚大略,开源的虔诚粉丝。
译者:弯月,责编:屠敏
本文系作者个人观点,不代表本站立场,转载请注明出处!