Экосистема Web 2.0 / Стек - PullRequest
8 голосов
/ 07 февраля 2011

Будучи новичком в разработке интерфейсных веб-сайтов, я могу понять некоторые вещи, такие как маршруты, ORM и т. Д. Что я не понимаю, так это то, как они все играют вместе. Насколько я понимаю, для веб-сайта, созданного с помощью Pyramid / Django, есть несколько компонентов:

  1. Механизм шаблонов: что-то для вас, чтобы абстрагировать ваш HTML от вашего кода. Имеет смысл.

  2. SQLAlchemy et al. ORM. Хорошо.

  3. Рендерер. Понятия не имею.

  4. JS библиотеки: JQuery et al: Не знаю, для чего они нужны, кроме добавления симпатичных эффектов. Как это взаимодействует с движком шаблонов? Как это взаимодействует со всей структурой? Могу ли я написать код для jquery в Pyramid, или я пишу JS отдельно, вставляю свой файл JS в свой шаблон или ...?

  5. Библиотеки шаблонов форм (Formish, Formalchemy и др.): Как они связаны с общей картиной? где они подключаются?

Какие-нибудь другие важные компоненты, которые мне не хватает?

Итак, кто-нибудь может мне помочь и объяснить стек?

Ответы [ 2 ]

8 голосов
/ 05 апреля 2011

1) Шаблонный движок: что-то для вас, чтобы абстрагировать ваш HTML от вашего кодаИмеет смысл.

Есть несколько из них.Мако пытается использовать много общих идиом Python в шаблонах, чтобы избежать необходимости изучать много новых концепций.Jinja2 похож на Django, но с большей функциональностью.Genshi, если вам нравятся шаблоны на основе XML.

Как новичок в этом, трудно сказать, с чего проще всего начать, к сожалению.Возможно, Джинджа2.

2) SQLAlchemy et al.ОРМ.Хорошо.

Да.

3) Рендерер.Понятия не имею.

Рендерер - это опция конфигурации представления Pyramid, которая сообщает Pyramid, что если ваше представление возвращает dict, то оно должно быть передано указанному 'renderer'.Рендереры настроены на работу с именами расширений, а Pyramid поставляется с несколькими встроенными: http://docs.pylonsproject.org/projects/pyramid/1.0/narr/renderers.html#built-in-renderers

Короче говоря, опция рендерера просто смотрит на передаваемое вами имя и находит механизм шаблонов, который соответствуетрасширение (.mak, .pt, 'json', 'string', .etc) и визуализирует с ним результаты dict.

Во многих средах вы не определяете рендерер как конфигурацию, а вместо этого имеетенекоторый код внутри представления, который выглядит примерно так:

def somefunc(request):
    return render_to_response('/some/template.mak', {})

В Pyramid вы можете сделать то же самое с:

@view_config(renderer='/some/template.mak')
def somefunc(request):
    return {}

Есть несколько причин, по которым последняя является полезной возможностью:

  1. Когда он полностью в конфигурации, вы можете переопределить рендер, не изменяя логику кода вида.

  2. Вы можете добавить несколько конфигурацийкоторые изменяют средство визуализации на основе других условий.

Рассмотрим этот пример, который изменяет средство визуализации в зависимости от того, является ли HTTP-запрос XHR (AJAX-запросом, в котором требуется JРезультат в формате SON вместо обычного HTTP-запроса, который требует, чтобы механизм HTML выдавал HTML).

@view_config(renderer='json', xhr=True)
@view_config(renderer='/some/template.mak')
def somefunc(request):
    # lookup some_dict_data in a db, etc.
    return some_dict_data

4) Библиотеки JS: JQuery et al.Не знаю, для чего они нужны, кроме добавления симпатичных эффектов.Как это взаимодействует с движком шаблонов?Как это взаимодействует со всей структурой?Могу ли я написать код для jquery в пирамиде, или я пишу JS отдельно, вставляю свой файл JS в свой шаблон или ...?

Библиотеки JS облегчают написание Javascript.Они взаимодействуют в браузере с DOM и не взаимодействуют с Pyramid, кроме отправки HTTP-запросов вашему веб-приложению, которое может запрашивать результаты в формате JSON.

Для начала я бы предложил полностью игнорировать Javascript до тех пор, пока вы не 'Вы гораздо лучше знакомы с HTML, деревом DOM и приобретением сайта, который работает только с HTML, CSS и веб-приложением.

5) Библиотеки шаблонов форм (formish, formalchemy и др.)Как они связаны с общей картиной?куда они подключаются?

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

Что вам понадобится после написания базовых форм, вам нужна библиотека проверки формы, которая упрощает проверку того, что отправленная форма содержит допустимые параметры.В старые времена PHP люди писали сотни строк операторов if / else, которые проходили через формы (некоторые до сих пор делают! Ack!).

В настоящее время мы используем библиотеки проверки формы, которые упрощают объявление допустимых параметров формы.Для начала я бы предложил FormEncode, поскольку он довольно прост в использовании просто для проверки.Для Pyramid самый простой способ начать работу с FormEncode - это, вероятно, pyramid_simpleform: http://packages.python.org/pyramid_simpleform/

На данный момент проигнорируйте часть визуализации формы и напишите элементы формы HTML в шаблоне самостоятельно, а для простоты используйте pyramid_simpleform.Интеграция FormEncode.

Короче говоря, начните с простого отображения HTML-страниц со ссылками с использованием функций просмотра и шаблонов (и используйте диспетчеризацию URL-адресов, это легче понять, чем обход для начинающих). Затем добавьте формы, их HTML и проверку, затем добавьте CSS, чтобы начать стилизацию.

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

3 голосов
/ 07 февраля 2011

3) Рендер. Понятия не имею.

Обычно средство визуализации берет ваши данные / модель и преобразует их в то, что хочет клиент. Если клиент - это просто браузер, то средство визуализации, как правило, обрабатывает ваши данные через шаблон для создания HTML. Если клиент представляет собой некоторый код JavaScript или не браузерное приложение (настольное приложение, другой сервер, который потребляет ваши данные, ...), то средство визуализации обычно создает JSON (или, возможно, XML). Вы можете думать об этом как о системе сериализации или сортировки.

4) JS-библиотеки:

Это то, что вы используете для программирования пользовательского интерфейса. Пользовательский интерфейс может быть просто приятными эффектами поверх HTML, но это может быть намного больше. Например, Google Docs - это JavaScript и немного больше, чем просто эффект; Cloud9 IDE будет еще одним примером полноценного приложения, созданного на JavaScript (спасибо Raynos за другой пример).

5) Библиотеки шаблонов форм

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

Какие-нибудь другие важные компоненты, которые мне не хватает?

Вы можете представить современный веб-стек как традиционную систему клиент-сервер; это, вероятно, разозлит некоторых людей, но здесь нет ничего принципиально нового, кроме, возможно, масштаба. Клиент построен с HTML и CSS для макета и JavaScript (возможно, с инструментарием) для функциональности и привлекательности. Сервер - это какой-то веб-сервер. Связь между клиентом и сервером обычно осуществляется в сочетании JSON и HTML по HTTP. Вы можете думать о web-1.0 (может простите меня за мою маркетинговую терминологию) как о глупых терминалах старой школы, где web-2.0 больше похож на X-терминал с мозгами на клиенте.

...