RequireJS和功能

时间:2013-03-21 12:49:02

标签: javascript requirejs

我的main.js中有一部分包含以下功能:

function isTrue(x){...}
function resizeEditors() {...}
function updateLayout() {...}
function prettify() {...}
function setTheme(theme) {...}
function themedLayout(isDark){...}
function enablePanel(panel) {...}
function disablePanel(panel) {...}
function enableDefaultPanels() {...}
function toggleFullscreen() {...}
function toggleEditorFullscreen(selected) {...}

有没有办法让我的main.js文件的依赖项可以使用这些函数?

例如,在editors.js我正在使用isTrue函数,但editors.js模块当前无法找到isTrue,因为它位于main.js文件< / p>

editors.setShowPrintMargin( isTrue( settings.showPrintMargin ) );

修改

项目如何:

main.js

require(['jquery', 'appSession', 'editors'], function ($, appSession, editors) {
    function isTrue(x){...}
    function resizeEditors() {...}
    function updateLayout() {...}
    function prettify() {...}
    function setTheme(theme) {...}
    function themedLayout(isDark){...}
    function enablePanel(panel) {...}
    function disablePanel(panel) {...}
    function enableDefaultPanels() {...}
    function toggleFullscreen() {...}
    function toggleEditorFullscreen(selected) {...}
});

editors.js

define(['jquery', 'appSession'], function($, appSession){
    ...
    editors.setShowPrintMargin( isTrue( settings.showPrintMargin ) );
    ...
    return editors;
});

2 个答案:

答案 0 :(得分:2)

是的,你可以退货。

define(function () {
    return {
        isTrue: function() {
            // Code
        },
        otherFunction: function() {
            // Code
        }
    }
});

然后使用它们屁股

require(["main"], function(main) {

    main.isTrue(false);

});

您可以在website上了解有关定义模块的更多信息。

答案 1 :(得分:1)

您可以创建一个包含共享/全局功能的模块,并使其成为需要它的模块的依赖项:

globals.js:

define([], function() {
    function isTrue(x){}
    // rest of functions...
    function toggleEditorFullscreen(selected) {}

    return { // return functions... };
});

然后使用它:

require(["globals", "editors"], function(globals, editors) {
    // ...
    editors.setShowPrintMargin(globals.isTrue(settings.showPrintMargin));
    // ...
});

或者如果你想在编辑器模块中使用它,你就是editors.js看起来像:

define(["globals"], function(globals) {
    // ...
    setShowPrintMargin(globals.isTrue(settings.showPrintMargin));
    // ...
});

或者,如果你真的希望它们是全球性的,你应该能够做到:

window.isTrue = function(valueToCheck) {
    // implementation ...
};