Работа над проектом, который использует RequireJS, и загружает dojo/dijit/dojox/dgrid, используя Require, а не загрузчик Dojo.Можно ли загрузить пользовательскую сборку dojo с помощью RequireJS?
Я пытаюсь оптимизировать javascript для уменьшения http-звонков, а оптимизатор RequireJS, похоже, не в состоянии оптимизировать модули Dojo.
Возможно ли создать пользовательскую сборку Dojo, а затем загрузить ее с помощью RequireJS? Я пробовал несколько сборок и еще не смог заставить его работать. Последнее Dojo построить конфигурацию я попробовал (который бежал успешно) был:
var profile = {
basePath: '../src/',
action: 'release',
cssOptimize: 'comments',
mini: true,
optimize: 'closure',
layerOptimize: 'closure',
packages: [
'dgrid',
'dijit',
'dojo',
'dojox',
'put-selector',
'xstyle'
],
stripConsole: 'all',
selectorEngine: 'lite',
layers: {
'dojo/dojo': {
boot: false,
customBase: true,
include: [
'dojo/_base/array',
'dojo/_base/declare',
'dojo/_base/fx',
'dojo/_base/lang',
'dojo/_base/window',
'dojo/_base/xhr',
'dojo/aspect',
'dojo/cache',
'dojo/Deferred',
//'dojo/dojo',
'dojo/dom-class',
'dojo/dom-construct',
'dojo/dom-geometry',
'dojo/dom-style',
'dojo/dom',
'dojo/fx',
'dojo/has',
'dojo/keys',
'dojo/mouse',
'dojo/on',
'dojo/promise/all',
'dojo/query',
'dojo/request/registry',
'dojo/request/util',
'dojo/sniff',
'dojo/string',
'dojo/store/Cache',
'dojo/store/JsonRest',
'dojo/store/Memory',
'dojo/store/Observable',
'dojo/store/util/QueryResults',
'dojo/topic',
'dojo/when',
'dojox/uuid/generateRandomUuid',
'put-selector/put',
]
},
'dijit/dijit': {
include: [
'dijit/_TemplatedMixin',
'dijit/_Widget',
'dijit/dijit',
'dijit/form/CheckBox',
//'dijit/form/DateTextBox', // For some reason including this module causes the Dojo build to fail?
//'dijit/form/FilteringSelect', // For some reason including this module causes the Dojo build to fail?
//'dijit/form/MappedTextBox', // For some reason including this module causes the Dojo build to fail?
'dijit/form/TextBox',
'dijit/Menu',
'dijit/MenuItem',
'dijit/Tooltip',
]
},
'dgrid/dgrid': {
include: [
'dgrid/CellSelection', // Set the cell selection model
'dgrid/ColumnSet', //Adds frozen column capabilities.
'dgrid/Editor',
//'dgrid/extensions/ColumnHider', // For some reason including this module causes the Dojo build to fail?
'dgrid/extensions/ColumnReorder',
'dgrid/extensions/ColumnResizer',
'dgrid/extensions/CompoundColumns',
'dgrid/Grid',
'dgrid/Keyboard',
'dgrid/OnDemandGrid',
'dgrid/Tree',
'dgrid/util/misc',
'dgrid/util/touch',
]
},
},
staticHasFeatures: {
'config-deferredInstrumentation': 0,
'config-dojo-loader-catches': 0,
'config-tlmSiblingOfDojo': 0,
'dojo-amd-factory-scan': 0,
'dojo-combo-api': 0,
'dojo-config-api': 1,
'dojo-config-require': 0,
'dojo-debug-messages': 0,
'dojo-dom-ready-api': 1,
'dojo-firebug': 0,
'dojo-guarantee-console': 1,
'dojo-has-api': 1,
'dojo-inject-api': 1,
'dojo-loader': 0,
'dojo-log-api': 0,
'dojo-modulePaths': 0,
'dojo-moduleUrl': 0,
'dojo-publish-privates': 0,
'dojo-requirejs-api': 0,
'dojo-sniff': 1,
'dojo-sync-loader': 0,
'dojo-test-sniff': 0,
'dojo-timeout-api': 0,
'dojo-trace-api': 0,
'dojo-undef-api': 0,
'dojo-v1x-i18n-Api': 1,
'dom': 1,
'host-browser': 1,
'extend-dojo': 1
},
}
Однако, когда я пытаюсь загрузить оптимизированные файлы слоев в требуют, он возвращает это довольно загадочное сообщение об ошибке и приложение Безразлично 't load:
Не удалось загрузить модуль корня. Подробности: has.add не является функцией
Кроме того, некоторые модули, которые отмечены комментариями выше, приведут к сбою Dojo, если я их включу. Есть идеи?
Можно ли сделать эту работу? В настоящее время мы привязаны к использованию dgrid, поэтому единственный вариант, если это не сработает, - это избавиться от RequireJS.
Заранее благодарен!
Спасибо за ваш ответ @mshindal. Можно ли каким-либо образом оптимизировать исходную версию Dojo, чтобы ее можно было загружать как один файл? –