我有一个使用 node.js 后端和 require.js/backbone 前端的应用程序。 我的后端有一个配置/设置系统,根据环境(开发、生产、测试版)可以执行不同的操作。我还想将一些变量传播到客户端,并让它们影响某些模板渲染(例如更改页面的标题或 URL)。
实现这一目标的最佳方法是什么?
我想出了一种方法来做到这一点,它似乎有效,但我不认为这是最明智的做法,而且我无论如何也不知道如何使其与 requirejs 优化器一起工作。 我所做的是在后端公开/api/config 方法(通过 GET)并在客户端公开 我有以下模块 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);
});
任何需要配置的页面/模块都可以:
var cfg = require('config');
正如我所说,我对这种方法有疑问,我无法编译/优化我的客户端代码 使用 requirejs 优化器,因为/api/config 文件在优化过程中离线不存在。我确信还有很多其他原因导致我的方法不是一个好主意。
最佳答案
如果您使用模块 bundler ,例如 webpack 要捆绑 JavaScript 文件以在浏览器中使用,您可以为在浏览器中运行的客户端重用 Node.js 模块。换句话说,将您的设置或配置放在 Node.js 模块中,并在后端和客户端之间共享它们。
例如,您在 config.js 中有以下设置:
普通 Node.js 模块:config.js
const MY_THIRD_PARTY_URL = 'https://a.third.party.url'
module.exports = { MY_THIRD_PARTY_URL }
在 Node.js 后端使用该模块
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)
关于javascript - 在客户端和后端之间共享设置/配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17864240/