前端用后端语言编写![关闭]


10

根据我在Web开发中的经验,我知道PHP,Java,Python等语言用于后端开发(在服务器上运行的软件),对于前端语言,则使用JS / HTML / CSS。

但是我看到许多公司都说,例如,PHP用于前端开发,而python用于后端。

这是否意味着PHP是通过REST,RPC等调用使用其他语言编写的其他服务的前端?


3
这篇文章很难阅读(文字墙)。您介意将其编辑为更好的形状吗?
t 2013年

Answers:


36

您已经将术语“前端”和“后端”与“服务器端”和“客户端”混淆了。“后端”通常是指未直接暴露给用户的系统(数据库服务器,中间件等),而“前端”通常是指应用程序(对于Web,通常表示静态)和动态网页)直接由客户端访问。

在Web应用程序中,客户端(用户的浏览器)访问通过“前端”技术在“服务器端”存储或动态生成的网页。这些前端组件可以依次从“后端”组件中提取数据或其他信息。因此,用PHP编写的Web应用程序将是“前端”,但是“服务器端”。但是,如果网页包含要由用户浏览器执行的任何javascript,则 javascript代码将在“客户端”执行。

希望我已经消除了一些混乱,但是现在我冒着更多的风险。

首先,我们有AJAX,它是在客户端(即客户端)执行的代码(通常是JavaScript),通过从面向Internet的服务中提取信息(它们本身不会生成网页)来创建您看到的网页。这些服务在前端服务器端生成它们的信息(因为它们是公共的,如果您知道URL,则可以将浏览器直接指向它们)。

其次,JavaScript当然不限于客户端使用。它已作为一种“服务器端”语言变得越来越流行(有关示例,请参见node.js)。因此,它最常见的用途就是我在上一段中描述的面向Internet的服务。

Web 2.0之前,事情要简单得多。那时,在Web应用程序的上下文中,前端是生成网页的地方,而JavaScript仅在客户端运行,并且在将鼠标移到网页上时对网页进行了较小的修饰,例如高光图像。但是,这种简单性使人们懒于定义。现在情况变得更加复杂,因此必须准确了解这些术语。

(哦,如果您必须使用PHP,请把它放在前端。这显然不是一种好的后端技术。而且,如果您发现有人在创建执行PHP客户端的浏览器,请射击它们。)


根据您的最后一句话,您可能会喜欢code.google.com/p/php-to-js :-P
Andrea

如果每种语言都可以在前端使用,而每种语言都可以在后端使用,那么这种区别是否就没有被问到的用处?它只能在应用程序的上下文中回答。
Claudiu Creanga '16

7

我认为您的问题可能确实是PHP特有的,因为我看不到您提到的其他任何后端技术都像这样使用。

PHP是一个很有趣的示例,因为它可以(对于我来说可能相当难看),对于许多Web项目,它被视为一种多语言。您可以执行传统的“ 后端 ”任务-例如文件和数据库操作,同时还可以构建“ 前端 ”标记。

这显然会导致意大利面条混乱,而没有真正的关注点分离,因此我真的不应该担心它。举一个很好的例子,如果您浏览wordpress源码,您可能会经常迷路-这是我责怪该语言的一个项目,代码库的组织实际上非常好。

可以通过使用“ 模板引擎 ”(例如Smarty)来对此进行某种程度的补救-但是仍然是PHP在构建“前端”同时还提供“后端”功能。这是PHP设计背后的故意决定,但毕竟是“ 超文本处理器 ”!

因此,PHP可以轻松地同时适合“ 前端 ”和“ 后端 ”使用,这应该使您的示例更清楚。因此,您很可能是正确的,因为PHP将为前端处理和构建所有标记,但是它将在其他地方发出请求以收集所需的数据-最有可能是使用上述一种语言编写的服务。

我个人觉得整个“后端”和“前端”术语有点过时。我宁愿事情只涉及客户端和服务器端。那么就没有真正的歧义。*

最近,我看到了一个客户端规范,该规范要求使用node.js和相关工具编写的后端系统,但希望使用PHP框架(Laravel)进行前端构建。这伴随着许多相关的成本,在我看来,这不是一个很好的解决方案,并且可能会导致很多问题。

就个人而言,这种配置似乎使某人不必要地将PHP塞入另一个堆栈中-这意味着所需的资源超过了实际需要的资源,维护人员需要使用更广泛的技术,并且存在更多的故障点。

此外,我还认为很少有需要这种中介堆栈的方案。大多数后端语言/框架完全能够生成前端所需的标记。尽管我在那里有待纠正。

*尽管,这使您的问题浮出水面。使用Javascript构建的后端系统又如何呢?(node.js;))

编辑:

阅读@itsbruce的评论后,我决定澄清一下我的“前端” /“后​​端”术语的含义。

传统上,这种术语会很好,架构上的Web应用程序要简单得多-而且我敢说,很笨拙。在我看来,说“服务器端”和“客户端”要干净得多,而且随着将更多处理和逻辑推向客户端的当前趋势变得越来越普遍,这一点变得越来越清晰。

在客户端进行大量数据处理已变得可以接受(仅查看当前流行的一些javascript框架),但这真的是前端吗?用户看不到它,他们看到了结果-按照传统的标准,通常将其视为“后端”;但这是在浏览器中发生的。

同样,与此问题极为相关的是,用PHP构建标记确实是一项前端任务吗?我对此表示怀疑,快速浏览工作板显示很少有前端开发人员希望获得PHP经验或知识。但直觉表明接口的标记本质上是前端。

存在此问题的事实实际上是“ 前端 ”和“ 后端 ”如何固有地模棱两可的一个示例,并将继续如此。

通过将模糊性称为“服务器端”或“客户端”的任务,您知道代码在何处执行以及将使用哪种语言。如果您在OP提供的示例中说“ 前端 ”,那么我怀疑很多人会说“ 哦,那么服务器上的PHP对吗? ”。


3
我没有否决您的意见,但您的答案几乎和问题一样难读,而且它的确无法解决术语混淆(如果有的话,会更糟)。更重要的,“前端v。后端”和“客户端v。服务器端”之间根本没有歧义。他们描述了不同而截然不同的关系。您可能会说:“我希望我们不再考虑颜色和形状;事物可以是绿色或蓝色,圆形或正方形,而有些事物是绿色和方形是不明确的”。
itsbruce 2013年

h,我没有足够的时间去校对,因为我不得不重新开始工作。尽管对此评论表示欢呼,但它让我有所准备。我确实坚持我对术语的看法,但是会对此有所扩展。助教。
Fergus在伦敦,2013年

不一定-我认为网络服务器语言是客户端的一部分(考虑到如今网络服务器被黑客攻击的频率应从第一天起就被考虑),因此有必要区分属于演示文稿的服务器端语言服务器层语言提供应用层服务。因此,PHP可以被视为“前端,服务器端”语言。
gbjbaanb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.