TrueTemplates - самый быстрый или безопасный шаблонизатор
использовать так:
var wrongField= TT.string( 'field "{0}" is not found' ) .. throw wrongField([ 'xxx' ]) var makeUserTagLink= TT.uri( '/user/{user}/tag/{tag}' ) .. location.href= makeUserTagLink({ user: 'tenshi', tag: 'xxx' }) var makeContent= TT.dom( '<h1>{title}</h1><p>{text}</p>' ) .. contentNode.appendChild( makeContent({ ttle: 'xxx', text: 'xxx not found' }) ) скачать: http://bca07c6c88b166729f9741ef748fc...oject/tt/tt.js - 2.5кило |
Какой-то API неудобный, почему бы не сделать так:
var wrongField = new TrueTemplate("field “{0}” is not found"); throw wrongField.match(["xxx"]) ? -------- а… там разные типы, ну все равно не очевидно, что string, uri или dom вернут функцию. -------- Даже если от new избавится: var wrongField = TrueTemplate("field “{0}” is not found"); throw wrongField.match(["xxx"])было бы удобнее, чем возвращать фукнцию. А необходимость автоматического encodeURIComponent и парсинга HTML в функционале шаблонизатора сомнительна. |
а что нужно вызвать match - это очевидно? х)
|
Да. Все эти func(…)(…)(…)(…)(…)… только чтобы поиграться, показать насколько JS крутой, а в скриптах массового использования, думаю, лучше применять привычную всем схему:
var object = new Constructor(…); object.method(…) |
"привычная всем схема" не удобна в использовании
|
Цитата:
var link= TT.dom( '<a href="{uri}">{title}</a>' )({ uri: '/', title: 'на старт' }) Это же можно сделать проще, выполняя одну функцию вместо двух. Насколько я понял, шаблонизатор не умеет использовать в качестве шаблона DOM-ноды? |
Цитата:
По мне так это не шаблонизатор, а навороченый sprintf. |
Цитата:
а затем, приходит необходимость вносить в шаблоны логику, и идея разделения контента и логики рушится |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
var link= TT.dom(dom)({ uri: '/', title: 'на старт' }) где dom что-то вроде этого: <a href="{uri}">{title}</a> |
в фф будет что-то вроде этого:
<a href="http://example.org/sample/path/%23uri%24">{title}</a> |
Цитата:
Вот к примеру, есть у меня табы. Их можно удалять/добавлять. Для добавления таба необходимо как минимум 2 ноды - вкладку и контейнер для контента. Можно создавать это динамически, но тогда данные (html) будут внутри логики (js), что не есть кошерно. Хранить эти же данные в виде строки ещё хуже - вдруг будет большой кусок? Правильнее, я считаю, брать эти "шаблоны" из html (либо ещё откуда, но не из js-кода). Как в таком случае использовать шаблонизатор? innerHTML вытаскивать постоянно? Конечно, можно это прикрутить к самому шаблонизатору, но это не самый надежный вариант. Это просто мысли в слух, так сказать:) |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
механизм доставки шаблонов в яваскрипт может быть любым, в зависимости от проекта. у нас, например, из jsp-шаблоны трансформируются при компиляции в js-шаблоны и подгружаются в отдельную глобальную переменную.
|
Цитата:
Цитата:
p.s. и ты не пропустил это сообщение? |
Цитата:
Цитата:
ну и: Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
шаблонизатор и продуцируемые им шаблоны - чистые функции, без каких-либо побочных явлений. соответственно ни данные, ни шаблоны ниоткуда самостоятельно не выковыриваются и никуда самостоятельно не вставляются
|
Цитата:
Цитата:
|
Цитата:
|
а почему он должен её принимать? х)
потому что не надо изобретать своих языков разметки - это ни к чему хорошему не приведёт. |
Цитата:
|
Цитата:
Просто у меня свое видение на счет шаблонизатора, вот и интересуюсь, чо да как. Цитата:
|
какое видение?
какой смысл писать шаблоны на языке, отличном от целевого? |
Цитата:
Цитата:
|
ну, я в принципе согласен ^^ я вообще сторонник xslt
но кроме html есть ещё много применений шаблонам.. те же uri |
Цитата:
Kolyaj, например, любит со мной поспорить:) |
Цитата:
кстати, для тех кто не в курсе, тут недавно еще один шаблонизатор "пробегал", и B~Vladi на него, похоже, намекал местами Цитата:
|
шаблон - это только html. а вот view - это не только шаблон.
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
и программа - это тоже данные х)
|
Часовой пояс GMT +3, время: 07:52. |