Помимо видимых ссылок на модули, вики выглядит для пользователя как черный ящик.
Анализ запросов браузера в одном скрипте — альтернативная модель Wiki, рассмотренная
в главе 8, что позволяет вам иметь один файл сценария или реализовать общую библиотеку
модуль. В этом тоже есть свои преимущества, особенно если вы запускаете много вики в Интернете.
server, но модульный подход делает анализ функциональности более простым и понятным.
Прежде всего, модульная концепция позволяет очень легко создавать надстройки, которые функционально
независимым и, таким образом, может быть протестирован без нарушения основной рабочей вики.
РИСУНОК 7-1.
Модульная компонентная модель QuickiWiki, в значительной степени скрытая от пользователя.
210
ИЗУЧЕННЫЕ КОМПОНЕНТЫ ВИКИ
Подробный анализ скрипта организован по отдельным файлам модулей.
Сначала мы исследуем основные модули.
ОСНОВНЫЕ МОДУЛИ QUICKIWIKI
Основные компоненты QuickiWiki — это просто просмотр, редактирование и сохранение.
Тем не менее, включая поиск и внесение изменений, авторы считают, что
«основная вики» или основная система.
Разбираем каждый модуль по разделам, чтобы у вас была возможность ознакомиться
частями по одной. Поскольку часть кода обязательно повторяется, эти
сегменты обсуждаются только один раз в первом модуле, в котором они появляются.
Обслуживание
Страницы
Отвечать на GET-запросы браузера — это самое важное из того, что делает вики. Таким образом, вы можете
рассматривайте скрипт обслуживания страниц как основной компонент, так как это то, где вы находитесь большую часть времени.
время. Это также компонент по умолчанию, вызываемый для любого запроса, который не
конкретно указать на другой модуль. Это означает, что такой запрос, как:
http://mydomain.com/mywiki
будет функционально эквивалентен:
http://mydomain.com/mywiki/wiki.cgi?MyDefaultPage
Это похоже на то, как URL-адреса, не указанные в файле, преобразуются в индексную страницу по умолчанию в
обычный веб-сервер.
wiki.cgi
#! /USR/бен/перл
#(c) 1999, Cunningham & Cunningham, Inc.
# в сотрудничестве с Дэйвом В. Смитом
# используйте строгий; # полезно во время отладки, если поддерживается strict.pm