后 end/server-side 种语言的实际作用是什么?
What do back end/server-side languages actually do?
在掌握了 HTML、Javascript(前端)和 CSS 的基础知识之后,我想了解后端编程,它是什么,某些语言的作用等等。不幸的是,我找不到任何关于此的良好信息来源(欢迎提供链接!)。所以我有几个问题。
总的来说,我对后端编程感到困惑。主要是关于创建网络应用程序或类似多人网络游戏的具体要求。
例如,如果我学习了 node.js,我是否还需要学习 mysql/sql 来创建多人游戏(带有玩家配置文件的空气曲棍球游戏)。
Python/PHP呢?
我不太明白语言在后端扮演什么角色。
例如:如果我想在游戏中有一个全局高分菜单。
※需要数据库吗?
※我必须使用后端语言吗?
- 我也听说过 Socket.io 但是这个网站对那些不太了解这些东西的人来说不是很有帮助(比如我!)所以我真的不知道它是什么- 框架、插件、语言等 - 或者它的作用。 - 在网站上是这样说的:
Socket.IO enables real-time bidirectional event-based communication.
我不知道那是什么意思!解释会很有帮助!
※ 我还需要后端编程语言或 node.js 才能使用 socket.io 吗?
我觉得这些很重要,不幸的是许多(至少是我)刚开始学习 javascript 或任何其他语言的人不理解。
谢谢!
当然让我们分解一下。
正面end/client侧面
这种类型的编程是 客户端 也就是访问该网站的用户将会看到的。这将包括您的 HTML、CSS、JavaScript。这些都会影响客户看到的内容。
背面end/server侧面
现在,前端的问题是没有持久存储。什么是持久存储?好吧,这样想。如果您有一个询问用户姓名的输入框,并且 he/she 在 "Anna" 中键入,您可以将其存储在 javascript 变量中。一旦客户端关闭互联网浏览器,名称 "Anna" 就永远丢失了!好吧...如果我们想存储 usernames/passwords 和其他所有内容的列表,那不是很有用吗?
这就是 持久性存储 的用武之地。持久性存储本质上是您的数据库,可以是关系型和非关系型...两者的示例是
Rel - MySQL、PostgreSQL、Oracle...和其他几个
无相关 - MongoDB
我真的不打算研究数据库,只是知道它们的存在是为了存储您的数据...无限期。 服务器端语言 用于与数据库和客户端交互。他们就像中间人。 Rails、Django 和 (CodeIgniter, Laravel) PHP 等框架负责创建允许您进行交互的 框架 与客户端、数据库并为您的网页提供服务。
例如,想想博客。有成千上万的帖子!如果您必须为每个博客页面编写和复制粘贴您的 HTML 代码数千次,那将是绝对可怕的,不是吗?好吧,而不是那样做,你可以将所有个人帖子存储在数据库中,并使用 "template" 来 serve 你的内容.这样您只需编写一次 HTML 代码(给予或接受),服务器将动态处理如何 查看 您的信息。
这是所谓的 MVC 或模型视图控制器的基础。
希望这对您有所帮助。
我明白你为什么感到困惑。我先稍微解释一下再回答大家的问题
什么是编程语言?
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
在浏览器中查看它们。 这不是网络服务器实际工作的方式!
当您转到那个 URL 时,您服务器上的程序 运行ning 收到一个请求(在许多其他信息中)告诉用户想要 /path/to/filename/
。然后程序可以用这些信息做任何它想做的事。例如,它可以发回一个页面,其中包含以下文本:“您想要页面 /path/to/filename/”。
为了获得熟悉的文件服务行为,经常使用 Apache。例如,该行为对于提供图像是合理的。页面本身通常由可以填充的空白组成。例如,您不想为每一页重复页面的 header。
如果你真的想了解细节,我建议你尝试 the Go standard library. With the library I linked, you can implement a server in two lines of Go code and serve files simply with a call to http.ServeFile
while still maintaining complete control over your server. And if you want to build something bigger you can do the filling in the blanks 我之前提到过。
我建议你开始学习 PHP 或者 - 如果你熟悉 JavaScript 和事件驱动架构 - Node.JS.
两者都有很多分步指南和手册。
这里有两个:
在开始学习网络服务器等之前,您应该了解什么是网站,什么是网络服务器及其作用,什么是数据库及其作用。
您应该自己尝试回答的问题如下:
- 网站来自哪里(生成并发送)
- 我怎么会这样(我的浏览器)
- 浏览器做什么
- 如何动态生成内容
- 什么是网络服务器(例如 Apache)
如果您了解这些(以及更多)基础知识,您就可以更轻松地开始学习服务器端语言,例如 PHP
让我们尝试回答您当前的问题:
For example, if I learned node.js would I also need to learn mysql/sql to create a multiplayer game (Air hockey game with a player profile) .
没有。您还可以使用 MongoDB / Postresql / 文本文件之类的东西。
但是,是的,您应该知道如何使用数据存储。
What about with Python/PHP?
这些是可用于服务器端编程(脚本)的脚本语言。你不必学习它们。你可以使用 Node.JS.
I don't really understand what roles the languages play in back end.
请参考Wikipedia。
E.g: If I wanted to have a global hi-score menu on a game.
※Would I have to have a database?
你应该有一个数据库
※Would I have to use a back end language?
是的。
[...] I have no idea what that means! An explanation would be helpful!
那你不应该尝试使用它。
它可以帮助您通过所谓的 套接字 进行通信。客户端(Web 浏览器)可以与服务器通信,例如NodeJS (Socket.IO 不仅支持 JavaScript) over a kind of channel.
※ Also do I need a back end programming language or node.js to use socket.io?
是的。
但是您可以在不创建自己的套接字的情况下与外部系统上的另一个套接字通信。
在掌握了 HTML、Javascript(前端)和 CSS 的基础知识之后,我想了解后端编程,它是什么,某些语言的作用等等。不幸的是,我找不到任何关于此的良好信息来源(欢迎提供链接!)。所以我有几个问题。
总的来说,我对后端编程感到困惑。主要是关于创建网络应用程序或类似多人网络游戏的具体要求。
例如,如果我学习了 node.js,我是否还需要学习 mysql/sql 来创建多人游戏(带有玩家配置文件的空气曲棍球游戏)。
Python/PHP呢?
我不太明白语言在后端扮演什么角色。
例如:如果我想在游戏中有一个全局高分菜单。
※需要数据库吗?
※我必须使用后端语言吗?
- 我也听说过 Socket.io 但是这个网站对那些不太了解这些东西的人来说不是很有帮助(比如我!)所以我真的不知道它是什么- 框架、插件、语言等 - 或者它的作用。 - 在网站上是这样说的:
Socket.IO enables real-time bidirectional event-based communication.
我不知道那是什么意思!解释会很有帮助!
※ 我还需要后端编程语言或 node.js 才能使用 socket.io 吗?
我觉得这些很重要,不幸的是许多(至少是我)刚开始学习 javascript 或任何其他语言的人不理解。 谢谢!
当然让我们分解一下。
正面end/client侧面
这种类型的编程是 客户端 也就是访问该网站的用户将会看到的。这将包括您的 HTML、CSS、JavaScript。这些都会影响客户看到的内容。
背面end/server侧面
现在,前端的问题是没有持久存储。什么是持久存储?好吧,这样想。如果您有一个询问用户姓名的输入框,并且 he/she 在 "Anna" 中键入,您可以将其存储在 javascript 变量中。一旦客户端关闭互联网浏览器,名称 "Anna" 就永远丢失了!好吧...如果我们想存储 usernames/passwords 和其他所有内容的列表,那不是很有用吗?
这就是 持久性存储 的用武之地。持久性存储本质上是您的数据库,可以是关系型和非关系型...两者的示例是
Rel - MySQL、PostgreSQL、Oracle...和其他几个
无相关 - MongoDB
我真的不打算研究数据库,只是知道它们的存在是为了存储您的数据...无限期。 服务器端语言 用于与数据库和客户端交互。他们就像中间人。 Rails、Django 和 (CodeIgniter, Laravel) PHP 等框架负责创建允许您进行交互的 框架 与客户端、数据库并为您的网页提供服务。
例如,想想博客。有成千上万的帖子!如果您必须为每个博客页面编写和复制粘贴您的 HTML 代码数千次,那将是绝对可怕的,不是吗?好吧,而不是那样做,你可以将所有个人帖子存储在数据库中,并使用 "template" 来 serve 你的内容.这样您只需编写一次 HTML 代码(给予或接受),服务器将动态处理如何 查看 您的信息。
这是所谓的 MVC 或模型视图控制器的基础。 希望这对您有所帮助。
我明白你为什么感到困惑。我先稍微解释一下再回答大家的问题
什么是编程语言?
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
在浏览器中查看它们。 这不是网络服务器实际工作的方式!
当您转到那个 URL 时,您服务器上的程序 运行ning 收到一个请求(在许多其他信息中)告诉用户想要 /path/to/filename/
。然后程序可以用这些信息做任何它想做的事。例如,它可以发回一个页面,其中包含以下文本:“您想要页面 /path/to/filename/”。
为了获得熟悉的文件服务行为,经常使用 Apache。例如,该行为对于提供图像是合理的。页面本身通常由可以填充的空白组成。例如,您不想为每一页重复页面的 header。
如果你真的想了解细节,我建议你尝试 the Go standard library. With the library I linked, you can implement a server in two lines of Go code and serve files simply with a call to http.ServeFile
while still maintaining complete control over your server. And if you want to build something bigger you can do the filling in the blanks 我之前提到过。
我建议你开始学习 PHP 或者 - 如果你熟悉 JavaScript 和事件驱动架构 - Node.JS.
两者都有很多分步指南和手册。
这里有两个:
在开始学习网络服务器等之前,您应该了解什么是网站,什么是网络服务器及其作用,什么是数据库及其作用。
您应该自己尝试回答的问题如下:
- 网站来自哪里(生成并发送)
- 我怎么会这样(我的浏览器)
- 浏览器做什么
- 如何动态生成内容
- 什么是网络服务器(例如 Apache)
如果您了解这些(以及更多)基础知识,您就可以更轻松地开始学习服务器端语言,例如 PHP
让我们尝试回答您当前的问题:
For example, if I learned node.js would I also need to learn mysql/sql to create a multiplayer game (Air hockey game with a player profile) .
没有。您还可以使用 MongoDB / Postresql / 文本文件之类的东西。 但是,是的,您应该知道如何使用数据存储。
What about with Python/PHP?
这些是可用于服务器端编程(脚本)的脚本语言。你不必学习它们。你可以使用 Node.JS.
I don't really understand what roles the languages play in back end.
请参考Wikipedia。
E.g: If I wanted to have a global hi-score menu on a game. ※Would I have to have a database?
你应该有一个数据库
※Would I have to use a back end language?
是的。
[...] I have no idea what that means! An explanation would be helpful!
那你不应该尝试使用它。 它可以帮助您通过所谓的 套接字 进行通信。客户端(Web 浏览器)可以与服务器通信,例如NodeJS (Socket.IO 不仅支持 JavaScript) over a kind of channel.
※ Also do I need a back end programming language or node.js to use socket.io?
是的。 但是您可以在不创建自己的套接字的情况下与外部系统上的另一个套接字通信。