Как организовать большое количество зависимостей в RequireJS?

Использую RequireJS и с толкнулся с такой вот проблемой:
define([ "require", "jquery", "blade/object", "blade/fn", "rdapi",
         "oauth", "blade/jig", "blade/url", "dispatch", "accounts",
         "storage", "services", "widgets/AccountPanel", "widgets/TabButton",
         "widgets/AddAccount", "less", "osTheme", "jquery-ui-1.8.7.min",
         "jquery.textOverflow"],
function (require,   $,        object,         fn,         rdapi,
          oauth,   jig,         url,         dispatch,   accounts,
          storage,   services,   AccountPanel,           TabButton,
          AddAccount,           less,   osTheme) {

});

Очень много зависимостей.

Что делать что бы избежать этого? В идеале хотелось бы начале файла просто написать:
Module = require('module')
User = require('user')
...
  • Вопрос задан
  • 6026 просмотров
Пригласить эксперта
Ответы на вопрос 3
blo
@blo
инженер-программист
Ваш пример из документации, там же описано как сделать его чуть более читабельным

define(['require', 'dependency1', 'dependency2'], function (require) {
    var dependency1 = require('dependency1'),
        dependency2 = require('dependency2');

    return function () {};
});
Ответ написан
Faustlogger
@Faustlogger
Front-end developer
Лично я описываю зависимости для модулей в конфиге на точке входа requirejs:
index.js
require.config({
// Описываем пути
    baseUrl: '../js'
    paths: {
        jquery: 'libs/jquery',
        someModule: 'module'
    },
// Описываем зависимости для модулей
    shim: {
        someModule: ['jquery']
    }
});

В итоге, в подключаемом модуле мне не нужно указывать зависимости
define(function(){
    ...
    obj.someFunc = function(){
        $("#someButton").click(...)
    }
    return obj;
});


Проверено лично. Работает. Вот ссылка на документацию
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
define(
    'blade',
    ['blade/object', 'blade/fn', 'blade/jig', 'blade/url'],
    function(object, fn, jig, url) {
        return {
            object: object,
            fn: fn,
            jig: jig,
            url: url
        } 
    }
)

// …

define(
    ['blade', 'require', 'jquery'],
    function(blade, require, jquery) {
        // …
    }

)


То есть собираем в пакеты по неймспейсам и пакеты уже подключаем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы