web后端开发学习路线

My previous article described how you can get into frontend development. It also discussed how the front end can be a place filled with landmines – step in the wrong place and you'll be overwhelmed by the many frameworks of the JavaScript ecosystem.

我以前的文章描述了如何进行前端开发 。 它还讨论了前端如何成为一个充满地雷的地方-进入错误的地方,JavaScript生态系统的许多框架会让您不知所措。

In this blog article, let's see how you can get into back end development. Along the way, I'll answer some of the most common questions people ask me about it.

在这篇博客文章中,让我们看看如何进行后端开发。 在此过程中,我将回答人们问我的一些最常见问题。

什么是后端开发? (What is Backend Development?)

Front end development involves what a user sees on the screen when they open a specific URL owned by you. Even in a completely static environment (with only HTML/CSS), when someone opens a website, some server on the planet needs to respond to you with those HTML and CSS files.

前端开发涉及用户打开您拥有的特定URL时在屏幕上看到的内容。 即使在完全静态的环境(只有HTML / CSS)中,当有人打开网站时,地球上的某些服务器也需要使用这些HTML和CSS文件来响应您。

That server is just a computer, just like the one you use yourself to browse the internet. But it has been tuned for performance, and doesn't have unnecessary components like a mouse or keyboard attached. And it sits with tons of other computers probably in a data warehouse.

该服务器只是一台计算机,就像您自己用来浏览互联网的计算机一样。 但是它已经过性能调整,并且没有多余的组件,如鼠标或键盘。 它与数以千计的其他计算机一起放置在数据仓库中。

Programming those computers in some special way is called back end development.

以某种特殊方式对这些计算机进行编程称为后端开发

You may think that backend development is called what it is because it runs behind the user's back. A visitor to your website never really "accesses" the back end completely. They just communicate with your server, either directly through ports for very limited access (like transferring HTML/CSS files) or not even that – buried deep under CDNs or firewalls (like Cloudflare).

您可能会认为后端开发就是所谓的,因为它在用户背后运行。 您网站的访问者永远不会真正完全“访问”后端。 它们只是直接通过端口与您的服务器进行通信,以进行非常有限的访问(例如传输HTML / CSS文件),甚至不进行通信–将它们深深地埋在CDN或防火墙(如Cloudflare)下。

Now that we have a raw understanding of what back end development means, let's get into some real questions.

现在,我们对后端开发的含义有了一个初步的了解,让我们进入一些实际的问题。

后端需要前端编程知识吗? (Is front end programming knowledge required for the back end?)

TLDR; No.

TLDR; 没有。

Back end development, as mentioned above, involves the programming of a computer sitting probably on the other side of the planet responsible for responding to what your users say from their own computers.

如上所述,后端开发涉及对计算机的编程,该计算机可能位于地球的另一侧,负责响应用户从其自己的计算机发出的信息。

If you're a full-time backend developer, you do not really need to care about what goes on inside those HTML, CSS and JavaScript files you send to the user's browser. Instead, you've to focus more on the performance of the server, the server code, and throughput.

如果您是一名全职后端开发人员,那么您实际上不必关心发送到用户浏览器HTML,CSS和JavaScript文件中的内容。 相反,您必须更多地关注服务器的性能,服务器代码和吞吐量。

后端开发有哪些内容? (What goes into back end development?)

Well, going by the books, you may say that a person who codes an application that can respond to HTTP requests is a back end developer.

好吧,按照这些书,您可能会说,编写可以响应HTTP请求的应用程序的人是后端开发人员。

But in reality, sometimes back end developers are able to do much more than just writing server scripts. They have the knowledge to set up reverse proxy servers (NGiNX/HAProxy), enable compression and other ways to speed up the site, and set up a production docker environment.

但是实际上,有时后端开发人员不仅可以编写服务器脚本,还能做更多的事情。 他们具有设置反向代理服务器(NGiNX / HAProxy),启用压缩和其他方式以加快站点速度以及建立生产docker环境的知识。

To qualify as a back end developer, I'd say the bare minimum skills you need are:

