Быстрая разработка веб-приложений с помощью Web Toolkit

Я трачу много времени (на самом деле слишком много времени) на разработку бэк-офисных приложений, основной целью которых является управление контентом и настройка веб-приложений. Вот как я могу описать эти приложения:

- Made with PHP
- Using a MySQL or Postgres or SQLite database
- Made of a lot of pages and features
- Very simple features, mostly data CRUD (create+read+update+delete into the database)
- Mostly made of forms
- UIs are usually quite simple (html + css + very basic javascript)

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

Что отнимает много времени, так это часть пользовательского интерфейса и, в основном, разработка списков данных и форм. Использование WYSIWYG-редактора здесь имеет большой смысл, за исключением того, что те, которые я пробовал (Dreamweaver, Frontpage, Expression, Eclipse, ...), на самом деле не делают его намного быстрее, потому что сгенерированный код часто раздувается, и эти инструменты могут не полагаться на пользовательские библиотеки, такие как та, которую я сделал и использую.

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

Отказ от ответственности: я не ищу советов о том, как использовать MVC и как использовать CodeIgniter/Zend/WhatEver. Мой вопрос не о фреймворках или шаблонах проектирования, на которых я должен строить свои приложения. Мой вопрос заключается в том, чтобы использовать правильный инструмент для ускорения разработки простых веб-приложений и еще большего повторного использования их кода.

Есть ли отличный инструмент RAD для веб-приложений, о котором я не знаю?

Какой инструментарий вы используете для простых, но сложных веб-приложений?

Существуют ли хорошие, легкие, не раздутые, надежные инструменты, написанные на PHP?

Заранее спасибо !


Редактировать: пока не получил много отзывов:/ Я знаю, что мой вопрос очень широк, но я уверен, что многие люди работают над такими же проектами, о которых я говорю, и повысили свою производительность. с помощью наборов инструментов, таких как GWT, Wicket и тому подобное. Расскажите мне об этом, пожалуйста :)


Редактирование от 28 сентября. Спасибо всем за интересные ответы. То, что я ищу, не покрывается ни одной структурой, которую я мог попробовать в последние месяцы. PHP, вероятно, не лучший язык для моего видения RAD, но поскольку это язык, который я знаю очень хорошо, и поскольку я не хочу тратить слишком много времени на изучение Python так же хорошо, как я знаю PHP (на данный момент) , я решил сделать это сам. Каждый раз, когда у меня возникает конкретная потребность в виджете, я кодирую его максимально удобным для повторного использования способом... пока все хорошо :)

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


person Nicolas    schedule 03.08.2009    source источник
comment
Я не уверен, просите ли вы генератор кода? Генерация CRUD-страниц должна занимать максимум несколько дней работы.   -  person Slartibartfast    schedule 06.09.2009
comment
Несколько месяцев спустя, но действительно ли вы написали инструментарий для PHP? Учитывая, что вокруг открытого исходного кода не так много людей, это будет хорошей идеей.   -  person dutchmega    schedule 23.05.2010
comment
Мне удалось убедить моего работодателя профинансировать его (позвольте мне работать над ним в рабочее время). Что делает его собственностью моего работодателя, так что в настоящее время он не будет открытым исходным кодом. Это не невозможно, но не раньше, чем через несколько месяцев :/   -  person Nicolas    schedule 27.05.2010


Ответы (9)


Проект PHP, над которым я работал последние несколько лет, очень похож на этот. Много форм, много логики на стороне сервера, но много избыточного кода форм. Что еще хуже, это были не все формы, иногда нам действительно нужно было сделать причудливый макет (даже простое управление деревом - это боль без библиотеки), а доморощенный характер пользовательского интерфейса означал, что я буду бороться причуды браузера от начала до конца.

