也许我误解了Node.js是如何工作的,但我想将它用作Web应用程序的服务器后端,而不是作为服务/监听端口运行。
我愿意听取更好地解决问题的建议,这个应用程序只能在我们的内联网上使用。
我在想什么:
后端server.js:
function connectDb(usr, pwrd){
//Some npm package code to connect to a db
return console.log("Sucessfully connected")
}
前端javascript.js:
require("server.js")
$(".connect.button").on("click", function(e){
connectDb($(".connect.user").text(), $(".connect.pwrd").text())
})
答案 0 :(得分:2)
您的问题和代码示例有两个不同的方面,您可以通过这些方面来更好地了解生态系统。
当客户想要从服务器获取某些资源时,它会连接到该服务器上的特定端口,后端应用程序正在该端口上监听"。这意味着,为了能够提供来自数据库的资源,您必须让Node进程侦听端口,从数据库中获取所请求的资源并返回它们。这种数据交换的完美格式是JSON。 为了更好地理解这个过程,您可能想要尝试编写一个简单的Node应用程序,当它收到请求时通过网络发送一段JSON,并尝试在客户端代码中使用XHR加载它(例如使用JQuery& #39; s AJAX方法)。然后,尝试使用来自数据库的动态JSON来提供基于请求内容的查询。
require("server.js")
仅适用于Node,并且无法在客户端浏览器中运行的JavaScript中使用(嗯,至少现在。也许某种模块加载可能是为浏览器标准化,但那是另一场辩论。)
要在客户端浏览器中使用脚本,您必须将其包含在带有<script>
标记的已加载页面中。
在节点中,您可以使用require
加载脚本文件。但是,所述脚本必须声明哪些函数或变量暴露给require
它的脚本。要实现它,您必须导出这些变量或函数设置module.exports
。
请参阅this article以获得一些基本的了解,并this part of Node docs来掌握模块加载的所有细节。这非常重要,因为这可以帮助您构建应用程序并避免出现奇怪的错误。
答案 1 :(得分:0)
首先,node
本身并不是一个Web服务器:它是一个JS解释器,其中(除其他外)可用于编写Web服务器。但node
本身并不是一个Web服务器,而不仅仅是Java。
但是如果你想让事情能够连接到你的node
程序,为了做一些事情,比如访问数据库或者提供网页,那么,是的,你的程序需要监听一些端口在它运行的机器上。
只需让您的节点程序收听您计算机上的特定端口,并不意味着其他任何人都可以访问它;但这确实是一个网络问题而非编程问题。