要成为合格的后端开发人员,我想说的是,您需要的最低技能是:

  1. Good knowledge about a programming language in which you can write HTTP servers. Examples: C#, Java, Node, PHP, Python, etc. (there are many!)对可以用来编写HTTP服务器的编程语言的丰富知识。 示例:C#,Java,Node,PHP,Python等(有很多!)
  2. Manage to host using cPanel (traditional) or using bash terminal (cloud hosting/traditional)使用cPanel(传统)或bash终端(云托管/传统)管理托管
  3. Working with Version Control Systems (VCS) like git for managing and deploying builds使用git等版本控制系统(VCS)来管理和部署构建

Just like every game comes with minimum and recommended specifications, for back end developers, my recommend specifications would be (inclusive of the minimum skills):

就像每款游戏都有最低要求和推荐规格一样,对于后端开发人员,我的推荐规格将是(包括最低要求):

  1. NGiNX for static file assets and server managementNGiNX用于静态文件资产和服务器管理
  2. Database Management skills (SQL/NoSQL)数据库管理技能(SQL / NoSQL)
  3. Security of backend (Writing safe and robust code, running applications in docker containers with limited privileges, protection against DoS attacks)后端的安全性(编写安全可靠的代码,以有限的特权在Docker容器中运行应用程序,防范DoS攻击)
  4. Autoscaling/Load balancing自动缩放/负载平衡

Alright, too much talking about what goes into back end development. But how do you become one?

好吧,过多地讨论了后端开发的内容。 但是你如何成为一个?

从最低要求开始 (Start with minimum requirements)

Like I said, for the back end, just like games, we have a set of minimum requirements and recommended requirements. The minimum requirements consists of 3 things:

就像我说的那样,对于后端,就像游戏一样,我们有一组最低要求和建议要求。 最低要求包括三件事:

学习后端编程语言 (Learn a backend programming language)

When people learn by themselves, they usually do not have a team or anyone who can do front end development. They're all on their own. So you'll often have to create webpages and servers all by yourself, at least in the beginning.

人们自己学习时,通常没有团队或任何可以进行前端开发的人。 他们全靠自己。 因此,至少在开始时,您通常必须自己全部创建网页和服务器。

Although there are a lot of choices for back end programming languages, and I cannot think of any popular system language which doesn't support HTTP servers out of the box. The advantage of choosing Node is that your front end JavaScript skills are transferrable to the back end.

尽管后端编程语言有很多选择,但我想不出任何不支持HTTP服务器的流行系统语言。 选择Node的好处是您的前端JavaScript技能可以转移到后端。

Nonetheless, you can choose from a variety of languages like Java, C++, C#, Python, PHP, etc.

但是,您可以从多种语言中进行选择,例如Java,C ++,C#,Python,PHP等。

How do you pick one, you might ask. The answer is the same as it was in the front end development article: you have gotta try everything initially and see which one clicks the best with you.

您可能会问,如何挑选一个。 答案与前端开发文章中的答案相同:您必须首先尝试一切,然后看看哪个点击最适合您。

Node is easy as you might have already done JS programming for the front end. But if you're a Python or Java developer, you might find those easy to pick up. It depends on your profession and taste completely.

Node很容易,因为您可能已经为前端完成了JS编程。 但是,如果您是Python或Java开发人员,则可能会发现它们很容易上手。 这完全取决于您的职业和品味。

了解有关管理托管的信息 (Learn about managing hosting)

Gone are the days when you'll have to manually purchase servers and set them up in your home, connect to your ISP, do all that stuff yourself. This is the era of cloud computing. Now, when hosting your website, you have mainly 2 options:

您将不得不手动购买服务器并在家里设置它们,连接到ISP,自行完成所有这些工作的日子已经一去不复返了。 这是云计算的时代。 现在,在托管网站时,主要有两种选择:

  1. Going for managed hosting servers like HostGator or GoDaddy.用于托管主机服务器,例如HostGator或GoDaddy。
  2. Going for cloud hosting providers like GCP, AWS, or DigitalOcean.寻找GCP,AWS或DigitalOcean等云托管提供商。

What is the difference between the two? In both cases, the servers are owned and operated by the respective companies. But the major difference is that managed hosting is more GUI friendly, has a rich set of tools for seeing the filesystem, monitoring usage, managing your official domain emails, uploading/downloading files from your server, and so on. It's basically a setup for people with less technical skills.

