gpt4 book ai didi

javascript - 单页应用程序外部配置(不在 Node JS 上)

转载 作者:行者123 更新时间:2023-11-28 01:14:30 25 4
gpt4 key购买 nike

我正在寻找引用或答案,以解决我认为目前正在实现 JavaScript MVC 框架(例如 Angular、Ember 或 Backbone)的人们会遇到的一个非常常见的问题。

我正在寻找一种方法或通用模式来外部化可在 JS 领域访问的应用程序属性。允许 javascript 加载应用程序根外部的服务器端属性(例如端点、盐等)的东西。我遇到的问题是浏览器通常无法访问文件系统,因为这是一个安全问题。

因此,如果存在可部署工件,那么加载可在可部署工件之外配置的属性的推荐方法是什么?

如果没有,当前正在使用或在实践中被认为是解决此类问题的推荐方法是什么?

我正在寻找一个交叉兼容的答案(Google Chrome 非常棒,我同意)。

最佳答案

数据驱动的本地存储模式

刚刚想出来的!!

这个想法是根据命名约定配置加载配置属性,其中所有属性均源自目标主机名。也就是说,主机名将派生一个受信任的端点,并且该端点将向应用程序加载相应的属性。这些应用程序属性将包含运行时相关的信息。运行时信息将提供给集成部分,然后集成部分通过引导启动时的属性迭代进行通信。

为了简单起见,我们在这里只使用两个属性:

此实现是 Ember JS 特定的,但总体思路应该是可移植的

我目前正在将这个问题的范围缩小到一个特定的技术 Angular ,即 Ember JS,它具有以下对我来说有效的补救措施,希望它能帮助你们中的任何人处理同样的问题。

启动时的Ember.Application.initializer实现

initialize: function (container, application) { 
var origin = window.location.origin;
var host = window.location.hostname;
var port = window.location.port;
var configurationEndPoint = '';


//local mode
if(host === 'localhost'){

//standalone using api stub on NODEJS
if(port === '8000'){
configurationEndPoint = '/api/local';
}//standalone UI app integrating with back end application on same machine, different port
else{
configurationEndPoint = '/services/env';
}
origin += configurationEndPoint;
}else{
throw Error('Unsupported Environment!!');
}

//load the configuration from a trusted resource and store it in local storage on start up
$.get(origin,
function( data ) {
//load all configurations as key value pairs and store in localStorage for access.
configuration = data.configuration;
for(var config in configuration){
debugger;
var objectProperty = localStorage + '.' + config.toString()
objectProperty = configuration[config];
}
}
);

}

可配置适配器

export default DS.RESTAdapter.extend({
host: localStorage.host,
namespace: localStorage.namespace

});

关于javascript - 单页应用程序外部配置(不在 Node JS 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24001749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com