Есть ли более краткий способ включения зависимостей в 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 */
});