我不知道如何提出这个问题,所以我将描述我在做什么,我想要一些启示。
我正在使用node
和express
进行服务器端渲染。
当我开发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());
自动处理这些变量的正确方法是什么?
答案 0 :(得分:3)
是否有理由完全符合参考资格?如果您的目录结构相同,则可以使用相对引用,例如将'$ {ipAddress} / place-order'更改为'/ place-order'
答案 1 :(得分:2)
一种正确的方法是使用流程环境。例如,您可以根据console.log( this.state.users )
:
NODE_ENV
您肯定也可以使用自定义变量
const ipAdress = process.env.NODE_ENV === "production" ? "http://255.255.255" : "http://localhost";
These variables can then be set to different values on different servers.
要将更改传递给 clientside javascript ,您需要将它们写入服务器上某处传送到客户端的文件中。这可以通过模板轻松完成,例如EJS。