如何在本地使用Node.js离线/本地?

时间:2016-10-24 16:12:45

标签: javascript node.js database web-applications

也许我误解了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())
})

2 个答案:

答案 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程序,为了做一些事情,比如访问数据库或者提供网页,那么,是的,你的程序需要监听一些端口在它运行的机器上。

只需让您的节点程序收听您计算机上的特定端口,并不意味着其他任何人都可以访问它;但这确实是一个网络问题而非编程问题。