Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MVC с перестановкой сил. Боремся с несправедливос 
:(
    Опции темы
okneigres
Дата 29.3.2008, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.3.2008

Репутация: нет
Всего: нет



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

Мне кажется, есть в этом логическое недоразумение. Оно касается в первую очередь того, что веб-сервер, по сути занимается не своей работой. Модель клиент-сервер такова, что сервер хранит данные и обрабатывает запросы к ним (Model, Controller), а клиент - получает данные и использует (представляет) их как хочет (View). Вот что, если клиент от сервера получал только чистые данные, загружал шаблон и использовал бы эти данные в этом шаблоне как ему хочется? Отличная бы получилась система - сервер передаёт только самое необходимое, вся статическая информация (шаблон! А он зачастую намного больше, чем непосредственно данные) хранится в кэше - как следствие увеличение скорости работы. И куча позитивных моментов - упрощается работа с движком, "скины" теперь не нуждаются в поддержке серверным движком. Код на сервере становится на порядок проще. И самый главный плюс - данные, передаваемые сервером клиенту (и получаемые от него) могут быть стандартизированы. А значит, серверную часть можно легко переносить на любой язык программирования, хоть на C++, хоть на java, хоть на php. И все модули, написанные на РАЗНЫХ языках, будут иметь одинаковый интерфейс, а значит смогут быть взаимозаменяемыми и эффективно взаимодействовать по протоколу http.

Получаем полный MVC. Model - база данных, Controller - язык программирования, который эту базу обслуживает. View - на стороне клиента. 

Некоторое время я проводил эксперименты и пытался перенести процесс формирования шаблонов на javascript. Пробовал всякое, и придумывал тоже всякое. И делал, кстати, работающие сайты. Но, столкнулся с огромным количеством минусов - отлаживать такой огромный массив javascipt-кода - очень сложно. Любая оплошность, ошибка в запятой грозит тем, что весь сайт не работает. А передавать такой код на поддержку стороннему разработчику (верстальщику) и вовсе страшно! Да и цена подобного решения непропорционально велика.

Но вот как-то недавно мне в голову пришла одна интересная мысль - использовать iframe, растянутый на всё окно, а под ним, в основном окне, будет прятаться только контент smile.

Как это выглядит практически?

Со стороны сервера мы получаем такую html-ку:

http://server/request
Код

<html>
 <head>
  <script src='/view/_loader.js'></script>
 </head>
 <body>
 <div id="content_piece_1">Первый кусочек запрошенного  контента</div>
 <div id="content_piece_2">Второй кусочек запрошенного  контента (возможно со <a href="http://kuda-to/">ссылкой</a></div>
 <div id="content_piece_3">Третий кусочек запрошенного  контента 
 <ul>
  <li>ну например 
  <li>со списком <img src='i_izobrazheniem.jpg'></li>
</ul
 </div>


Ничего лишнего, как видим. Всё строго по делу. В ней работает _loader.js , которая создаёт iframe и подгружает в него дизайн нашей страницы:

/view/_loader.js
Код

//всё прячем, чтобы никто не догадался и чтобы из-под низа iframe-а ничего не выпирало.
document.write('<style>html, body {overflow:hidden;margin:0;} body * {display:none;}</style>')
var $view; // это будет ссылка на нашу view-область
window.onload = function(){
$view = document.createElement('iframe') // создадим её сразу после загрузки контента
//делаем чтобы iframe не было видно
$view.style.cssText = 'position:absolute;top:0px;left:0px;width:100%;background:white;display:block;padding:0;'
$view.src = '/view/design.html'
$view.setAttribute('frameborder','no')
$view.setAttribute('scrolling','yes')
document.body.appendChild($view)
// определяем и устанавливаем высоту iframe так, чтобы
if(window.innerHeight)
 $view.style.height = window.innerHeight + 'px';
else if(document.documentElement.clientHeight)
      $view.style.height = document.documentElement.clientHeight + 'px';
else if(document.body.clientHeight)
      $view.style.height = document.body.clientHeight + 'px';
}


Дальше идёт дизайн (он может быть свёрстан каким угодно способом):

 /view/design.html 
Код

<html>
<head>
<script src="naprimer_prototype.js"></script> // необходимые пользовательские библиотеки
<script src="effects.js"></script> // и нужные нам визуальные эффекты (ну и всё остальное, что пригодится в дизайне)
<script>
Var data = window.parent.document; // это документ с нашими данными, которые нужно сюда вставить.
</script>

<body> <!-- и сама свёрстанная страница -->
<div id=header>….header...</div>

<div id=content>
   <div id=area_1>
       <!-- быстро, просто и со вкусом вставляем кусочек контента -->
       <script>document.write(data.getElementById('content_piece_1').innerHTML)</script>
    </div>
   <div id=area_2>
       <script>document.write(data.getElementById('content_piece_2').innerHTML)</script>
    </div>
   <div id=area_3>
       <script>document.write(data.getElementById('content_piece_3').innerHTML)</script>
    </div>
</div>

<div id=footer>…footer….</div>
</body>


Подход очень простой, очень гибкий и достаточно взрослый. Вполне в духе нашего времени всеобщего ajax-а. . А главное - исключает всякие нездоровые программистские домысливания на тему темплейтных движков и xslt.

Ну вобщем... хочется это как-то развить. Есть желающие вместе подумать эту мысль?

Кстати, если кто интересуется, уже сейчас есть работа для фрилансеров по такой вёрстке. Оплачиваемая. Пишите, если что в личку, кто заинтересован.
PM MAIL   Вверх
WolfON
Дата 29.3.2008, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 1
Всего: 8



Только ниодин поисковик это не проиндексирует.
PM MAIL ICQ   Вверх
ksnk
Дата 29.3.2008, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 1
Всего: 386



Цитата(WolfON @  29.3.2008,  01:25 Найти цитируемый пост)
Только ниодин поисковик это не проиндексирует. 

Это почему это? Весь контент, который интересно индексировать идет в первом запросе...

Добавлено через 4 минуты и 36 секунд
Цитата(okneigres @  29.3.2008,  01:20 Найти цитируемый пост)
отлаживать такой огромный массив javascipt-кода - очень сложно
 А при таком подходе что случится с огромным массивом javascript кода? Он волшебным образом напишется сам?
Чтобы не отдавать верстальщику JS достаточно не писать html в javascript'е



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 29.3.2008, 13:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



okneigres, лучше бы XSLT - преобразования поддерживались всеми браузерами. XSLT на стороне клиента - как раз то, чего тебе недостает.
PM MAIL   Вверх
Vaulter
Дата 29.3.2008, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



xml + xslt как раз для этого случая
к сожалению Opera не до конца поддерживает xslt 1.0, а таквполне живучая технология



--------------------
PM MAIL WWW ICQ   Вверх
vasac
Дата 29.3.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: нет
Всего: 36



Каждый начинающий программист проходил через подобный вселенский бред. И это правильно.
Вот только не все под подобные вещи подводят умные термины и забавные фразы типа "сервер занимается не своей работой".
PM WWW   Вверх
okneigres
Дата 30.3.2008, 04:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.3.2008

Репутация: нет
Всего: нет



Цитата(ksnk @ 29.3.2008,  09:26)
А при таком подходе что случится с огромным массивом javascript кода? Он волшебным образом напишется сам?
Чтобы не отдавать верстальщику JS достаточно не писать html в javascript'е

javascript-код станет очень простым и легко поддерживаемым. Я тестировал всё на реальном сайте.

про javascript не понял.

Добавлено через 1 минуту и 50 секунд
Цитата(vasac @ 29.3.2008,  16:39)
Каждый начинающий программист проходил через подобный вселенский бред. И это правильно.
Вот только не все под подобные вещи подводят умные термины и забавные фразы типа "сервер занимается не своей работой".

спасибо за мнение smile
вот здесь считают по другому

Добавлено через 6 минут и 59 секунд
Цитата(Vaulter @ 29.3.2008,  15:08)
xml + xslt как раз для этого случая
к сожалению Opera не до конца поддерживает xslt 1.0, а таквполне живучая технология

xslt - сложная для понимания вещь
предложенный мной подход проще и гибче.
PM MAIL   Вверх
vasac
Дата 30.3.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: нет
Всего: 36



Цитата(okneigres @  30.3.2008,  04:08 Найти цитируемый пост)
вот здесь считают по другому

Большинство считают так же smile
Один Деструкшин по другому, но он всегда подругому smile
PM WWW   Вверх
sTa1kEr
Дата 4.4.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(ksnk @  29.3.2008,  10:26 Найти цитируемый пост)
Это почему это? Весь контент, который интересно индексировать идет в первом запросе...

А весь контент, который "интересно индексировать", все равно на сервере будет формируется. Так какой тогда смысл городить iframe-ы через JS ?
Намного правильнее просто отдавать чистый и аккуратный html, все стили выносить в css, а на JS уже можно красиво оформить отдельные элементы.
К тому же у iframe-ов есть свои недостатки.

В общем это палка о двух концах. Тут либо полностью забить на поисковики и формировать страничку полностью при помощи JS (при помощи ajax это можно сделать очень изящно, просто и без таких архаизмов как iframe), либо, как ни крути, придется формировать страничку на сервере и отдавать уже готовый html.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0908 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.