两者有什么区别? 在这两种情况下,服务器均由各自的公司拥有和运营。 但是主要的区别是托管托管更易于使用GUI,具有丰富的工具集,可用于查看文件系统,监视使用情况,管理官方域电子邮件,从服务器上载/下载文件,等等。 基本上,它是为技术技能较弱的人准备的。

For that reason, I do not recommend managed sites like HostGator or GoDaddy for seasoned developers. Still, it might be a good platform to make mistakes and learn on, primarily because you usually have prepaid plans for them. You'll also have a nice UI for managing things, which doesn't allow you to accidentally shoot up your bills.

因此,我不建议经验丰富的开发人员使用托管网站如HostGator或GoDaddy。 尽管如此,它仍然可能是犯错和学习的好平台,主要是因为您通常会为他们预先准备好计划。 您还将拥有一个不错的用户界面来管理事情,这不允许您意外地付账。

But when you start picking up speed, I recommend that you switch to a cloud provider. This takes away all the nice tools from cPanel that you used to manage files and folders on servers. But at the same time, it will challenge you to level up your skills a lot.

但是,当您开始加快速度时,建议您切换到云提供商。 这消除了cPanel中用于管理服务器上文件和文件夹的所有漂亮工具。 但是与此同时,它将挑战您大量提高您的技能。

Today, a lot of cloud providers offer a decent free trial, too, so that you can actually try out their platform before going full in. I host my website for developers - codedamn - on DigitalOcean and find it to be at a sweet balance of site complexity and features.

如今,许多云提供商也提供了不错的免费试用版,因此您可以在全面试用之前实际试用他们的平台。我在DigitalOcean上为开发人员托管了我的网站-Codedamn,并发现它与网站的复杂性和功能。

You can use this link to signup on DigitalOcean and get free $100 credits. DigitalOcean instances are as cheap as $5 a month, so you have a runway of about 20 months on that instance, great deal, huh?

您可以使用此链接在DigitalOcean 上注册并免费获得$ 100的信用 。 DigitalOcean实例的价格低至每月5美元,因此您在该实例上的运行时间约为20个月,是吗?

Anyway, you can choose any cloud provider. Then it's important to learn to manage the server using just the command line by ssh'ing into it.

无论如何,您可以选择任何云提供商。 然后,重要的是学会通过仅使用命令行来管理服务器。

了解版本控制系统 (Learn about Version Control Systems)

There are other solutions apart from Git for VCS. But Git is the most used and simplest to understand.

除了适用于VCS的Git之外,还有其他解决方案。 但是Git是最常用和最容易理解的。

As an individual, you might not appreciate it right away. But you'll understand why it is so important the moment you start working either in a team on multiple features simultaneously in your project.

作为个人,您可能不会立即欣赏它。 但是当您开始在一个团队中同时在项目中同时处理多个功能时,您就会理解为什么如此重要。

Git allows you to manage your workflow using commits and branches. Commits are like checkpoints in your codebase - the ones you can always revert to if you screw up.

Git允许您使用提交和分支来管理工作流。 提交就像代码库中的检查点一样-如果您搞砸了,可以随时恢复到这些检查点

Branches are like alternate realities of your project, where something completely different could happen. These alternate realities can be created from any point in time and can be merged back again at any time.

分支就像项目的替代现实 ,其中可能会发生完全不同的事情。 这些替代现实可以在任何时间点创建,并且可以随时重新合并。

