【问题标题】:Declare local functions with require.js使用 require.js 声明本地函数
【发布时间】:2014-02-25 12:10:03
【问题描述】:

我有下一个单身人士:

(
    function () 
    {
        require
        (
            ['module'], 
            function () 
            {
                module();
            }
        );
    }
)();

module.js:

function module () 
{
    alert('yay');
}

但是,当我转到控制台时,我看到该模块是在全局范围内定义的,这是我不想要的,因为我希望我的所有依赖项都在我的单例范围内。

我知道 require.js 的目的之一是避免全局污染,那么,我如何以我想要的方式保护我的依赖项不受全局范围的影响?

【问题讨论】:

标签: javascript requirejs scope global


【解决方案1】:

您没有以正确的方式使用require.js

您应该使用define 函数来定义一个模块。 在文件 module.js 中:

define (function() {
    return function(){
        alert('yay');
    }
});

模块值是您从外部函数返回的值。 然后,要 require 模块,请使用以下代码:

require(['module'], function (module) {
    module();
});

这样,全局就不会被污染了。你也可以这样定义一个需要其他模块的模块:

define (["aModule","anotherModule"],function(aModule,anotherModule) {
    return function(){
        alert(anotherModule.someThing + aModule.aProperty);
    }
});

此外,您可以在同一个文件中定义多个模块。你只需要命名它们:

define("module1",["aModule","anotherModule"],function(aModule,anotherModule) {
    return function(){
        //a module could be a function, an object or whatever you want
        return "this module value is a string";
    }
});

define("module2",["module1","anotherModule"],function(module1,anotherModule) {
    return function(){
        alert(module1 + anotherModule.aProperty);
    }
});

【讨论】:

  • 我不知道,我试图弄清楚 require.js 是如何工作的,这很令人困惑,但你的答案是正确的,我会在几分钟内接受你,谢谢! :)
猜你喜欢
  • 2022-01-17
  • 1970-01-01
  • 2011-07-22
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多