javascript - 在客户端和后端之间共享设置/配置

标签 javascript node.js backbone.js express requirejs

我有一个使用 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/

相关文章:

javascript - PSQL : error: relation does not exist

javascript - 有没有关于backbone.js的明确指南?

backbone.js - Backbone 将模型传递给路由器

jQuery ui slider 动态内联样式进度

javascript - 如何在 sequelize findAll() 中获取简单数组?

javascript - JavaScript 中的 {...code...} 是什么?

Javascript随机颜色生成器,但偏爱浓烈的颜色

javascript - 使用 JavaScript 创建 MDL 复选框

node.js - Meteor服务器端远程调试

node.js - 由于 mongodb 批量插入非常大,JavaScript 堆内存不足