【问题标题】:How can I use Node.js Offline/locally?如何离线/本地使用 Node.js?
【发布时间】:2016-10-24 16:12:44
【问题描述】:

也许我误解了 Node.js 的工作原理,但我想将它用作 Web 应用程序的服务器后端,而不是作为服务运行/侦听端口。

我愿意听取更好地解决问题的想法,此应用仅在我们的 Intranet 上可用。

我在想的例子:

后端 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())
})

【问题讨论】:

  • 您不能运行服务器,除非它正在侦听某些东西(端口、套接字、其他形式的 IPC)。
  • @ssube 我称它为 server.js 只是为了区分,我不希望它成为服务器!
  • 您想将其用作 Web 应用程序的服务器后端...如何?如果它听不到外界的任何声音,你将如何与它交流?
  • Web 应用程序需要托管在某个位置,并且该主机是提供网页的服务器
  • @KimberlyW 是的,但在这种情况下,OP 特别希望将 Node 应用程序用作仅 API 的服务器,这意味着 HTML/JS 的提供位置超出了范围。 OP 对 的实际含义 有点困惑,但 AFAICT 就是被问及的。不确定。

标签: javascript node.js database web-applications


【解决方案1】:

您的问题和代码示例有两个不同的方面,您可以通过这些方面更好地了解生态系统。

客户端/服务器

当客户端想要从服务器获取一些资源时,它会连接到该服务器上的特定端口,后端应用程序正在“侦听”该端口。这意味着,为了能够为来自数据库的资源提供服务,您必须有一个 Node 进程监听端口,从数据库中获取请求的资源并返回它们。这种数据交换的完美格式是 JSON。 为了更好地理解这个过程,您可能想尝试编写一个简单的 Node 应用程序,在收到请求时通过网络发送一段 JSON,并尝试在客户端代码中使用 XHR 加载它(例如使用 JQuery 的AJAX 方法)。然后,尝试提供来自数据库的动态 JSON 片段,并根据请求的内容进行查询。

模块加载

require("server.js") 只能在 Node 中使用,不能在客户端浏览器中运行的 JavaScript 中使用(好吧,至少现在是这样。也许某种模块加载可以为浏览器标准化,但这是另一个争论.)。 要在客户端浏览器中使用脚本,您必须使用<script> 标记将其包含在加载的页面中。 在节点中,您可以使用require 加载脚本文件。但是,所述脚本必须声明将哪些函数或变量暴露给require 的脚本。要实现它,您必须导出这些变量或函数设置module.exports。 请参阅this article 以获得一些基本的了解,并参阅this part of Node docs 以掌握模块加载的所有细节。这非常重要,因为这将帮助您构建应用程序并避免奇怪的错误。

【讨论】:

  • 这确实很清楚,我的想法是,如果我的后端和前端都在同一台机器上,为什么它们需要通过端口进行通信,但我忘记了数据库。谢谢
【解决方案2】:

一方面,node 本身不是 Web 服务器:它是一个 JS 解释器,它(除其他外)可用于编写 Web 服务器。但是node 本身并不是一个 Web 服务器,就像 Java 一样。

但是,如果您希望事物能够连接到您的 node 程序,以便执行访问数据库或提供网页等操作,那么,是的,您的程序需要监听运行它的机器。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2019-12-07
    • 2016-01-16
    相关资源
    最近更新 更多