Создание нового приложения Ext JS 4.1.1 на основе раздела файловой структуры в Руководство по архитектуре приложения MVC В итоге я получил следующую структуру:
/wwwroot
/myapplication
/app
/controller
/view
app.js
/extjs-4.1.1
Файл app.js содержит:
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
appFolder: '/myapplication/app',
autoCreateViewport: true,
name: 'MyApplication',
controllers: [
...
]
});
Все в порядке. Затем я включаю файл app.js для вывода в мое серверное приложение MVC (не путать со структурой клиентского Ext JS MVC). Используемый язык и структура серверного приложения не имеют значения для этого вопроса, важен результат вывода. В разработке URL-адрес приложения:
http://servername/someidentifier1/someidentifier2
Как и во многих приложениях, mod_rewrite используется для придания значения идентификаторам и сопоставления URL-адреса с кодом на стороне сервера. Эти идентификаторы не сопоставляются с "физическими" каталогами. Вывод этого URL:
<!DOCTYPE html>
<html>
<head>
<title>MyApplication</title>
<link href="/extjs-4.1.1/resources/css/ext-all-debug.css" media="screen" rel="stylesheet" type="text/css" >
<script type="text/javascript" src="/extjs-4.1.1/ext-debug.js"></script>
<script type="text/javascript" src="/myapplication/app.js"></script>
</head>
<body>
</body>
</html>
Ext JS находится не в рекомендуемом по умолчанию расположении, т. е. в /wwwroot/myapplication/extjs-4.1.1, а на один уровень выше, поскольку он используется несколькими приложениями. Если вы посмотрите на app.js выше, вы также заметите параметр appFolder, который необходимо установить, чтобы это работало с «несуществующим» URL-адресом.
Все это прекрасно работает при разработке, но следующим шагом будет создание «сборки» кода с Инструменты Sencha SDK (вопрос основан на версии 2.0.0 Beta 3 для Windows). Вот где это идет не так. Я делаю следующие шаги:
- В командной строке я захожу в каталог /wwwroot/myapplication.
- Я выполняю
sencha create jsb -a http://servername/someidentifier1/someidentifier2 -p myapplication.jsb3
для создания файла jsb3. - Я выполняю
sencha build -p myapplication.jsb3 -d .
Сборка не работает. В этом случае, потому что он пытается найти пользовательский код, например. контроллеры по пути c:\...\myapplication\myapplication\app\controller: текущий путь + параметр appFolder. Вы могли бы предположить, что лучше запустить его на один уровень выше, но тогда он не может найти (общий) каталог extjs-4.1.1.
Я предполагаю, что время сделает структуру Ext JS MVC и инструменты SDK более гибкими, и не рекомендуется немного отклоняться от структуры по умолчанию. Все приемлемо, но с другой стороны: интеграция Ext JS 4.x (Ext JS в стиле MVC) с перезаписью URL (mod_rewrite) тоже должна быть очень распространенной практикой?
Любая предложенная рабочая установка/структура будет высоко оценена.
Цели должны быть:
- Нет ручного редактирования файла jsb3.
- Сохранение каталога extjs-4.1.1 на верхнем уровне для совместного использования приложениями.
- Отсутствие файла app.html, поскольку он никогда не используется в серверных приложениях MVC и в противном случае требует обновления вручную.
- Приятным дополнением было бы иметь содержимое app.js внутри сгенерированного на стороне сервера HTML, поскольку тогда он сможет получать динамически генерируемые параметры.
sencha create jsb
иsencha build
. Как бы странно не звучал мой первоначальный вопрос, если вы не привыкли к перезаписи URL, я более чем убежден, что это должно быть распространенной (но довольно новой) проблемой. - person smhg   schedule 03.08.2012