根据我在Web开发中的经验,我知道PHP,Java,Python等语言用于后端开发(在服务器上运行的软件),对于前端语言,则使用JS / HTML / CSS。
但是我看到许多公司都说,例如,PHP用于前端开发,而python用于后端。
这是否意味着PHP是通过REST,RPC等调用使用其他语言编写的其他服务的前端?
根据我在Web开发中的经验,我知道PHP,Java,Python等语言用于后端开发(在服务器上运行的软件),对于前端语言,则使用JS / HTML / CSS。
但是我看到许多公司都说,例如,PHP用于前端开发,而python用于后端。
这是否意味着PHP是通过REST,RPC等调用使用其他语言编写的其他服务的前端?
Answers:
您已经将术语“前端”和“后端”与“服务器端”和“客户端”混淆了。“后端”通常是指未直接暴露给用户的系统(数据库服务器,中间件等),而“前端”通常是指应用程序(对于Web,通常表示静态)和动态网页)直接由客户端访问。
在Web应用程序中,客户端(用户的浏览器)访问通过“前端”技术在“服务器端”存储或动态生成的网页。这些前端组件可以依次从“后端”组件中提取数据或其他信息。因此,用PHP编写的Web应用程序将是“前端”,但是“服务器端”。但是,如果网页包含要由用户浏览器执行的任何javascript,则该 javascript代码将在“客户端”执行。
希望我已经消除了一些混乱,但是现在我冒着更多的风险。
首先,我们有AJAX,它是在客户端(即客户端)执行的代码(通常是JavaScript),通过从面向Internet的服务中提取信息(它们本身不会生成网页)来创建您看到的网页。这些服务在前端服务器端生成它们的信息(因为它们是公共的,如果您知道URL,则可以将浏览器直接指向它们)。
其次,JavaScript当然不限于客户端使用。它已作为一种“服务器端”语言变得越来越流行(有关示例,请参见node.js)。因此,它最常见的用途就是我在上一段中描述的面向Internet的服务。
在Web 2.0之前,事情要简单得多。那时,在Web应用程序的上下文中,前端是生成网页的地方,而JavaScript仅在客户端运行,并且在将鼠标移到网页上时对网页进行了较小的修饰,例如高光图像。但是,这种简单性使人们懒于定义。现在情况变得更加复杂,因此必须准确了解这些术语。
(哦,如果您必须使用PHP,请把它放在前端。这显然不是一种好的后端技术。而且,如果您发现有人在创建执行PHP客户端的浏览器,请射击它们。)
我认为您的问题可能确实是PHP特有的,因为我看不到您提到的其他任何后端技术都像这样使用。
PHP是一个很有趣的示例,因为它可以(对于我来说可能相当难看),对于许多Web项目,它被视为一种多语言。您可以执行传统的“ 后端 ”任务-例如文件和数据库操作,同时还可以构建“ 前端 ”标记。
这显然会导致意大利面条混乱,而没有真正的关注点分离,因此我真的不应该担心它。举一个很好的例子,如果您浏览wordpress源码,您可能会经常迷路-这是我责怪该语言的一个项目,代码库的组织实际上非常好。
可以通过使用“ 模板引擎 ”(例如Smarty)来对此进行某种程度的补救-但是仍然是PHP在构建“前端”同时还提供“后端”功能。这是PHP设计背后的故意决定,但毕竟是“ 超文本处理器 ”!
因此,PHP可以轻松地同时适合“ 前端 ”和“ 后端 ”使用,这应该使您的示例更清楚。因此,您很可能是正确的,因为PHP将为前端处理和构建所有标记,但是它将在其他地方发出请求以收集所需的数据-最有可能是使用上述一种语言编写的服务。
我个人觉得整个“后端”和“前端”术语有点过时。我宁愿事情只涉及客户端和服务器端。那么就没有真正的歧义。*
最近,我看到了一个客户端规范,该规范要求使用node.js和相关工具编写的后端系统,但希望使用PHP框架(Laravel)进行前端构建。这伴随着许多相关的成本,在我看来,这不是一个很好的解决方案,并且可能会导致很多问题。
就个人而言,这种配置似乎使某人不必要地将PHP塞入另一个堆栈中-这意味着所需的资源超过了实际需要的资源,维护人员需要使用更广泛的技术,并且存在更多的故障点。
此外,我还认为很少有需要这种中介堆栈的方案。大多数后端语言/框架完全能够生成前端所需的标记。尽管我在那里有待纠正。
*尽管,这使您的问题浮出水面。使用Javascript构建的后端系统又如何呢?(node.js;))
编辑:
阅读@itsbruce的评论后,我决定澄清一下我的“前端” /“后端”术语的含义。
传统上,这种术语会很好,架构上的Web应用程序要简单得多-而且我敢说,很笨拙。在我看来,说“服务器端”和“客户端”要干净得多,而且随着将更多处理和逻辑推向客户端的当前趋势变得越来越普遍,这一点变得越来越清晰。
在客户端进行大量数据处理已变得可以接受(仅查看当前流行的一些javascript框架),但这真的是前端吗?用户看不到它,他们看到了结果-按照传统的标准,通常将其视为“后端”;但这是在浏览器中发生的。
同样,与此问题极为相关的是,用PHP构建标记确实是一项前端任务吗?我对此表示怀疑,快速浏览工作板显示很少有前端开发人员希望获得PHP经验或知识。但直觉表明接口的标记本质上是前端。
存在此问题的事实实际上是“ 前端 ”和“ 后端 ”如何固有地模棱两可的一个示例,并将继续如此。
通过将模糊性称为“服务器端”或“客户端”的任务,您知道代码在何处执行以及将使用哪种语言。如果您在OP提供的示例中说“ 前端 ”,那么我怀疑很多人会说“ 哦,那么服务器上的PHP对吗? ”。