Организация проекта Flex для использования в команде

Я новичок в Flex / Actionscript / FlashBuilder и не совсем понимаю все концепции организации. Наш командный проект в основном основан на ASP.NET, поэтому в нем не так много кода Flex. На самом деле не было необходимости в организации / повторном использовании общих библиотек. Я добавляю довольно большой компонент, в котором много файлов, и я хотел бы начать упорядочивать его для будущих разработчиков.

На мой взгляд, .NET имеет:

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

В Flex мне нужна иерархия, похожая на этот пример:

  • Car Dealership
    • Business Layer
      • Customer
      • Наемный рабочий
    • UI Components
      • Advertisement
      • Тег окна
      • Машина
    • Infrastructure
      • Payroll
      • База данных
    • SWF Projects
      • InventoryViewer
      • Автомобиль
      • CurrentFlyerViewer

В .NET я мог бы иметь файл проекта InventoryViewer и файл решения, открывающий файл проекта InventoryViewer вместе с файлом проекта Infrastructure.Database, от которого он зависит. В качестве альтернативы у меня может быть файл решения, который просто указывает на InventoryViewer, если я не хочу работать и над проектом базы данных, но зависимость все еще существует. Как это влияет на организацию кода Flex? Мне сложно определить разницу между пакетами, проектами и простой иерархией папок. Заранее спасибо.


person Ocelot20    schedule 03.02.2011    source источник


Ответы (2)


Если вы хотите отразить представление стиля решения VisualStudio, лучший способ добиться этого - создать несколько проектов в рабочей области решения.

Однако прямого эквивалента нет, поэтому не беспокойтесь о попытках увидеть иерархию таким же образом.

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

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

Что касается разницы между пакетами, проектами и простой иерархией папок:

  • Проект: папка с метаданными Eclipse (хранящаяся в папке, а также в папке родительской рабочей области), которая представляет проект, проекты могут иметь несколько целей сборки, но только одна создается за раз с использованием стандартного Выполнить или Отладка, чтобы создать несколько целей в одном проекте, вы должны использовать Ant или какой-либо другой инструмент сборки.

  • Пакеты: более тесно связаны с тем, что .net называет пространствами имен, однако у Flex есть свои собственные концепции пространств имен, в основном относящиеся к XML / MXML, но это довольно большая тема, поэтому я избегаю этого. Пакеты должны относиться к папкам, в которых они хранятся, например

.

package com.example.view {
    class SomeViewClass extends SomeFlexComponent {
    // .... etc
    }
}

Этот класс будет храниться в src/com/example/view/SomeViewClass.as - в отличие от C # имена классов / пакетов и папок должны совпадать, иначе компилятор выдаст ошибку.

Я почти уверен, что не рассмотрел здесь все, поэтому дайте мне знать, если вам понадобятся дополнительные разъяснения по этому поводу.

person ocodo    schedule 03.02.2011
comment
Думаю, я до сих пор не понимаю, каким должен быть проект. Используя мой фальшивый проект выше в качестве примера, могу ли я сделать UIComponents проектом, или каждый из его дочерних элементов будет собственным проектом в папке CarDealerhip / UIComponents? Я предполагаю, что ответ в том, что это зависит, но от чего я до сих пор не уверен. - person Ocelot20; 04.02.2011
comment
Я бы, наверное, сказал, что создаю проект, аналогичный проекту VisualStudio, и создаю рабочее пространство, в котором вы бы создали решение. UIComponents в вашем случае, вероятно, будет проектом библиотеки Flex / SWC, на который вы затем ссылаетесь из другого проекта (файлы SWC, грубо говоря, являются гибким эквивалентом библиотеки DLL) - person ocodo; 04.02.2011

Если вы посетите некоторые сайты фреймворков и просмотрите примеры, вы увидите, как они структурируют свои приложения. Вот исходный код программы, найденной на сайте Mate по фреймворку Flex. Вы можете скачать исходный код и открыть его в FlashBuilder, чтобы лучше понять.

http://mate.asfusion.com/assets/content/examples/intranet/srcview/

Лично, когда я создаю структуру каталогов приложения Flex, я разбиваю ее на «крылья» на основе представлений. Конечно, есть общий каталог для вещей, которые используются совместно. Итак, для вашего примера я бы изложил это так.

Автосалон
* инвентарь
--просмотры (просмотры, относящиеся к инвентарю)
--компоненты (компоненты, относящиеся к инвентарю) --события
--представители
--услуги

Преимущество этого заключается в том, что он обеспечивает модульность, поэтому вам не нужно загружать все приложение сразу.

person Black Dynamite    schedule 04.02.2011