当前位置: 首页 > 知识库问答 >
问题:

如何在加载时配置SPA?

苍宝
2023-03-14

我们正在使用Webpack、React和Node。但是我认为这个问题比具体的技术更通用。在构建开发模式或生产模式时,我可以使用Webpack配置SPA(例如,使用DefinePlugin)。

如何在生产模式(在构建时配置)下为不同的部署环境(例如,分段与生产)配置SPA?例如,这些不同的部署将与不同的后端服务器API通信。

当SPA被浏览器获取时,它必须从服务器上获取一些本地上下文。或者,我们必须在SPA可以安全获取的每台服务器上都有一个自定义配置文件?

我们在服务器上使用NodeJS,这个SPA最终将作为一个同构的应用程序运行,因此这可能会有所帮助。我们正在Docker映像中部署这些应用程序,并且在部署时很容易配置它们的环境。

感谢您的任何建议。

共有3个答案

西门凯康
2023-03-14

我们现在正与同样的概念作斗争。我发现在运行时配置的最佳方法是使用env变量(可以在构建时设置,但也可以在运行时使用docker本机或任何其他编排工具(如ECS或GKE)重写)。

我们以前使用的另一种更脏的方法是通过图像的CMD指令执行运行时调整。这并不是真正的建议,因为它使您的图像易变,并且容易出错。然而,它确实有效,如果使用得当,可以实现你想要的。一个简单的例子是替换当前的CMD,它可能看起来有点像这个CMD节点应用程序。js与下面的内容类似-bash-c“wget prod.conf

汤兴生
2023-03-14

一种方法是在部署时重写HTML文件的内容。

您可以在超文本标记语言中使用占位符字符串,例如"$MY_CONFIG_HERE$"。

这可以在页面上的某个内联javascript标记中,该标记将在窗口上设置一个javascript对象。

然后让您的部署过程(连续部署)用包含所需数据的实际javascript对象替换该字符串。

然后,数据将在窗口中提供给在单页应用程序中运行的javascript。

闾丘冠玉
2023-03-14

我找到了一种做需要做的事情的方法。它是通过在提供SPA时设置一个带有配置详细信息的cookie。然后,SPA可以读取该cookie以获取配置(并删除cookie,因为不再需要它)。

有一个名为ClientConfig的NPM模块,它将帮助完成我所描述的工作。它的工作原理非常类似于一个名为GetConfig的NPM模块,该模块有助于服务器端的配置。客户端配置:https://github.com/henrikjoreteg/clientconfig

如何使用ClientConfig和GetConfig(分别和一起)在这里描述:http://read.humanjavascript.com/ch12-settings-and-configs.html

对我来说,这似乎是一个解决方案,尽管我想知道是否存在任何潜在的安全问题(总是比第一次出现的更复杂),以及是否有更简单的方法。如有任何意见或进一步的解决方案,将不胜感激。

 类似资料:
  • 我正在尝试对我的spring boot应用程序运行selenium测试。我想用我的应用程序的属性启动应用程序。yml和应用测试。yml定义。然而,默认情况下,这不会发生。 我试着按照Dave Syer的建议去做,并实现了一个Application ationContext初始器,它使用YamlProperty tySourceLoader读取application.yml和application-

  • void config_load(string file [, string section]) This loads config file data and assigns it to the template. This works identical to the template config_load function. 加载配置文件,并将其中的数据传送到模板中,它的功能和config

  • 在我的spring boot 2应用程序中,我有一个应用程序。yml as, 我的配置类是, 代码在本地计算机中运行良好,所有值都按预期加载。但cloud env Consor将yml文件序列化为环境变量,因此我的配置表示为, 这是一个字符串。我不知道Consor以何种格式表示/序列化值。现在我的DefaultRateLimitsConfig无法加载,因为它会出错, 如何以更干净的方式在两个环境中

  • 我正在将一些web应用程序从log4j1.12迁移到Log4j2。由于公司政策,我们的log4j。xml文件位置在应用服务器中配置为URL,应用程序必须使用JNDI获取它们。我们实现了一个,它允许我们以这种方式初始化log4j基础结构: 但是,随着log4j2api的更改,这将无法再使用。Log4j2提供了lo4j2web。jar模块,它使用初始化库。这将调用,负责获取配置文件的URI。 有什么方

  • 我目前正在学习如何使用Spring Boot。到目前为止,我从未使用过像Spring这样的框架,而是直接使用文件(FileInputStream等) 我还发现了doc:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html,但我现在知道如何将它应用到我的项目中

  • 我尝试添加到自定义配置类中,但仍然看到相同的问题。

  • 我正在尝试在我的多租户应用程序中实现假客户概念。我有两个微服务。在其中一个微服务中,我编写了从数据库获取数据的API。我需要在我的其他微服务中使用这些数据。为此,我使用了假客户概念。我需要第二个微服务加载期间的数据。但这并没有发生。我有以下错误 这是我的基于数据源的MultitenantConnectionProviderImpl。类,我在其中编写了伪客户机逻辑 这是一个虚拟客户端。我将第二个微服