[英]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.