【问题标题】:How does Node.JS work as opposed to PHP?与 PHP 相比,Node.JS 是如何工作的?
【发布时间】:2015-04-08 02:21:06
【问题描述】:

我正在考虑从 PHP 切换到使用 Node.js 来开发我的网站。但是,在研究了一段时间的 Node.js 之后,我似乎无法确切地找到如何使用 Node.js 编写网页。我看到您在 Node 中使用 response.write() 将 html 写入您的网页,但这似乎是一件乏味的事情,将您的整个网页作为节点文件中的字符串文字。与 PHP 将脚本嵌入 HTML 文件的方法相比,Node 中的 Web 开发如何工作?

【问题讨论】:

  • Node.js 不能用作 web 的 php 或 perl。例如,它不能作为 Apache 模块使用。使用 Node.js,您必须自己提供页面服务,如果您想像使用 PHP 一样进行一些 Web 开发,则必须使用 Express 等框架。
  • 您是否真的在 google 上搜索过类似“使用 node.js 构建网站”之类的内容...有人告诉我您没有...我相信这个问题缺乏努力。
  • 我可以建议阅读这个vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard。它将帮助您了解,除非您了解基础知识和对它的需求,否则切换到 Node.js 或任何其他平台不会产生任何影响。
  • @SarveshKumarSingh 我试过用谷歌搜索它,但是我精通 PHP 并且对 Node 完全陌生,我不知道会发生什么或如何搜索它。是的,我已经搜索过“使用 node.js 构建网站”,但正如我所说,我找到的所有答案都只涉及写入 html 流,这对于大型项目来说似乎很疯狂。请仔细阅读问题,不要妄下结论。

标签: javascript php node.js


【解决方案1】:

PHP 非常倾向于从模板创建网页,而 Node.js 级别较低且范围更广。 PHP 和 Node.js 区别的一个非常粗略的概述:

  • 在 PHP 中,您将启动一个 Web 服务器(几乎可以肯定是 Apache),然后将一个 PHP 文件放在您想要从中提供服务的目录中。您可能会使用一些花哨的 .htaccess 指令来使 URL 更好,等等。
  • 在 Node.js 中创建一个脚本,在其中使用 http 模块启动 Web 服务器,然后在向服务器发出请求时提供回调。决定使用哪个页面来响应请求等等,都是您要做的工作。

在 PHP 中,诸如将请求路由到特定 PHP 文件、压缩、解码 POST 和 GET 变量之类的事情都是使用 Apache 完成的 - 您的 PHP 文件有点像 Apache 在收到请求时运行的模板。在 Node.js 中,从启动服务器到发送 HTML,一切都在您的 Node.js 脚本中完成——您必须完成所有事情。

HTML 在 Node.js 中并不是 PHP 的一等公民。通常,在 Node.js 中,您只是向客户端发送字符串。 Node.js 有很多第三方模板工具 - 但它们将是依赖项,而不是内置函数。

【讨论】:

    【解决方案2】:

    正如其他人所回答的那样,Node.js 存在模板引擎。随着 Web 开发的当前趋势,大多数现代 Web 框架都鼓励将代码与视图(或您交付给客户端的 HTML)分离。例如,Ruby 的 ERB 模板、Python 中的 Jinja2、Handlebars/Jade for Node,现在许多现代 PHP 框架也支持这一点(Zend/Slim)。

    另一个主要区别在于它们的工作方式和语言的设计方式。 PHP 是一种面向对象的语言,支持类、继承、成员可见性、接口等。Node.js 是 Javascript,因此使用原型继承。

    社区和生态系统也不同。现代 PHP 倾向于使用 Composer 包管理器,并且是在 PEAR 之后出现的。但是,npm 是官方的节点包管理器,它与平台深度集成。搜索新包然后在您的项目中使用它们是微不足道的。

    主要的架构差异在于 Node 在设计上也是异步的,这意味着它在单个线程中运行,并且在内存有限的系统上可能比 PHP 处理更多的连接。当请求进入 PHP 应用程序时,所有服务/控制器和您定义的所有内容都必须恢复,您定义 PHP 文件并让 Apache/Nginx 处理它们。在 Node 中,您有一个节点进程,您可以将外部请求代理到该进程。

    【讨论】:

      【解决方案3】:

      PHP 是一种脚本语言,node 是一个建立在 javascript 之上的平台。


      要使用 node.js 开始 Web 开发,首先您必须了解 node 的不同之处。 Node 为您提供了一种对数据库进行异步调用的方法(这是一个非常简单的解释),然后您可以将其包装在漂亮的 html 中并将其发送(路由)到浏览器。或者,您可以在前端使用 angular.js 之类的东西,并使用 node.js 发出数据库请求和响应,这些请求和响应由更新前端 html 的 angular.js 拾取。如果您喜欢使用异步调用来获取数据的单页应用程序的想法,请使用带角度的节点。我喜欢的教程是https://scotch.io/tutorials/creating-a-single-page-todo-app-with-node-and-angular希望对你有帮助!

      【讨论】:

        【解决方案4】:

        您不一定需要为视图的每一行使用 response.write,您也可以使用模板引擎。搜索“node.js 模板引擎”。乍一看,这似乎很乏味,但类似的方法可以防止您编写糟糕的代码。

        【讨论】:

          【解决方案5】:

          Node.js 提供了很多模块来做这些事情,有一个名为 express for node.js 的框架http://expressjs.com/ 您可以使用模板引擎并创建视图。一些例子就像 ejs 或玉。它不一定是字符串。

          【讨论】:

            猜你喜欢
            • 2011-06-01
            • 2021-07-02
            • 2012-02-28
            • 2011-04-04
            • 2011-03-22
            • 1970-01-01
            • 2017-07-12
            • 2012-03-18
            • 1970-01-01
            相关资源
            最近更新 更多