2012-04-16 3 views
1

Я разрабатываю веб-приложение с require.js.
Поскольку все это растет и растет, некоторые списки зависимостей некоторых модулей amd растут также и становятся очень сложными (напоминает мне немного большого количества тегов скриптов на странице index.html, прежде чем я начал использовать require.js).
Так что я начал ставить основные модули - те мне всегда нужны - в новом модуле драм:requirejs: сокращать список зависимостей

define(["config", "eventObj", "registry", "log", "userObj"], 
    function (conf, event, reg, log, user) { 
    var core = { 
     conf: conf, 
     event: event, 
     reg: reg, 
     log: log, 
     user: user 
    }; 
    return core; 
}); 

Но так как это изменение, странные вещи происходят, например, в свое время это «ядро» есть, но позже, в другом модуле, где он также упоминается как зависимость, он не определен.
Есть ли лучший способ сократить список зависимостей, сгруппировать различные модули без необходимости помещать эти вещи в один файл?

+0

Это может быть неопределенным, потому что вы ссылаетесь на него перед его загрузкой? Просто убедитесь, что это определено первым, а затем вы его вызываете. Это должно решить вашу проблему. –

ответ

1

Мы использовали аналогичный подход в BoilerplateJS и это выглядит намного чище, если вы беспокоитесь о читаемости:

define(function (require) { 

    return { 
     conf : require("config"), 
     event : require("eventObj"), 
     reg : require("registry"), 
     log: require("log"), 
     user : require ("userObj") 
    }; 
}); 

кодекса, принятой от https://github.com/ectechno/boilerplatejs/blob/master/src/core/_boiler_.js

Но я не понимаю, почему ваша установка не работает должным образом. Вы уверены, что указываете на правильные пути?

0

Когда вы объявляете пути для зависимостей как этот

define(["config", "eventObj", "registry", "log", "userObj"] 

Это поиск для зависимостей в директории, в которой называется этот модуль. Таким образом, чтобы избежать такого рода сценариев, есть чистый способ определить пути в Require.js

require.config({ 
    baseUrl: "/another/path", 
    paths: { 
     "some": "some/v1.0" 
    } 
    }); 

Теперь вы можете использовать «некоторые» в любом месте, как зависимость. Это нормально для добавления зависимостей для пользовательских модулей. Но при определении основного модуля, о котором говорилось выше, Дженит более чист. Как я вижу, это сокращает список зависимостей.

Смежные вопросы