我如何从数据文件夹中要求脚本

时间:2014-11-01 11:10:41

标签: firefox firefox-addon firefox-addon-sdk

我想从页面加载js文件,并在后台页面中要求它。

我尝试在lib和数据文件夹中使用两个副本,但是有查看问题。

我可以从页面中的lib文件夹加载它,但对其他浏览器来说很不舒服。

我可以通过loader加载它:

mono = require('toolkit/loader').main(require('toolkit/loader').Loader({
    paths: {
        'sdk/': 'resource://gre/modules/commonjs/sdk/',
        'data/': self.data.url('js/'),
        '': 'resource:///modules/'
    },
    name: self.name,
    prefixURI: 'resource://'+self.id.slice(1, -1)+'/'
}), "data/mono");

但有问题:

require('net/xhr').XMLHttpRequest

我尝试使用它的选项,但也遇到同样的问题。

require('@loader/options')

现在我使用它,但都需要通过参数发送的对象。

有想法吗?

UPD 现在我使用这个代码,它允许需要模块,而不是像我想的那样将它存储在内存中。但是需要先声明所有模块。

mono = require('toolkit/loader').main(require('toolkit/loader').Loader({
    paths: {
        'data/': self.data.url('js/')
    },
    name: self.name,
    prefixURI: 'resource://'+self.id.slice(1, -1)+'/',
    globals: {
        console: console,
        _require: function(path) {
            switch (path) {
                case 'sdk/timers':
                    return require('sdk/timers');
                case 'sdk/simple-storage':
                    return require('sdk/simple-storage');
                case 'sdk/window/utils':
                    return require('sdk/window/utils');
                case 'sdk/self':
                    return require('sdk/self');
                default:
                    console.log('Module not found!', path);
            }
        }
    }
}), "data/mono");

1 个答案:

答案 0 :(得分:0)

我认为erik vold的这篇博文解决了您所面临的问题:http://work.erikvold.com/jetpack/2014/09/23/jp-pro-tip-reusing-js.html