Итак, я начал думать о том, какой была бы лучшая архитектура. Нам нужны были очень мощные элементы управления формами, богатые сетки, богатые деревья, расширенная компоновка, и нам нужно было переходить к этому постепенно. Ни один из фреймворков PHP не подходил. Затем я сделал шаг назад и понял, что это не обязательно должен быть PHP, это может быть и javascript. У нас уже было требование к javascript, так что можно было пойти дальше. Сначала я посмотрел на более мелкие библиотеки, jquery, прототип, но стало очевидно, что они недостаточно хороши. Поэтому я посмотрел на Dojo, ExtJS, YUI, все действительно тяжелые наборы инструментов для javascript и остановился на ExtJS, как на лучшем элементе управления.

У нас была структура пользовательского интерфейса, которая сильно зависела от фреймов iframe, навигационного фрейма снаружи, фреймов приложений внутри него, фреймов функций внутри него и так далее. В итоге мы переносим все извне внутрь. Все это становится ExtJS, и все живет на одной странице. Серверный код остается прежним, но он перенесен в веб-службы. В то же время мы интегрировали фреймворк zend и переносим на него некоторые вещи, которые вам действительно не следует делать доморощенными, такие как аутентификация и перевод.

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

person Joeri Sebrechts    schedule 27.09.2009

Пожалуйста, попробуйте http://agiletoolkit.org/. Я думаю, это то, что вам нужно. Результаты с минимальным временем/кодом.

person romaninsh    schedule 07.04.2011
comment
Пожалуйста, убедитесь, что люди знают, что это ваш собственный проект; требуется раскрытие информации. (Также относится ко многим другим вашим ответам?) - person Arjan; 08.04.2011
comment
@Аржан Спасибо. Я стараюсь везде, где только можно. Он с открытым исходным кодом и находится в свободном доступе. - person romaninsh; 08.04.2011

На данный момент я использую класс твердых форм для отображения HTML-форм с проверкой на стороне клиента и сервера и класс базы данных для написания SQL. Я могу получить раздел CRUD моей консоли администратора примерно за 10 строк кода. Я сам написал эти классы, поэтому я могу повторно использовать их во всех своих проектах. Надеюсь, это натолкнет вас на некоторые идеи?

Лично я бы держался подальше от инструментов WYSIWYG.

person Al.    schedule 03.08.2009
comment
Из любопытства, можете ли вы рассказать мне больше о классе, который вы используете для рендеринга ваших html-форм? По поводу инструментов WYSIWYG я пришел к такому же выводу. Мой вопрос больше касается наборов инструментов, которые можно описать как инструменты, помогающие программно генерировать элементы пользовательского интерфейса. У меня такое чувство, что они могут быть довольно крутыми для повторного использования кода, и я ищу свидетельства об этом. - person Nicolas; 03.08.2009
comment
Класс формы имеет абстрактный класс для элементов формы с подклассами для полей ввода, текстовых областей, выбора и т. д. Поэтому я создаю новый объект формы, затем добавляю поля (с идентификатором, меткой, регулярным выражением проверки и подсказкой при наведении курсора мыши) и наконец, запросите HTML для его отображения. Когда данные POST возвращаются, я создаю объект формы, как и в прошлый раз, загружаю данные POST и проверяю проверку. Я могу подтвердить, что возможность повторного использования потрясающая :) - person Al.; 03.08.2009
comment
Примерно так и я поступаю. Мне всегда очень любопытно, как люди обращаются с такими классическими вещами, потому что я много с этим сталкиваюсь, и каждое улучшение в этой области всегда приветствуется :) - person Nicolas; 03.08.2009

Я тестирую NuBuilder.com, я обнаружил, что это происходит в течение нескольких дней, на первый взгляд выглядит многообещающе. Если вы посмотрите, пожалуйста, пришлите мне свои отзывы!

person Community    schedule 21.08.2009

Может быть, принять или создать инфраструктуру «на основе приложений», например, Django? В случае с Django сообщество создало несколько мощных базовых показателей, таких как Pinax.

person orip    schedule 30.08.2009

