DjDiablo, всё так, но я создал в голове фоновый процесс о внедрении своего механизма биндинга, посмотрим что выйдет.
UPD: внимательно взвесив все за и против, решил, что в планируемый релиз это не войдёт, но сделаю небольшую заготовку на будущее. |
Чёто я профакапил планируемые сроки, теперь на следующей недели планирую закончить :)
Кстати, уже добавил фичу для локализации: {template foo()} `hello friend`! {end} Тоже самое, что и {template foo()} {i18n('hello friend')}! {end} А если для метода compile задать параметр language, то замена будет сделана на этапе трансляции: {template foo()} `hello friend`! {end} Snakeslin.compile(..., {language: {'hello friend': 'привет друг'}}) |
Цитата:
|
Цитата:
ЗЫ: я решил проблему соответствия файла шаблона с скомпилированным файлом, так что можно будет делать умный кеш :) ЗЫЗЫ: таки будет Snakeskin 4, а не Snakeskin 3.4, т.к. было внесено 2 ломающих изменения: 1) Изменён синтаксис директивы attr Раньше было <div {attr 'class', 'foo bar'} {attr '-bar', 'foo'} Стало <div {attr 'class' => 'foo', 'bar'; '-bar' => 'foo'} Т.е. новый синтаксис позволяет в одной директивы задавать много атрибутов, а также множество значений для одного атрибута, которые будут соединены через пробел. 2) Изменение работы модификатора контекста @ внутри with блока Раньше было {with foo} {a + @bar} /// foo.a + bar {/} Стало {with foo} {@a + bar} /// foo.a + bar {/} Т.е. теперь если у идентификатора нет модификатора контекста, то он считается глобальным, а раньше было наоборот. Это нововведение было сделано, чтобы стал доступен следующий синтаксис: {with foo} {@['a']} /// foo['a'] {@[1 + 'bar']} /// foo[1 + 'bar'] и т.д. {/} |
неплохо! годные изменения.
Холовейчук, как мы знаем, ушел из ноды - фич для Jade от новых мейнтейнеров не дождемся) дьякую некий список вопросов : 1. что делать с переменными, переданными в шаблон (я передавал их как глобальные)? 2. как задать layout для шаблона? 3. что насчёт сахарку для директив ангуляра (тут сам не додумал, но, возможно, как-то писать без префикса "ng" или группировать их)? |
Цитата:
{template foo(@params)} /// @params - это сахарная форма для with params {@foo} /// params.foo {/} Если пользователь решит задать дополнительные параметры для шаблона, то они просто будут передаваться как последующие, т.е. {template foo(@params, some1, some2)} {@foo + some1 + some2} {/} Это на мой взгляд самое лучшее решение проблемы. Цитата:
//#include ./file1.ss //#include ./file2.ss Но есть задумка интегрировать include как директиву, тогда можно будет делать так: {for var i = 0; i < 10; i++} {include './file' + i + '.ss'} {/} Цитата:
|
отлично )
ещё одна деталь как перевести *.ss сразу в *.html, минуя *.ss.js ? есть ли какое-то особое имя у template, которое отличается от остальных тем, что именно оно будет запускаться при переводе *.ss в *.html ? |
Цитата:
Цитата:
ЗЫ: сделал директиву include, теперь можно делать, например, так: {fs = require('fs')} {forEach @fs.readdirSync('...') => el} {include el} {/} {template foo()} ... {/} или тоже самое в новом синтаксисе :) - fs = require('fs') - forEach @fs.readdirSync('...') => el - include el - template foo() ... Директива работает только на этапе трансляции, также есть защита от дублирования файлов, т.е. если много раз написать include одного файла, то подключится он только один раз. Директиву можно юзать только вне тела шаблона. |
Цитата:
а новый синтаксис можно уже юзать? будут ли какие ошибки, если попробовать подсветку Jade на файле Snakeskin ? можно ли делать ss файл без записей template? как бы получится неявное оборачивание в template, который будет переводить в html |
Цитата:
Цитата:
*** Когда буду обновлять доку, то сниму пару роликов про главные фичи, такие как наследование, прототипы и т.д. |
Часовой пояс GMT +3, время: 19:43. |