Web培训
美国上市Web培训机构

400-111-8989

热门课程

人工智能浪潮下的 Web 开发,程序员该如何上手?

  • 发布:Web前端培训
  • 来源:网络
  • 时间:2018-06-28 16:59

经历了网络互联的 Web 1.0 时代、社交的 Web 2.0 时代、基于移动的 Web 3.0 时代,如今的我们正逐步迈向知识分配的 Web 4.0 时代。与此同时,随着人工智能的兴起,聊天机器人和会话式 UI 也开始渗透 Web 领域,所以说,现在的 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 Tokens

OpenID

▌消息传递

学习消息传递机制,理解为何、何时要使用消息传递。也有多种选择,但主流就是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

人工智能浪潮下的 Web 开发,程序员该如何上手?

原文:https://medium.com/tech-tajawal/modern-backend-developer-in-2018-6b3f7b5f8b9

预约申请免费试听课

上一篇:web开发中的图像透明的实现方法与实例教程
下一篇:web开发中CSS中的尺寸单位汇总

Web前端开发熟练掌握这八步,月薪过万不是梦!

Web开发知识概况

[Web安全]记一次钓鱼网站调查取证

Web开发之旅--Flask如何处理响应

选择城市和中心
贵州省

广西省

海南省