簡體   English   中英

我的網站如何知道連接到我的 Node 應用程序?

[英]How does my website know to connect with my Node app?

如果我在 Heroku 上運行 Node 應用程序,它會創建一個服務器並偵聽端口 80。我的網站如何知道與我的 node.js 應用程序中的代碼進行交互?

本質上,我試圖將在我的客戶端使用 Ajax 創建的對象發送到服務器端。 我的 node.js 應用程序如何偵聽此數據,尤其是在生產中?

更多信息:
所以我有一個靜態網站視圖,其中包含通過共享主機上傳的 html 和 css。 我正在嘗試使用 Node.js 通過 Stripe 實現一個簡單的支付系統。 所以我只有一台用於 Node 的服務器和一台用於我的網站的共享主機。 我的問題是如何連接兩者而不必通過 Node 提供 .html 文件?

目前還不清楚您在設置 node.js 服務器時究竟遇到了什么問題,因為您要求的幾乎所有內容都在網絡上的許多示例中進行了解釋。 因此,由於我不知道您卡在哪里,我將從概念上解釋您從您的站點發出 Ajax 調用所經歷的步驟:

  1. 設置您的 node.js 服務器偵聽 DNS 中主機上的唯一端口。 由於這是與您的網站不同的服務器,因此它需要是不同的主機或不同的端口(如果在同一主機上)。
  2. 在您的 node.js 應用程序中啟用 CORS,以便您的 node.js 服務器允許瀏覽器向它發出跨源請求。 有一個 NPM 模塊可以讓你很容易地做到這一點。
  3. 設置 node.js Web 服務器的外殼。 我個人會使用 Express 使其更簡單。
  4. 在您的服務器中為特定路由上的“發布”創建一個請求處理程序。 這將允許您的 Web 服務器偵聽特定請求。
  5. 在該請求處理程序中編寫代碼來解析請求並執行您想要對請求執行的任何操作。

僅供參考,如果您對 node.js 服務器的唯一想法是使用 Stripe checkout,那么您可以在網頁中編寫 Javascript 直接與 Strip 服務通信,而無需晚上擁有自己的 node.js 服務器. 這取決於您要嘗試執行的操作的詳細信息。 此處的一些 Strip 結帳詳細信息: https : //stripe.com/docs/checkout

因為您聲明了您的路線(假設您使用的是 Express 之類的東西,或者您已經制作了自己的 vanilla http 服務器)所以當您訪問路線時,它知道執行您也綁定的任何功能

例如app.get('/', someController);

知道每當有人訪問/它會使someController執行。

Node通過自己的程序直接運行網站,知道這些

如果我誤解了讓我知道

回復評論:

我不太明白你的問題,如果你上傳你的view文件,例如你的home.ejs/html/jade無論你正在使用什么到另一台服務器,然后將你的app上傳到另一台服務器,它不會工作,你會得到404未找到或什么的。 我假設你來自 PHP 或者你有你的 PHP 文件的東西,一切都組合在一起,就像你在一個文件中擁有你的html/php然后當你訪問你的 localhost/home.php 時它工作。 Node 是不同的,你有你的app ,它通過你的服務器端邏輯告訴它調用什么視圖,你的客戶端東西(比如你的視圖和 css/js 以及什么不是)與你的服務器端邏輯完全分開,並通過你的控制器,你告訴什么函數調用什么視圖,例如

(假設您使用的是 express)您將其作為控制器:

app.get('/', function(req, res) {
  res.render('home');
});

然后在你的app.js邏輯中你有:

// Your Route
app.use('/', homeController)

那么在你views你可能有

home.html/jade/ejs (擴展名取決於您使用的任何模板)

現在,當有人訪問/路由看到這個並且運行正常時,我需要調用homeController並且它確實調用了它並且它很高興,然后它獲取函數的內容,然后哦它想要呈現一個視圖文件,然后表達'函數res.render將映射到您的views文件夾,直到它找到與您請求的內容類似的內容,在這種情況下: home.html然后它呈現文件並將響應發送回客戶端,

簡而言之, Request > Route > Controller > Function Body > Does whatever you've programmed from there

長話短說,您的客戶端內容和您的服務器邏輯彼此完全獨立

就像你的PHP或其他東西一樣,你有你的 php 文件

<?php

<html>
</html>

?> (i think thats how it goes I haven't done php in a looooonngg time)

然后你運行 apache 或其他什么,apache 會神奇地路由到請求的.php文件,編譯並渲染它

希望我的回答好一點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM