【问题标题】:Guidance for C++ / Python developer to understand the web dev world [closed]C ++ / Python开发人员了解Web开发世界的指南[关闭]
【发布时间】:2021-04-15 00:29:44
【问题描述】:

我已经编程好几年了。 到目前为止,我主要专注于编写在控制台或 GUI 内运行的“普通”应用程序,有时还有与传感器/演员/等硬件组件交互的应用程序... 在这段时间里,我了解了很多很酷的编程原理和工具,例如面向对象、模块化、单元测试、测试驱动开发、设计模式、代码分析……

我也有一些关于托管 wordpress 博客、在 nginx 网络服务器上运行静态网站以及编写一些小型 php 表单的经验。但我觉得在所有这些 Web 开发主题中仍然有太多的魔力。我想填补这个空白,更多地了解所有这些连接的脚本/编程语言和技术。 (因为我讨厌,当我不明白事情是如何运作时 :D :D ) 我从 udemy 的一些在线“Web 开发训练营”课程开始,以获得粗略的概述。这花了好几天的时间,我认为用于 DOM 操作/动画的 HTML、CSS 和 Javascript 现在对我来说很清楚了。我也听说过很多关于 NodeJS 及其衍生语言和数据库(如 Mongo-DB)的信息。但我还是觉得有很多事情不清楚。

为了更好地理解,我想开发一些小型 Web 应用程序。没什么特别的,只是一些你必须登录的网站能够生成一些数据,然后这些数据被持久化到数据库中,一旦你再次登录,你就可以再次看到数据。 我一开始是在 Javascript 中开发一些类来表示登录时浏览器中的数据。但我很快意识到可以在浏览器中运行的 Javascript 非常有限,并且已经用于单元测试和模块化到单独的文件中包括彼此我实际上需要做一些疯狂的工作或使用其他服务器端语言,如 nodejs / php / ...。 经过一段时间的编码后,我决定退后一步,尝试了解 Web 应用程序的基本设计模式,并且不会长时间运行到错误的方向。

我的问题是:

  • 在开发 Web 应用程序时是否有一些典型的方法/最佳实践?
  • 典型的关键人物有哪些?我知道前端、后端和数据库之间是有区别的。
  • 但是WebDev 的追随者是否有一些注意事项? 例如:
    • 哪些代码通常用后端/服务器端语言编写?
    • 前端通常做什么? (只有设计和动画?)
    • 出于安全原因,我是否必须将所有业务逻辑移至后端,还是出于性能原因,这可能也是一个坏主意?
    • 哪些编程语言或多或少已经消亡并且将来不会被使用?
    • 通常从框架中重用哪些东西,例如身份验证和会话处理?

另外我觉得我从其他编程语言中知道的一些东西在 javascript / nodejs 等语言中并不那么容易。我愿意花时间和精力来学习所有这些东西,但我也想保持我从 C++ 中了解的质量标准/ Python。另一方面,我也想知道我脑海中的这些模式是否只是在现代 Web 开发中完全无用的边界? (例如,打字、面向对象、模块化/拆分代码以非常可重用)

你认为我在这里走错了路,还是我可能只是使用了错误的语言?

我希望长文本不会让每个人都失望/让每个人都无法回答我:o 我非常感谢您的帮助和指导,以更好地理解所有内容,并且不要重复很多其他人已经做错的事情;)

BR,中层

