后端/服务器端语言实际上做了什么?

时间:2015-08-16 20:07:01

标签: javascript database node.js websocket backend

在掌握了HTML,Javascript(前端)和CSS的基础知识后,我想了解后端编程,它是什么,某些语言是做什么等等。很遗憾,我无法找到任何有关的信息来源。这(链接是受欢迎的!)。所以我有几个问题。

我对后端编程感到困惑。主要是关于创建Web应用程序或类似多人网页游戏所需的内容。

  • 例如,如果我学习了node.js,我还需要学习mysql / sql来创建一个多人游戏(带有玩家资料的空气曲棍球比赛)。

  • Python / PHP怎么样?

  • 我真的不明白语言在后端扮演的角色。

例如:如果我想在游戏中获得全球高分菜单。

※我需要一个数据库吗?

※我是否必须使用后端语言?

  • 我也听说过Socket.io但是对于那些对这些东西不太了解的人来说这个网站不是很有帮助(就像我一样!)所以我真的不知道是什么它是 - 框架,插件,语言等 - 或它的作用。 - 在网站上这就是它所说的:
      

    Socket.IO支持实时双向基于事件的通信。

我不知道这意味着什么!解释会有所帮助!

※我还需要后端编程语言或node.js来使用socket.io吗?

我觉得这些是重要的事情,不幸的是很多(至少是我)刚刚开始学习javascript或任何其他语言的人都不理解。 谢谢!

3 个答案:

答案 0 :(得分:1)

当然,让我们分解它。

前端/客户端

此类节目是客户端(即访问该网站的用户)所见的内容。这将包括您的HTML,CSS,JavaScript。这些都会影响客户看到的内容。

后端/服务器端

现在,前端的问题是没有持久存储。什么是持久存储?好好想一想。如果你有一个输入框,询问用户的名字是什么,他/她输入" Anna"你会把它拿出来存放在一个javascript变量中。一旦客户关闭互联网浏览器,名称" Anna"永远失去了!嗯......如果我们想要存储一个用户名/密码列表以及其他所有内容,这不是很有用吗?

持久存储的用处。持久存储本质上是您的数据库,可以是关系型和非关系型......两者的例子都是

Rel - MySQL,PostgreSQL,Oracle ......以及其他一些

No-rel - MongoDB

我真的不打算进入数据库,只是知道它们存在以存储您的数据...... 无限期服务器端语言可以与数据库和客户端进行交互。他们就像中间人一样。诸如Rails,Django和(CodeIgniter,Laravel)PHP等框架负责创建一个框架,它允许您与客户端,数据库进行交互并为您的网页提供服务。

例如,想一个博客。有成千上万的帖子!如果您不得不为每个博客页面编写和复制粘贴HTML代码数千次,那将是非常糟糕的吗?那么您可以将所有个人帖子存储在数据库中,然后使用"模板" 提供您的内容。这样,您只需编写一次HTML代码(提供或接受),服务器就会动态处理如何查看您的信息。

这是所谓的MVC或模型视图控制器的基础。 希望这有帮助。

答案 1 :(得分:1)

我理解为什么你感到困惑。我先解释一下然后回答你的问题。

什么是编程语言?

JavaScript是一种编程语言,而HTML和CSS则不是。您可以使用大多数编程语言来指示计算机执行您想要的任何操作。另一方面,CSS和HTML只能描述文档的样子。

JavaScript在某种程度上是特殊的,因为所有主流浏览器都可以运行它。这使得它在编写在网站用户的浏览器中运行的代码时非常受欢迎。通常用编程语言编写的代码需要一个程序来运行它,或者必须为每个操作系统和处理器类型(64位x86,32位x86,ARM)提供单独的版本。

没有服务器端语言

您可以在服务器上使用任何语言,因为代码在那里运行,因此用户不需要安装任何东西。许多人使用PHP或Node.JS,但您可以使用任何语言。我使用Go来满足我所有的服务器需求。所以,是的,你需要服务器端语言,但它可以是任何编程语言。

Socket.io是一个JavaScript库。库是人们制作的软件,因此您可以轻松地将它们合并到您的程序中。因为它适用于JS,所以只有在编写JS时才能使用Socket.io。

实际上你甚至可以使用JS之外的其他东西对客户端进行编码,因为有很多语言可以编译(转换)为JS。例如,Dart,Golang。

我需要数据库吗?

对于全局高分,您需要在服务器上存储高分。将它们放在硬盘驱动器上会很不错,因为否则断电会重置排行榜。

(关系)数据库是适用于所有内容的解决方案,但在某些情况下可能有点乏味,并且在其他情况下使用过多的CPU或硬盘时间。要使用数据库,您需要学习SQL或使用ORM库。

附录:Web服务器做什么?

您可能熟悉将文件放入文件夹的系统,然后您可以转到URL mydomain.ending/path/to/filename在浏览器中查看它们。 这不是Web服务器的实际工作方式!

当您转到该URL时,服务器上运行的程序会收到一条请求(在许多其他信息中)告知用户想要/path/to/filename/。然后,程序可以使用该信息执行任何操作。例如,它可以发回一个带有文本的页面:"你想要页面/路径/到/ filename /"。

为了获得熟悉的文件服务行为,经常使用Apache。例如,对于提供图像,该行为是合理的。这些页面本身通常是用可以填写的空白部分构建的。例如,您不想为每一页重复页面标题。

如果您真的想了解详情,我建议您尝试the Go standard library。使用我链接的库,您可以在两行Go代码中实现服务器,只需调用http.ServeFile即可提供文件,同时仍然可以完全控制服务器。如果你想建立更大的东西,你可以做我前面提到的filling in the blanks

答案 2 :(得分:1)

我建议你开始学习PHP,或者 - 如果你熟悉JavaScript和事件驱动的架构 - Node.JS。

两者都有许多分步指南和手册。

以下是其中两个:

在您开始了解Web服务器等之前,您应该了解网站是什么,网络服务器是什么以及它做什么,以及数据库是什么以及它做什么。

您应该尝试回答的问题如下:

  • 哪个网站来自(谁生成并发送它)
  • 怎么来找我(我的浏览器)
  • 浏览器做什么
  • 如何动态生成内容
  • 什么是网络服务器(例如Apache)

如果您了解这些(以及更多)基础知识,您可以更轻松地开始学习像PHP这样的服务器端语言

让我们尝试回答您当前的问题:

  

例如,如果我学习了node.js,我还需要学习mysql / sql来创建一个多人游戏(带有玩家资料的空气曲棍球比赛)。

没有。你也可以使用像MongoDB / Postresql / Text Files这样的东西。 但是,您应该知道如何使用数据存储。

  

Python / PHP怎么样?

这些是可用于服务器端编程(脚本编写)的脚本语言。你不必学习它们。您可以使用Node.JS。

  

我真的不明白语言在后端扮演的角色。

请参阅Wikipedia

  

例如:如果我想在游戏中获得全球高分菜单。   ※我需要一个数据库吗?

应该有一个数据库

  

※我是否必须使用后端语言?

  

[...]我不知道这意味着什么!解释会有所帮助!

然后你不应该尝试使用它。 它可以帮助您通过所谓的套接字进行通信。客户端(Web浏览器)可以与服务器通信,例如, NodeJS(Socket.IO不仅支持JavaScript)通过某种渠道。

  

※我还需要后端编程语言或node.js来使用socket.io吗?

是。 但您可以在外部系统上与另一个套接字进行通信,而无需创建自己的套接字。