reactjs - 在不同域上处理的某些项目的最佳方法,例如 .com 和 .co.uk
问题描述
我有一个创建React
应用程序项目,它将指向两个不同的域:.com
和.co.uk
.
我想做一些本地化,例如如果.co.uk
货币将设置为 pund,电子邮件地址将转到英国邮箱等。
做这个的最好方式是什么?我认为window.location.href
通过在上下文中包装我的路线来传递价值,App.js
但在使用效果方面存在一些问题,并且不确定这是否是最有效的方法。
解决方案
最好的方法是使用环境变量——这也允许对任一版本进行轻松调试。这将要求您为每个网站更新构建项目两次 - 一个版本用于 .co.uk,另一个版本用于 .com。
可以通过.env
文件设置环境变量(取决于您是否希望它是本地的,您可以使用.env.local
,如果您希望它仅用于生产,您可以使用.env.production
,如果您想将生产值保持在本地,您可以使用.env.production.local
)或者通过在构建之前添加环境值,就像这样REACT_APP_COUNTRY=uk yarn build
。
要在您的应用程序中访问变量,您必须确保它们以REACT_APP_
. 您可以在您的项目中访问它们process.env.REACT_APP_COUNTRY
(您不需要导入/安装任何库)。
如果您设置了 CI/CD,这将更容易 - 您只需要创建两个单独的管道来将一个版本部署REACT_APP_COUNTRY=uk
到 .co.uk 站点,一个版本部署REACT_APP_COUNTRY=us
到 .com 站点。
推荐阅读
- python - 使用python反转给定数组并将其添加到给定数组
- java - 如何从 imageView 获取图像并将其存储到 Firebase 存储
- c# - 反序列化复杂 json 时获取 NULL 值
- kubernetes - 避免一个 k8s 主节点/etc 节点成为领导者
- android - 如何从 Uri 修剪视频,包括 `mp4parser` 库可以处理的文件,但使用 Android 的框架?
- sql - SQL - 返回不同的行,其中 1 列值用作不同的标识符
- c++ - 在 VC++ 中对 C++ 字符串对象使用 malloc() 时出现问题,但 new 没有问题
- css - css - flexbox 继承父宽度,尽管 align-items: flex-start, justify-content: flex-start
- outlook - 将 Outlook 365 与 VB6 一起使用
- linux - Vim 的行为在保存文件时有所不同