javascript web 应用程序通常如何(以一种干净的方式)构建并部署到几个不同的环境并与它们相应的后端应用程序通信?
好吧,这种情况并不常见。通常后端应用程序将(至少看起来)在加载前端应用程序的同一台服务器上。因此,完成任务最轻松的方法可能是从前端应用程序向相应的后端服务器发出前端服务器代理请求。这样,前端应用程序仍将与其源服务器通信,这允许您为所有环境只构建一个版本。
“官方”方式是使用app.json
文件中的每个环境部分,如下所示:
"production": {
"backend": "backend.domain.tld",
// other stuff
},
"testing": {
"backend": "backend.testing.domain.tld",
// other stuff
},
"development": {
"backend": "backend.dev.domain.tld",
// other stuff
}
该backend
值将最终出现在构建的classic.json
(和/或modern.json
)文件中。前端应用程序会将值视为Ext.manifest.backend
. 但是这种方式有效地创建了您想要避免的不同构建。因此,您可以为 ONE 生产构建手动创建多个版本的classic.json
/文件,如下所示:modern.json
classic.json.testing
classic.json.staging
classic.json.production
然后在前端服务器上使用重写来响应“/classic.json”请求,并使用与服务器目的匹配的任何 json 文件。
另一种方法是在前端应用程序中保留所有环境的前端-后端映射,如下所示:
var ENV_CONF = {
'frontend.testing.domain.tld': 'backend.testing.domain.tld',
'frontend.staging.domain.tld': 'backend.staging.domain.tld',
'domain.tld': 'backend.domain.tld' // production
};
该应用程序将location.host
用作密钥并与相应的后端对话。