使用AMD Requirejs + Backbonejs时处理全局变量

Handling global varibales when using AMD Requirejs + Backbonejs

本文关键字:处理 全局变量 Backbonejs AMD Requirejs 使用      更新时间:2023-09-26

在应用程序中,我需要有一些配置的变量是全局的,我跨模块使用它们。我的配置文件可能看起来像。

config.js :

var config = {
    baseServiceUrl: 'http://localhost/baseServiceUrl',
    baseUrl: 'http://localhost/baseUrl',
    mapping_764: {
            location:'Austin',
            emailAddress:'austin@customerservice.com', 
            registerLink:'https://www.customercare.com/en/austin/registration/',
            fbLikeLink:'https://www.facebook.com/customercare.austin',
            microSite: 'http://austin.customercare.com/'
        }
}

我只是加载这个文件使用脚本标签随着需求。
<script src="js/app/config.js"></script>
<script data-main="js/main" src="js/libs/require/require.js"></script>

现在,全局变量(对象)config可以在所有模块中使用,也可以从浏览器控制台使用。所以我在想,如果有人改变了这个配置属性,应用程序肯定会崩溃,因为这个配置变量用于服务调用和许多其他事情。

有什么方法可以处理这类问题吗?

以下几件事可能会对您有所帮助:

首先,对于纯"站点配置"(例如REST url)信息,RequireJS有一个配置API。来自文档:

requirejs.config({
    config: {
        'bar': {
            size: 'large'
        },
        'baz': {
            color: 'blue'
        }
    }
});
//bar.js, which uses simplified CJS wrapping:
//http://requirejs.org/docs/whyamd.html#sugar
define(function (require, exports, module) {
    //Will be the value 'large'
    var size = module.config().size;
});

如果你不想使用配置API,还有一个问题,它解决了传递全局变量的一般情况。

第二,对于将数据引导到Backbone模型中,在这个问题上有广泛的讨论