Необходимые предложения для разработки модульного приложения Coldfusion - PullRequest
1 голос
/ 27 сентября 2010

Я запускаю новое приложение и хочу сосредоточиться на том, чтобы сделать его модульным.Под этим я подразумеваю то, что в своей голове я предусматриваю некоторые основные средства входа в систему, роли пользователей, макеты и т. Д., Но затем я хочу иметь возможность добавлять автономные «куски» функциональности, например, хранилище документов и выгрузку., дневник и служба напоминаний ... что угодно.

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

Я пытался и не смог разобраться в различных фреймворках,но я просто парализован нерешительностью и не понимаю, правильно ли я это делаю.Есть ли способ работы, который имеет некоторое признание в качестве полезной методологии, не вдаваясь во все официальные "рамки" вещи?

Ответы [ 3 ]

2 голосов
/ 27 сентября 2010

Model Glue - превосходный CF Framework. Поддержка группы Google + документы отличные.

FW / 1 - еще одна более простая структура для начала обучения, не уверенная в документации на данный момент.

Фреймворки, безусловно, путь. Как только вы осознаете их, они просто чувствуют себя «хорошо». Они заставляют вас писать более качественный код, и, воспользовавшись фреймворком coldfusion в течение года или около того, я могу честно сказать, что никогда не вернусь к тому, чтобы не использовать один 8 -)

2 голосов
/ 27 сентября 2010

Тогда вы, вероятно, захотите максимально отделить уровень представления от основного. Хороший и популярный способ сделать это, очень быстро набирая скорость, - следовать шаблону MVC (модель-представление-контроллер)

http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller

Это позволит вам модулировать функциональные возможности в контроллеры, которые полностью отделены от макета и т. Д. Контроллеры могут быть легче интегрированы в другие проекты по мере необходимости.

Я знаю, вы сказали, что вам не нужен фреймворк, и вам наверняка он не нужен, но я настоятельно рекомендую его для более крупного приложения, такого как то, что вы описываете. У некоторых может быть так много правил, а что нет, они, кажется, мешают. Тот, который мне нравится, основан на Ruby on Rails и называется CFWheel (http://cfwheels.org/).

Это в значительной степени поможет вам структурировать вещи, вы можете следовать «обычным» путем или нет, это вас не остановит. Посмотрите скриншоты здесь: http://cfwheels.org/screencasts

1 голос
/ 28 сентября 2010

Честно говоря, рамки могут привести к параличу анализа довольно легко. Вы можете легко обдумать вещи. Вот что вы делаете, делайте это просто и просто стучите по клавиатуре. Используйте свой «собственный» фреймворк. Это может быть не красиво, но вы получите это в конце концов, и вы поймете, почему существуют другие платформы.

Вот как вы начинаете:

Создание макетов папок и видов. Поместите все свои элементы макета страницы в папки макетов (вероятно, у вас будет только несколько, а может быть, даже один макет)! Поместите все ваши представления в папку представлений (это, вероятно, будет похоже на то, что вы делали с кучей файлов, которые не очень хорошо организованы). Ключ в том, что в ваших файлах просмотра не будет НИКАКОЙ страницы, обрабатывающей код «верх страницы».

Ваш index.cfm будет единственным корнем .cfm. Используйте переменную URL "event" = action, чтобы заставить ваш фреймворк работать.

В вашем index.cfm используйте гигантский cfswitch, чтобы определить, какой код «верхней части страницы» выполнять (это будет гигантский «контроллер»).

mysite.com / index.cfm? Событие = CONTACTINFO

<cfswitch expression="#url.event#">
  <cfcase value="contactInfo">
    <top of page code>
    <cfset structLayoutInfo["pagetitle"] = "XYZ Contact Info" />
    <cfmodule template="/layouts/mainlayout.cfm" attributeCollection="#structLayoutInfo# >
      <cfinclude template="/views/contactInfo.cfm"/>
    </cfmodule>
   </cfcase>
  .....
</cfswitch>

Объедините это с тегом cfmodule для загрузки вашего макета. Итак, все ваши запросы к странице приходят через index.cfm. Index.cfm выполнит всю верхнюю часть страницы, а затем сделает cfinclude для соответствующего представления в вашей папке представлений. Используйте тег cfmodule для загрузки вашего макета (ознакомьтесь с материалом режима tag.execution для верхних и нижних колонтитулов).

Вы продолжите добавлять функции и добавлять функции в вашу платформу. Вы, вероятно, перенесете код index.cfm в папку контроллера с кучей CFC, которые вызывают ваши CFC базы данных.

...