imho.ws |
![]() |
![]() |
|
Сообщения:
Перейти к новому /
Последнее
|
Опции темы |
![]() |
# 42 |
Junior Member
Регистрация: 01.11.2002
Адрес: Kyiv, Ukraine
Сообщения: 95
![]() |
результат на лицо http://sybe.dotgeek.org/ время генерации говорит за себя :-)
|
![]() |
![]() |
# 44 |
Junior Member
Регистрация: 01.11.2002
Адрес: Kyiv, Ukraine
Сообщения: 95
![]() |
Сейчас все работает на забугорном халявном хостинге так что как говорится системка показывает себя в боевых условиях тк на этом же сервере хостится еще около 5000 проектов.
Время генерации варируется в широких пределах в зависимости от загружености машинки и частоты обращения к этому проекту. На локальной машине время генерации 1 мега XML + XSLT преобразование не превышает 0.1-0.3 се,обычные странички генерятся за 0.01-0.05 сек. Хотя я сомневаюсь что в реальных условиях будут файлы такого размера. Система пока сырая - но дает представление о своей работе и потенциале. Кому интересно могут написать в приват - Я дам потестить, для работы надо php5. |
![]() |
![]() |
# 45 |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
После изучения многих плюсов и минусов, я все-таки взялся писать свой класс шаблонов. Работа в самом разгаре, но простейшие конструкции уже работают. Не хочу говорить о минусах и отрицать другие подходы, но время генерации пока маленьких шаблонов составляет несколько тысячных или десятитысячных секунды. Правда особенно бенчмарков я еще не проводил, вполне возможно что с ростом и обрастанием возможностями этот показатель значительно ухудшится...
Плюс неоспоримым преимуществом является конечно то что я могу реализовать впринципе любую необходимую конструкцию в нем, а не только тем пользоваться что мне предлагают. Предвосхищая крик многих типа "а в подходе ХХХ уже все это есть и предусмотрено" хочу спросить сколькими вообще возможностями из имеющихся там Вы пользуетесь обычно, и сколько процентов из общего числа Вы использовали хоть раз?! ![]() Да и потом как же быть с тем так и не закрытым вопросом должен ли Дизайнер (верстальщик) учить новый язык, например XML? Какая разница, почему бы ему в таком случае не выучить 20 конструкций PHP? ![]() Вобщем мне в любом случае оказалось приятнее своя реализация. Как говорится "своя рубашка ближе к телу". Это конечно не аргумент, но это крайне важно, когда нужно решить нестандартные задачи....
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
![]() |
![]() |
# 47 |
Guest
Сообщения: n/a
|
Шаблоны - только для больших проектов
Мой личный опыт показывает:
для разных по размерам проектов надо применять разные подходы. я бы разделил примерно так... проект страниц на 10 не больше (есть и такие, например порно сайт) - не стоит мудачиться со всякими шаблонами, пиши, лишь бы работало. проект где-то до 50 страниц (например сайт знакомств или форум): можно использовать подход header-body-booter. тобишь общие части просто загнать в отдельный файл и вставлять его на каждой странице. Коенчно, в этих двух случаях вы не увидете никакого разделения дизайна и кода, и это перекроет возможность кодеру прикрутить дизайн к программе самостоятельно, но даже если программист сам это сделает, выигрышь времени будет на лицо. Использовать шаблоны я бы рекомендовал только в больших проектах (более 50 страниц). Еще один огромный плюс шаблонов: при условии удачного соглашении об именовании переменных, методов и классов и использовании ООП вместе с шаблонами, проект выполненный с использованием шаблонов дает преимущество в поддержке. |
![]() |
# 48 | |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
![]() |
![]() |
# 50 |
Newbie
Регистрация: 20.06.2003
Сообщения: 26
![]() |
Я использую php_templates и chtemplate.
Оба движка работают как extension к php, поэтому скорость работы по сравнению с самим пхп (<?=$content?>) практически минимальна (т.е. почти нет вообще). По сравнению с аналогами (smarty, fasttemplate, xtemplate даже при использовании ими кэширования) генерация с помощью этих движком происходит в разы быстрее. В php-templates правда тоже встроен механизм кеширования в вирт. памяти. За то плюсы на лицо: быстрая генерация страницы, полное разделение дизайна от кода. Минусы: то что используется как библиотека, поэтому надо просить хостера чтоб установил.
__________________
нема пока |
![]() |
![]() |
# 51 | |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
![]() Ну со скоростью вроде понятно, есть более быстрые и более медленные решения. Я вообще не люблю стороннних продуктов, поэтому написал вобщем-то свой класс шаблонов, открытым остается самый главный и принципиальный вопрос - разделение и наглядность! Итак, мне все-таки пришломь разбираться со Smarty в одном из проектов (многим известный X-Cart Gold), приведу пример шаблона на смарти: Код:
{section name=cat_num loop=$categories} {capture name=block} {section name=cat_n loop=$categories[cat_num].sub} • <a class="leftLinks" href="home.php?cat={ $categories[cat_num].sub[cat_n].categoryid }"> { categories[cat_num].sub[cat_n].category|escape }</a><br> {/section} {/capture} {include file="block.tpl" title="<a class=insideTitle3 href=home.php?cat=`$categories[cat_num].categoryid`>`$categories[cat_num].category`</a>" content=$smarty.capture.block extra="class=bgInside5"} {/section} Итак главный вопрос: Это наглядно для дизайнера, не разбирающегося в программировании вовсе???? Это реализует концепцию разделения кода и содержания? Только не нужно говорить, типа "и не нужно использовать Смарти, вон в ХХХ все наглядно и просто", когда шаблонизатор обрастает возможностями и функциональностью, его синтаксис неизменно усложняется, с этим, надеюсь, никто спорить не будет. Тоесть, при том что я сам написал шаблонизатор для собственного использования, и мне с ним удобнее теперь работать, я никак не могу нормально разобраться во всем этом принципе: как же это все должно быть в идеале....
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
![]() |
![]() |
# 52 |
Full Member
Регистрация: 29.05.2002
Сообщения: 544
![]() ![]() ![]() ![]() ![]() |
у каждого свой идеал. вместо "навороченных" шаблонов нужно использовать xslt. там это все уже есть и даже больше.
вообще верстку должен делать не дизайнер, а верстальщик, а у него должна быть некоторая подготовка. мне нравиться делать следующим образом: есть шаблон. вся его обработка идет в коде. пример: Код:
<!-- BEGIN list --> <table> <!-- BEGIN list_item --> <tr> <td> {item_title} </td> </tr> <!-- END list_item --> </table> <!-- END list --> 1. разделение кода. 2. простота. p.s. мне идеально подошел KTemplate.
__________________
убрано по просьбе администратора ![]() |
![]() |
![]() |
# 53 | |
МОД-Оператор ЭВМ
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
|
|
![]() |
![]() |
# 54 |
Full Member
Регистрация: 29.05.2002
Сообщения: 544
![]() ![]() ![]() ![]() ![]() |
я не видел дизайнеров и хороших верстальщиков в одном лице. верстка это чисто технический процесс, без какого-либо творчества.
у тебя есть картинка, макет, описание и т.д. твоя задача выдать тоже самое, но в html.
__________________
убрано по просьбе администратора ![]() |
![]() |
![]() |
# 55 | ||
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ребята, ребята, не стоит об этом спорить
![]() Цитата:
Вы считаете что он должен в любой момент кидаться изучать как программисту в очередной раз Цитата:
И вот теперь, тут, мы возвращаемся к самому моему первому и принципиальному вопросу, заданному в самом начале этой темы, и как-то оставленном посути в стороне, отвлекаясь на всякие частности, на альтернативы и т.д.: А не проще ли Дизайнеру (пусть верстальщику) выучить десяток-два конструкций на PHP, тех что ему необходимы для верстки??? Это не универсальнее вообще? Тоесть разделение возможно и нужно, но нужно ли его делать "полным" и для этого изобретать велосипеды и новые технологии, кому какие вздумается?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. Последний раз редактировалось Hubbitus; 16.01.2005 в 18:16. |
||
![]() |
![]() |
# 56 |
Full Member
Регистрация: 29.05.2002
Сообщения: 544
![]() ![]() ![]() ![]() ![]() |
еще раз и все по-порядку.
1. я уже давно не делаю вставок php кода в html. просто считаю это не правильным подходом. отсюда и идут шаблоны(при всех остальных плюсах). более того, там где это возможно(по срокам) стараюсь всегда делать четкое разделение приложения на уровни(data layer, biz, logic, output, etc). обычно у меня так: 1.база данных. 2.класс, инкапсулирующий всю логику. 3.сборка страницы. 4.шаблон. уровни могут "общаться" только с соседними. если нету времени, 2-ой уровень убирается. 2. xslt это язык программирования. дизайнер его знать не обязан, а хорошему верстальщику - самое оно. 3. ответ на твой вопрос для меня очевиден: не проще и не правильно.
__________________
убрано по просьбе администратора ![]() |
![]() |
![]() |
# 57 | ||||
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
Цитата:
Цитата:
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
||||
![]() |
![]() |
# 58 |
Full Member
Регистрация: 29.05.2002
Сообщения: 544
![]() ![]() ![]() ![]() ![]() |
2Hub
1. я совершенно не настаиваю на своем подходе. я же написал - для меня это очевидно, но это не значит, что для всех. у меня есть свои аргументы, некоторые из них я уже выссказывал на этом форуме. 2. я же написал - это именно класс. т.е. после его написания, страница вообще не знает ничего о бд, она только парсит данные(которые вытянул для нее класс и выводит их на экран). пример, рассмотрим простейший класс: Код:
class Item extends AbstractItem //base item { var $itemInfo = array( 'id'=>0, 'catid'=>0, 'title'=>'' ); var $itemCollection = array(); . . . function GetItemById($itemID) { $db = new MySql(null,null,null,null); $db->MySql_Connect(); $db->MySql_SelectDb(); $selectQuery = "select itm_ID, cat_ID, itm_TITLE from cat_item where itm_ID = " . $itemID . " limit 1"; $db->MySql_QueryDb($selectQuery); if ($db->dbResult != null) { while($row = mysql_fetch_assoc($db->dbResult)) { $this->itemInfo['id'] = $row['itm_ID']; $this->itemInfo['catid'] = $row['cat_ID']; $this->itemInfo['title'] = $row['itm_TITLE']; } return 0; } return -1; } . . . } Код:
$item = new Item(); //default constructor if ($item->GetItemById(1) == 0) { print_r($item->itemInfo); } в том, что страница "x" ничего не знает ни о бд, ни о запросах, вообще ни о чем, вся ее задача это вывести данные на экран. при подобной архитектуре, приложение становится очень гибким, а код можно реалньо использовать во множестве проектов, т.к. нужно будет менять только вывод(HTML, XML, ETC). если же нету времени, то я переношу логику на 3-ий этап. насчет базы. вообще это личное дело каждого, читал о том, что нету единого подхода к этой проблеме(где должна быть бизнес-логика). сам же ,по возможности, предпочитаю реализовывать ее именно через базу, но т.к. я последнее время сижу на mysql 3.23.5x - там особенно ничего не сделаешь. про дизайнера - я все написал. добавить мне нечего. p.s. в данном случа программист должен будет распарсить шаблон, а верстальщик собвственно их сделать. пример опять же: дизайнер сделал макет, эских или предвариетльную верстку: элемент "список" верстальщик сделал: Код:
<!-- BEGIN list --> <table> <!-- BEGIN list_item --> <tr> <td> {item_title} </td> </tr> <!-- END list_item --> </table> <!-- END list --> Код:
$listTpl = $tpl->fetchblock("list"); foreach($item->itemCollection as $itemObject) { $listItemTpl = $listTpl->fetchBlock(list_item); $listItemTpl->assign("item_title",$itemObject["title"]); $listTpl->assign("list_item",$listItemTpl ); $listItemTpl->reset(); } $tpl->assign("list",$listTpl);
__________________
убрано по просьбе администратора ![]() Последний раз редактировалось Sheryld; 17.01.2005 в 19:15. |
![]() |
![]() |
# 59 | |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Sheryld, ты меня конечно извини, и без обид, но все что ты написал к этому топику, и вопросу шаблонов относится очень мало
![]() Цитата:
Итак, приведенный тобой код того что "верстальщик сделал" так красив просто и понятен только пока .... он так прост! Я же привел пример к чему приводит наращивание возможностей, на примере Смарти. А подобного не избежать никак помоему - полюбому и верстальщику нужно будет все больше возможностей и универсальности... Дак вот где здесь компромисс??
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
![]() |
![]() |
# 60 |
::VIP::
Регистрация: 28.06.2002
Адрес: neverwhere
Сообщения: 1 166
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Здесь есть ещё неплохая статья на эту тему (но на английском).
http://www.massassi.com/php/articles/template_engines/ |
![]() |