If those realities can be merged together with compatibility, then it's fine. But if there's a conflict (like if you're alive in one reality and dead in other), then you have to manually make a choice. Other changes can be merged automatically.

如果可以将这些现实与兼容性合并在一起,那就很好。 但是,如果存在冲突(例如,您在一个现实中还活着而在另一个现实中死了),那么您必须手动做出选择。 其他更改可以自动合并。

Git is super interesting, and once you get hang of it, you'll want to use it in every project. You get to keep a history of your work in an efficient manner (it compresses and stores only the difference between commits).

Git非常有趣,一旦您掌握了它,就可以在每个项目中使用它。 您可以高效地保留工作历史记录(它仅压缩和存储提交之间的差异)。

It also allows you to create online git repositories on sites like GitHub, which acts as a central source of truth for your website. Sites like GitHub can be configured with special webhooks that can actually update your website whenever you add a new checkpoint (a new commit) without you ever needing to manually go to the server and update it yourself.

它还允许您在GitHub之类的网站上创建在线git存储库,这是网站真相的主要来源。 可以像GitHub这样的网站配置特殊的Webhook,这些Webhook实际上可以在您添加新的检查点(新的提交)时更新您的网站,而无需手动转到服务器并自行更新。

寻求推荐技能 (Go for recommended skills)

I'm a big believer in learning by doing. And the best way to do something comes out of necessity or interest. Once you consider yourself good enough with the minimum requirements, it's time to acquire the recommended skills. This includes all the tools like Docker and NGiNX mentioned above.

我坚信边做边学。 而做某事的最好方法是出于必要或兴趣。 一旦您认为自己的最低要求足够好,就可以开始学习推荐的技能。 其中包括上述所有工具,例如Docker和NGiNX。

DevOps is also something which fits in super nicely with back end developers. You could try and explore TravisCI or CircleCI for automated build deployments. Continuous Integration and Deployment (CI/CD) is a topic that could take another whole blog post, so I'll not get into that. In fact, once it is set up correctly, it'll save you a ridiculous amount of developer time!

DevOps也非常适合后端开发人员。 您可以尝试探索TravisCICircleCI进行自动构建部署。 持续集成和部署(CI / CD)是一个主题,可能需要撰写另一篇完整的博客文章,因此我不再赘述。 实际上,一旦正确设置,它将为您节省大量的开发时间!

Then comes databases, which I placed in recommended skills. But you're gonna need databases for pretty much any application which involves some sort of data persistence generated by the user.

然后是数据库,我把这些数据库放在推荐的技能上。 但是,几乎所有涉及用户生成的数据持久性的应用程序都将需要数据库。

Databases are usually easy to begin working with, but harder to maintain and tweak properly. The best way to start working on a back end tech stack is to have everything together on a single server - the code of your application, the reverse proxy servers, the database, etc. Then as you become more proficient in each thing, you can decouple it from the existing business logic.

数据库通常很容易上手,但是很难维护和正确调整。 开始在后端技术堆栈上工作的最佳方法是将所有内容整合到单个服务器上-您的应用程序代码,反向代理服务器,数据库等。然后,当您精通每件事时,您可以将其与现有业务逻辑分离。

By doing this, you're enabling an architecture that can be highly scaled. A database-operation intensive application could have an optimized solution for databases. And a heavy traffic bound site should have a good CDN mechanism to offload static assets, and so on.

通过这样做,您可以实现高度可扩展的体系结构。 数据库操作密集型应用程序可能具有针对数据库的优化解决方案。 流量受限的站点应该具有良好的CDN机制来卸载静态资产,依此类推。

结论 (Conclusion)

There's so much to learn, but it's all achievable if you don't give up. Let me know what you think about this post through my twitter and Instagram handles. It'll mean a lot to me if we connect over there!

有很多东西要学,但是如果您不放弃,这一切都是可以实现的。 让我知道您对我的TwitterInstagram句柄的看法。 如果我们在那里连接对我来说意义重大!

Also, if you're interested, checkout codedamn - a developer-focused platform for learning technologies like backend development! I even posted a YT video on spinning up your own simple website server in 2 minutes! Check that out and let me know what you think!

另外,如果您有兴趣,请签出codedamn-一个面向开发人员的平台,用于学习后端开发等技术! 我什至在2分钟内发布了一个YT视频,介绍了如何旋转您自己的简单网站服务器 ! 检查一下,让我知道您的想法!

Peace!

和平!

翻译自: https://www.freecodecamp.org/news/learn-backend-development/

web后端开发学习路线

web后端开发学习路线_学习后端Web开发的最佳方法相关推荐

  1. python后端开发学路线_【后端开发】Python要学哪些内容?Python程序员学习路线图...

    很多零基础入门学习python不知道学习什么?也不知道Python要学哪些内容?下ki4网为您总结一下Python程序员学习路线图. python的应用范围是很广泛的,例如一些网络的爬虫,和web的开 ...

  2. 大数据开发初学者学习路线_初学者的Web开发路线图

    大数据开发初学者学习路线 This beginner's roadmap lays out all the basics for web development. We're going to go ...

  3. 【2021Java最新学习路线】java后端开发入门

    前言 消息中间件作为分布式系统的重要成员,各大公司及开源均有许多解决方案.目前主流的开源解决方案包括RabbitMQ.RocketMQ.Kafka.ActiveMQ等.消息这个东西说简单也简单,说难也 ...

  4. Android学习路线_工具篇(一)简单的编辑器

    工欲善其事,必先利其器.工具,是人类进化的一大助力,善于制造与使用工具,可以加快我们学习的速度.工具在人类的进化之路上随着人类共同进化,原始的人类需要的是原始的工具,先进的工具对于原始人来说也许是个占 ...

  5. Android学习路线_梳理

    Android入门第一步,将需要学习的路线整体过一遍,了解学习的前置条件,明了自己的学习目标,胸有成竹才能势如破竹.本文中每个小点将单独出一篇文章,每篇文章将链路到此文,后续将持续更新. 1 工具篇 ...

  6. Android学习路线_入门篇(一)编写简单的APP

    Android学习入门的目标就是能够编写出一个完整的APP,有可交互的界面,有基本的功能,有本地的数据库,有与后台的数据交换.在本文我们会了解到如何在AndroidStudio中新建.运行.打包一个A ...

  7. 根据SecWIki给出的Web安全工程师的学习路线的学习经历

    一直对Web安全问题有很大的兴趣,之前一直不知道该从何学起,就学习了一些自认为基础的知识,比如HTML,JS和PHP,只是大概的看了一遍,并没有亲自动手操作多少,所以还处在萌新的水平. SecWiki ...

  8. python学习路线-2020年 Python学习路线及学习目标规划 拿走不谢!

    找不到完整的学习路线?小编分享2020年Python学习路线及学习目标规划拿走不谢,Python作为今年来特别受欢迎的编程语言,是AI时代头牌语言AI领域的敲门砖,Python已经入驻小学生教材,将来 ...

  9. 零基础学习前端:学习路线、学习计划、实战项目和面试题简历分享。

    前端简单概括就是所有你可见的效果呈现都可囊括到前端范畴,前端是一个没有任何竞争的方向,它的不可替代性是其他方向所没有的,比如后端,你可以用 Java.PHP.C#.Go.Ruby 等语言开发.前端相较 ...

最新文章

  1. 一个平行四边形可以分成四个_将平行四边形分割成两个三角形还易变形么?(人教四下五单元三角形例2)...
  2. php token 验证,PHP如何实现Token验证
  3. 冲压模板自动标注LISP_干货满满!超实用冲压模具资料,加薪必看!
  4. 太阳升起并下落的小动画-SWIFT
  5. CS224n笔记11 GRU和NMT的进一步话题
  6. 【华为 OJ】 字符串分割
  7. VMP 虚拟机(加壳原理)
  8. 简单计算经纬度表示的距离
  9. 百望系统网络配置服务器地址,各省百旺参数设置服务器地址
  10. python在线朗读-python朗读软件
  11. java 8 stream 对集合的简单操作
  12. 统一接口平台(一) 产品介绍
  13. 使用笔记:AWTK中文键盘按键字体加大
  14. beetl的配置文件介绍
  15. John McCarthy:人工智能之父
  16. 思考者的回归--转帖今何在的优美文章《窗》之三
  17. fate框架使用记录
  18. win10修复ubuntu18.04引导
  19. 模块学习(三)——激光测距模块(TOF10120)
  20. Leetcode 1626 计算器

热门文章

  1. Bloom Filter算法
  2. mmap、munmap函数
  3. Java高级面试题!java小游戏制作视频
  4. RocketMQ消息丢失场景及解决办法,已拿offer入职
  5. Spring Boot教程(11) – 理解注解@ControllerAdvice
  6. 使用IDEA创建Maven项目和Maven使用入门(配图详解)
  7. poj-3667(线段树区间合并)
  8. IE8无法调试?IE进入不了调试状态
  9. 程序员的职业生涯之我见
  10. Spring 处理过程分析