簡體   English   中英

如何正確分配開發變量和生產變量?

[英]How to properly assign development vs production variables?

我不知道如何提出這個問題,所以我將描述我在做什么,我想要一些啟示。

我正在使用帶有express node進行服務器端渲染。

當我開發Web應用程序時,有一個模塊包含一個變量,該變量在所有快速路由中共享,而不是硬編碼。

config.js

module.exports = {
    ipAddress: "http://localhost:8080"
}

index.js路由

var config = require("../../config.js");

router
    .get('/', function (req, res) {
        var html = `
            <div class="content">
                <a href="${config.ipAddress}/orders">Orders</a>
                <a href="${config.ipAddress}/invoices">Invoices</a>
            </div>
        `
        res.send(html);
    });

module.exports = router;

在部署應用程序時,我手動config.js更改為服務器的IP地址:

module.exports = {
    ipAddress: "http://255.255.255.255"
}

另一個例子是HTML頭中引用的scripts.js文件,它處理DOM更改。 同樣,服務器IP地址放在變量中。

scripts.js中

var ipAddress = "http://localhost:8080"; // To be changed into "http://255.255.255.255"

function placeOrder() {
    fetch(`${ipAddress}/place-order`, {
        method: "POST",
        headers: {
            "Accept": "application/json",
            "Content-type": "application/json"
        }
    })
    .then((res) => res.json())
    .then((data) => xonsole.log(data))
    .catch((err) => console.log(err));
}

document.getElementById("submit-order").addEventListener("click", () => placeOrder());

什么是自動處理這些變量的正確方法?

是否有理由完全符合參考資格? 如果您的目錄結構相同,則可以使用相對引用,例如將'$ {ipAddress} / place-order'更改為'/ place-order'

一種正確的方法是使用流程環境。 例如,您可以根據NODE_ENV切換:

 const ipAdress = process.env.NODE_ENV === "production" ? "http://255.255.255" : "http://localhost";

當然,您也可以使用自定義變量

const ipAddress = process.env.ORDER_SERVER;

然后可以在不同服務器上將這些變量設置為不同的值。


要將更改傳遞給clientside javascript,您需要將它們寫入服務器上某處傳送到客戶端的文件中。 這可以通過模板輕松完成,例如ejs。

暫無
暫無

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

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