Javascript 与PHP相反,Node.JS是如何工作的?

Javascript 与PHP相反,Node.JS是如何工作的?,javascript,php,node.js,Javascript,Php,Node.js,我正在考虑从PHP切换到使用Node.js来开发我的网站。然而,在研究了Node.js一段时间后,我似乎无法确切地找到如何使用Node编写网页。我看到您使用Node中的response.write()将html写入网页,但这似乎是一件乏味的事情,将整个网页作为字符串文本保存在节点文件中。与PHP将脚本嵌入HTML文件的方法不同,Node中的web开发是如何工作的?Node.js提供了许多模块来完成这些工作,有一个名为express for Node.js的框架,您可以使用模板引擎创建视图。例如e

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

Node.js提供了许多模块来完成这些工作,有一个名为express for Node.js的框架,您可以使用模板引擎创建视图。例如ejs或jade。它不必是字符串。

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

PHP是一种脚本语言,node是一个基于javascript的平台



要使用node.js开始web开发,首先您必须了解node的不同之处。节点为您提供了一种对数据库进行异步调用的方法(这是一个非常简单的解释),然后您可以将其包装成漂亮的html并将其发送(路由)到浏览器。或者,您可以在前端中使用类似angular.js的内容,并使用node.js生成db请求和响应,angular.js会更新前端html。如果您喜欢使用异步调用来获取数据的单页应用程序的想法,请使用带有angular的node。我喜欢的教程是希望这有帮助

正如其他人所回答的,存在用于节点的模板引擎。根据当前web开发的趋势,大多数现代web框架都鼓励将代码与视图(或交付给客户机的HTML)分离。例如,Ruby的ERB模板、Python中的Jinja2、节点的handlebar/Jade,以及现在许多现代PHP框架都支持这一点(Zend/Slim)

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

社区和生态系统也不同。现代PHP倾向于使用Composer包管理器,这是在PEAR之后出现的。然而,npm是正式的节点包管理器,它与平台深度集成。搜索新的包然后在项目中使用它们是很简单的


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

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有很多第三方模板工具,但它们是依赖项,而不是内置函数。

Node.js不能像php或perl for web那样工作。例如,它不能作为Apache模块使用。有了Node.js,你必须自己为网页服务,如果你想用PHP的方式进行网页开发,你必须使用像Express这样的框架。你真的在谷歌上搜索过“用Node.js构建网站”这样的东西吗"... 有些事告诉我你没有。。。我认为这个问题不够努力,我建议你读一下。它将帮助您了解,除非您了解基本原理和对它的需求,否则切换到Node.js或任何其他平台不会有任何区别。@SarveshKumarSingh我曾尝试用谷歌搜索它,但由于精通PHP,对Node完全陌生,我不知道该期待什么或如何搜索它。是的,我搜索过“build website with node.js”,但正如我所说,我找到的所有答案都只涉及到编写html流,这对于大型项目来说似乎很疯狂。请仔细阅读问题,不要急于下结论