如何将Node.js环境变量注入客户端JavaScript?
在我们的项目中,我们在Node.js上托管了客户端JavaScript 此脚本使用来自服务器的另一个静态内容(类似于如何将Node.js环境变量注入客户端JavaScript?,javascript,node.js,Javascript,Node.js,在我们的项目中,我们在Node.js上托管了客户端JavaScript 此脚本使用来自服务器的另一个静态内容(类似于http://host:port/static/content)。我们不能使用本地路径,因为这个JavaScript可以被注入到不同的站点 我们的开发、测试和生产环境具有不同的主机和端口设置。 因此,我们必须针对不同的环境手动硬编码这些属性 解决此问题的最简单方法是在服务器端手动将JavaScript解析为字符串,同时为静态文件准备响应 我认为这不是一个好主意 Node.js中是否
http://host:port/static/content
)。我们不能使用本地路径,因为这个JavaScript可以被注入到不同的站点
我们的开发、测试和生产环境具有不同的主机和端口设置。
因此,我们必须针对不同的环境手动硬编码这些属性
解决此问题的最简单方法是在服务器端手动将JavaScript解析为字符串,同时为静态文件准备响应
我认为这不是一个好主意
Node.js中是否有针对这种情况的内置机制
顺便说一句,我的英语很抱歉。我在这里假设客户端代码是从一些动态生成的HTML调用的 如果“配置”数据量相当小,您可以通过生成的HTML中的
数据-*
属性传递它,例如
,或者,如果它更大,则通过内联
元素传递
这里的关键是避免动态生成仅用于表示数据的代码(40年前,Kernighan和Plauger在《编程风格元素》中写道,他们想知道在一个典型的计算机中心中,有多少日常活动仅仅是通过编译器输入参数)。使用解释语言,代码/数据的区别很容易变得模糊,但在您的头脑中,将它们分开是值得的
另外,你的英语比我见过的大多数问题都要好。我在这里假设客户端代码是从一些动态生成的HTML调用的 如果“配置”数据量相当小,您可以通过生成的HTML中的
数据-*
属性传递它,例如
,或者,如果它更大,则通过内联
元素传递
这里的关键是避免动态生成仅用于表示数据的代码(40年前,Kernighan和Plauger在《编程风格元素》中写道,他们想知道在一个典型的计算机中心中,有多少日常活动仅仅是通过编译器输入参数)。使用解释语言,代码/数据的区别很容易变得模糊,但在您的头脑中,将它们分开是值得的
另外,你的英语比我见过的大多数问题都好。为什么不直接使用PHP,以便客户端页面加载正确的设置?我们在Node.js上有一些后端功能,a我们不想在一个项目中使用两个不同的服务器。为什么不直接使用PHP以便客户端页面加载正确的设置?我们在Node.js上有一些后端功能,a我们不想在一个项目中使用两个不同的服务器。感谢您的回答,但是这个脚本可以被注入到不同的第三方站点中,我们无法管理/更改它们的html代码。在大多数情况下,客户端只有一行代码:您是否能够将
data-*
属性粘贴到单个脚本行上,并将客户端代码默认为生产服务器的设置(如果该属性不存在)?我明白您的意思,我想我们可以对您的变体进行一些修改。谢谢。谢谢你的回答,但是这个脚本可以被注入不同的第三方网站,我们不能管理/更改它们的html代码。在大多数情况下,客户端只有一行代码:您是否能够将data-*
属性粘贴到单个脚本行上,并将客户端代码默认为生产服务器的设置(如果该属性不存在)?我明白您的意思,我想我们可以对您的变体进行一些修改。非常感谢。