Javascript 在客户端和后端之间共享设置/配置
我有一个应用程序使用node.js backend和require.js/backbone frontend。 我的后端有一个配置/设置系统,根据环境(开发、生产、测试版)可以做不同的事情。我还想将一些变量传播到客户端,并让它们影响一些模板呈现(e.x更改页面的标题或URL) 实现这一目标的最佳方式是什么 我想出了一个方法来实现它,它似乎是可行的,但我不认为这是最明智的做法,我也不知道如何让它与requirejs optimizer一起工作。 我所做的是在后端公开/api/config方法(通过GET)和客户端 我有以下模块config.js:Javascript 在客户端和后端之间共享设置/配置,javascript,node.js,backbone.js,express,requirejs,Javascript,Node.js,Backbone.js,Express,Requirejs,我有一个应用程序使用node.js backend和require.js/backbone frontend。 我的后端有一个配置/设置系统,根据环境(开发、生产、测试版)可以做不同的事情。我还想将一些变量传播到客户端,并让它们影响一些模板呈现(e.x更改页面的标题或URL) 实现这一目标的最佳方式是什么 我想出了一个方法来实现它,它似乎是可行的,但我不认为这是最明智的做法,我也不知道如何让它与requirejs optimizer一起工作。 我所做的是在后端公开/api/config方法(通过
// This module loads an environment config
// from the server through an API
define(function(require) {
var cfg = require('text!/api/config');
return $.parseJSON(cfg);
});
任何需要配置的页面/模块只需执行以下操作:
var cfg = require('config');
正如我所说,我对这种方法有问题,我无法编译/优化我的客户机代码
使用requirejs optimizer,因为在优化过程中脱机状态下不存在/api/config文件。我确信我的方法是个坏主意还有很多其他原因。我做了以下工作(注意,这是Jade,我从来没有使用过require.js或backbone,但是只要您可以将express中的变量传递到模板语言中,您就应该能够将JSON放置在您想要的任何元素的data-*
属性中。)
我执行以下操作(请注意,这是Jade,我从未使用过require.js或backbone,但是只要您可以将变量从express传递到模板语言中,就应该能够将JSON放置在所需元素的data-*
属性中。)
如果使用模块绑定器(如)绑定JavaScript文件以在浏览器中使用,则可以对在浏览器中运行的客户端重用Node.js模块。换句话说,将您的设置或配置放在Node.js模块中,并在后端和客户端之间共享它们 例如,您在config.js中有以下设置:
// This module loads an environment config
// from the server through an API
define(function(require) {
var cfg = require('text!/api/config');
return $.parseJSON(cfg);
});
Normal Node.js模块:config.js
使用Node.js后端中的模块
在客户端共享它
如果使用模块绑定器(如)绑定JavaScript文件以在浏览器中使用,则可以对在浏览器中运行的客户端重用Node.js模块。换句话说,将您的设置或配置放在Node.js模块中,并在后端和客户端之间共享它们 例如,您在config.js中有以下设置:
// This module loads an environment config
// from the server through an API
define(function(require) {
var cfg = require('text!/api/config');
return $.parseJSON(cfg);
});
Normal Node.js模块:config.js
使用Node.js后端中的模块
在客户端共享它
您正在服务器端进行渲染吗?在我的例子中,它是一个单页webapp,所有视图都使用静态视图模板呈现在客户端上。哇,疯了!我从没试过。如何告诉客户显示什么?当您从后端发送响应时,无论环境如何,您是否总是发送相同的静态脚本?您可以修改响应以包含配置数据吗?另外,使用javascript生成页面是否会对SEO结果造成严重破坏?您正在服务器端进行渲染?在我的例子中,它是一个单页webapp,所有视图都使用静态视图模板呈现在客户端上。哇,疯了!我从没试过。如何告诉客户显示什么?当您从后端发送响应时,无论环境如何,您是否总是发送相同的静态脚本?您可以修改响应以包含配置数据吗?另外,使用javascript生成页面不会对SEO结果造成严重破坏吗?您找到了任何好的解决方案吗?我正在尝试做类似的事情。你有没有找到解决这个问题的好办法?我正在尝试做类似的事情。
const config = require('path-to-config.js')
console.log('My third party URL: ', config.MY_THIRD_PARTY_URL)
import config from 'path-to-config.js'
console.log('My third party URL: ', config.MY_THIRD_PARTY_URL)