Я думаю, что Symfony может подойти, потому что, как и ваши приложения:

  • это написано на пхп
  • ORM на основе Propel/doctrine (так что вы можете использовать MySQL, Postgres или SQLite)
  • Используемые архитектура и шаблоны помогут вам со сложными приложениями.
  • Вы найдете инструменты, которые помогут вам отлаживать, документировать и тестировать ваше приложение.
  • Создание форм, проверка, l10n и i18n, тестирование, AJAX просто (формы в symfony объясняются здесь, посмотрите)
  • прототипировать веб-страницы во время разработки вашего приложения легко

Другие инструменты/практики, реализованные в фреймворке symfony, которые сделают вашу жизнь проще:

  • полная конфигурация с использованием синтаксиса YAML (легко читать и понимать)
  • функция создания шаблонов создает для вас простой интерфейс CRUD для редактирования ваших данных.
  • вам не нужно беспокоиться об очистке формы кода, безопасности, кэшировании, ACL; нужна конфигурация, но не сложное кодирование.

Единственный недостаток, вам нужно прочитать некоторую документацию, чтобы понять «способ работы symfony». Но эй, хороший фреймворк — это 20% кода и 80% хороших практик.

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

person Brian Clozel    schedule 01.09.2009

Я начал использовать Django, и у него есть очень полезные функции, особенно. встроенный администратор (для общих задач CRUD) и действительно отличный код для обработки форм и рендеринга виджетов. Я бы посоветовал взглянуть, даже если вы не планируете использовать python, просто чтобы получить представление.

Вы упомянули, что вам не нужны советы по «Использованию X-фреймворка», так как это больше касается RAD и пользовательского интерфейса/форм, чем архитектуры системы. Но я обнаружил, что хороший фреймворк так же помогает с пользовательским интерфейсом и формами, как и с архитектурой. Это означает, что хотя фреймворки отлично подходят для больших проектов, они также очень полезны для уменьшения избыточности кода. Я начал создавать свои собственные вспомогательные функции на PHP, которые я копировал из приложения в приложение, которое автоматически отображало форму HTML на основе нескольких параметров. Даже после большой работы это было очень примитивно по сравнению с тем, что предлагает Django, и в основном я писал свой собственный фреймворк.

Я думаю, что вы, возможно, ищете инструмент в стиле графического интерфейса, но вы можете обнаружить, что хороший PHP-фреймворк более полезен в этом случае. По крайней мере, вы пробовали создавать свои собственные вспомогательные библиотеки? Я знаю, что они мне очень помогли.

Простой пример:

function renderInput($name, $value="") {
    print "<input type=\"input\" name=\"" . htmlentities($name) . "\" value=\"" . htmlentities($value) . "\" >";
}
function renderRadios($name, $value="", $choices=array()) {
    for ($choices as $cvalue) {
        print "<input type=\"checkbox\" name=\"" . htmlentities($name) . "\" value=\"" . htmlentities($cvalue) . "\" " . ($cvalue == $value ? "checked" : "") . ">";
    }
}

И строить оттуда. Подобные глупые вещи, как правило, делают создание форм намного быстрее. Хорошая структура выбьет это из воды. И я уверен, что в приведенном выше есть некоторые опечатки, я немного не занимался PHP.

Если это не то, что вы ищете, не могли бы вы добавить еще немного к вопросу? Мне любопытно.

person rocketmonkeys    schedule 28.09.2009

Хотя вы просите PHP + MySql, я хотел бы порекомендовать вам попробовать гибкую платформу OutSystems.

Вы можете создать простое приложение CRUD менее чем за 10 минут и расширять его по мере перехода к более сложной системе.

Загрузите Community Edition бесплатно на www.outsystems.com.

Лучший,

person Mário André Araújo    schedule 05.07.2010

Не уверен, но похоже, что вам нужен Tibco General Interface (http://www.generalinterface.org).

person pashute    schedule 05.05.2011