Есть ли более краткий способ включения зависимостей в RequireJS?

Предположим, у меня есть модуль, который запускается следующим образом:

define(['jquery', 'actions', 'util', 'text!../templates/dialog.html!strip', 'text!../templates/requestRow.html!strip', 'text!../templates/respondForm.html!strip'], function($, actions, util, tDialog, tRequestRow, tRespondForm) {

Этот модуль содержит большую часть кода для записи в мой клиентский интерфейс. Он также загружает пару других модулей, которые я написал, а также 3 HTML-шаблона с помощью плагина text.js. Мне интересно, есть ли более краткий способ сделать это? По мере роста приложения у меня могут появиться дополнительные шаблоны для загрузки или модули, и кажется, что мое определение может стать немного уродливым. Должен ли я просто добавить пути к шаблонам для require.config в моем main.js следующим образом:

require.config({
baseUrl: '/webrequests/resources/scripts/',
paths: {
    'modernizr': '../js/vendor/modernizr-2.6.2-respond-1.1.0.min',
    'bootstrap' : '../js/vendor/bootstrap.min',
    'dialog' : 'text!../templates/dialog.html!strip',
    'requestRow' : 'test!../templates/requestRow.html!strip',
    'respondForm' : 'text!../templates/respondForm.html!strip'
}});

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

Заранее спасибо.

1 ответ

Решение

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

// generalTemplates.js
define([
    'text!../templates/dialog.html!strip', 
    'text!../templates/requestRow.html!strip', 
    'text!../templates/respondForm.html!strip'
], function (tDialog, tRequestRow, tRespondForm) {
    return {
        dialog: tDialog,
        requestRow: tRequestRow,
        respondForm: tRespondForm
    };
});

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

define([
    'jquery', 
    'actions', 
    'util', 
    'generalTemplates'
], function($, actions, util, templates) {
    var tDialog = templates.dialog,
        tRequestRow = templates.requestRow,
        tRespondForm = templates.respondForm;

    /* You can do stuff with the templates here */
});
Другие вопросы по тегам