【问题讨论】:

    标签: frontend backend web-development-server


    【解决方案1】:

    首先,大多数问题都是非常主观的(至少答案是),因此您的问题可能会被关闭。所以我会在完成之前发布我的答案并在之后进行扩展。

    首先要制定成为网络开发人员的良好路线图。我喜欢它主要是因为它展示了 Web 开发世界的疯狂(不要感到震惊!):https://levelup.gitconnected.com/the-2020-web-developer-roadmap-76503ddfb327


    试图回答你的一些问题(答案是我的意见):

    在开发 Web 应用程序时是否有一些典型的方法/最佳实践?

    我很想说世界上有多少 Web 开发人员就可以进行 Web 开发,但这可能有点夸张。如果您需要一些指导,我会选择其中一个主要的 Web 框架并学习它们进行 Web 开发的方式。对于 Web 框架,我指的是从 JS 框架一直到静态站点生成器等各种框架。它们都有自己的生态系统和自己的规则。

    典型的关键人物有哪些?我知道前端、后端和数据库之间是有区别的。

    (个人意见)我在后端使用 Go。我喜欢它,因为它在作为 Web 开发人员的疯狂选择世界中带回了一些简单性。既然你会 C,那么 Go 对你来说可能会很容易。它具有静态类型、结构等,但无需手动管理您的内存。它也比 Web 开发中使用的大多数其他后端语言(Python、NodeJS、PHP、Ruby 等)快得多。

    在前端我使用过原生 JS、jQuery、React、Vue 等。我仍在等待让事情再次变得简单的东西。 Flutter 似乎是一个很好的方法,但它还不是一个真正的 web 前端框架。 (不要用 Flutter 做公共网站!它们不可索引。)我们会看看它的发展方向。

    数据库我不会在这里讨论,因为这是另一个巨大的话题。假设我更喜欢使用多个数据库来发挥它们的特定优势,而不是应该擅长任何事情的大数据库。

    哪些代码通常用后端/服务器端语言编写?

    即使这在很大程度上取决于您的选择(框架和偏好)。肯定有一件事必须在后端,那就是安全相关的东西。有经验的用户可以看到您放入前端代码的任何内容。

    除此之外,在某些生态系统中,您无需编写任何后端代码,而是与(云)服务进行通信,该服务基本上类似于数据库,顶部有一个 Web 端点,并带有安全登录。 (例如https://firebase.google.com/.)这里将安全相关的东西烘焙到服务中。

    如果两者都做,将业务逻辑保留在后端可能是个好主意。如果前端计算了一些东西(为了快速响应),后端应该仔细检查(例如计算购物车中的总数)。但这太笼统了。总有一些用例需要在前端实现一些业务逻辑。

    出于安全原因,我是否必须将所有业务逻辑移至后端,还是出于性能原因,这可能也是一个坏主意?

    性能可能是个问题,但主要是因为往返服务器的往返时间。如果你对每一个微小的信息都这样做,那么 UI 将会变得迟缓。您可能想考虑做例如计算客户端。

    像 React、Vue 这样的 JS 框架不会从后端请求 html,而是从客户端请求数据并基于该数据构建 html。如果我有一个非常数据驱动的网站/网络应用程序,我会使用它们,特别是如果它依赖于用户。根据用户设置和数据,仅传输数据并在浏览器中为每个站点构建 html,从而节省大量往返时间。

    如果您担心服务器性能:要使服务器达到其极限,您需要大量使用您的网站才能成为问题(至少在 Go 中是这样)。如果你到达那里,你仍然可以使用水平缩放(你的服务器的多个实例)来解决这个问题。除非您为一家每天拥有数百万用户的大公司工作,否则我暂时不用担心扩展。

    哪些编程语言或多或少已经死了并且将来不会被使用?

    警告:非常自以为是!

    我会说 PHP 已经死了。许多与我交谈过的猎头都同意我的观点。公司正在拼命寻找 PHP 开发人员,因为许多开发人员正在从 PHP 转向“更酷”的东西。你肯定会找到一份使用 PHP 的工作,但可能对你的工作不太满意。对我来说,这也是一个公司真正现代化程度的标志(如果 PHP 不是它的主要后端语言(不再是))。

    Python 目前正在蓬勃发展。主要是因为人工智能的发展。我不确定这种繁荣是否也出现在 Web 开发中,但我不会说。我在 Go 之前(5 年前)和 PHP(8 年前)之前使用过 Python。我很少得到 Python Web 开发人员的工作机会(至少与 PHP 和 Go 相比)。

    Go 是云的语言。它非常适合并发编程,这是 Web 开发中必不可少的一部分(每个 http 调用都应该同时处理)。它速度快、重量轻,不需要在服务器上安装任何东西即可运行(编译成一个没有依赖关系的二进制文件)。

    NodeJS:没用过。我不是 Javascript 的粉丝(但它曾经(并且仍然是)浏览器中的唯一选项),所以我从不喜​​欢在后端也使用它的想法。

    TypeScript:如果你喜欢结构化的语言,它可能是 JavaScript 的替代品(这里考虑前端)。


    听起来您想构建一个基于用户的 Web 应用程序,其中的数据由每个用户管理。在这种情况下,我(可能)会这样做:

    • Go 中的后端
    • Go 提供静态文件(启动 html、css、js、图像等)
    • Go 服务器有一个提供数据的 api 端点(例如 REST 样式)
    • 前端的 Vue(或 React)
    • Vue 从 api 请求数据以构建用户特定的内容

    【讨论】:

    • 嗨@TehSphinX,我不能说你今天超级超级详细的回复对我有多大帮助。所以首先非常非常非常感谢你。几天前,我对(你称之为)“Web 开发世界已经变得疯狂”感到非常沮丧和困惑。很多事情并没有像我预期的那样工作,我真的需要一些更大的想法来获得一个概览。阅读您的文字后,我现在有了更大的图景:) 我现在对如何开始和度过我的一天比较不同的后端语言有了更好的了解。 ......将在下一条评论中继续;)
    • ........ 这种比较以及您在回复最后部分的建议促使我更深入地研究 Go 语言。我现在将为 Go 做一些在线培训,并尝试用它开发一些第一个简单的 Web 服务器。我相信会有更多的问题出现,但现在你的回复回答了我脑海中的所有问题。所以再次 --> 非常感谢您的良好指导!它真的帮了我很多! BR,中层
    • 一旦你完成了 Go 的第一步,这将帮助你为 Web 服务器打下良好的基础:pace.dev/blog/2018/05/09/…
    猜你喜欢
    • 2018-04-02
    • 2010-10-22
    • 2010-09-24
    • 2011-06-25
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    相关资源
    最近更新 更多