Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #131 (permalink)  
Старый 01.07.2014, 23:21
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

DjDiablo, всё так, но я создал в голове фоновый процесс о внедрении своего механизма биндинга, посмотрим что выйдет.

UPD: внимательно взвесив все за и против, решил, что в планируемый релиз это не войдёт, но сделаю небольшую заготовку на будущее.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 02.07.2014 в 01:21.
Ответить с цитированием
  #132 (permalink)  
Старый 06.07.2014, 20:18
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Чёто я профакапил планируемые сроки, теперь на следующей недели планирую закончить

Кстати, уже добавил фичу для локализации:

{template foo()}
    `hello friend`!
{end}


Тоже самое, что и

{template foo()}
    {i18n('hello friend')}!
{end}


А если для метода compile задать параметр language, то замена будет сделана на этапе трансляции:

{template foo()}
    `hello friend`!
{end}


Snakeslin.compile(..., {language: {'hello friend': 'привет друг'}})
__________________
kobezzza
code monkey
Ответить с цитированием
  #133 (permalink)  
Старый 06.07.2014, 20:49
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от kobezzza Посмотреть сообщение
Для нового синтаксиса будет добавлена поддержка ссылки на родительский класс а ля Stylus.

.b-foo.&_checked_true
    span.&__master hello world!


=>

<div class="b-foo b-foo_checked_true">
    <span class="b-foo__master">hello world!</span>
</div>


Т.е. & будет ссылаться на последний класс без использования &.

***

Новый синтаксис будет прекрасно сосуществовать и со старым, т.е. если будет нужно, то например

- template foo()
    div fooo bar {call bar()} bla bla bla
kobezzza, а правильно ли я понял, что синтаксис будет Jade-подобный ?
Ответить с цитированием
  #134 (permalink)  
Старый 06.07.2014, 21:26
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от melky Посмотреть сообщение
kobezzza, а правильно ли я понял, что синтаксис будет Jade-подобный ?
Он будет опциональным, т.е. старый никуда не денется и будет также использоваться совместно в тех местах, где это удобно. Ну а что касаемо самого синтаксиса, то он он будет очень похожим на Jade, но всё же другим в нюансах: это логично, т.к. возможностей у Snakeskin на голову выше и синтаксис должен все их покрывать.

ЗЫ: я решил проблему соответствия файла шаблона с скомпилированным файлом, так что можно будет делать умный кеш

ЗЫЗЫ: таки будет 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'] и т.д.
{/}
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 06.07.2014 в 21:49.
Ответить с цитированием
  #135 (permalink)  
Старый 07.07.2014, 01:43
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

неплохо! годные изменения.

Холовейчук, как мы знаем, ушел из ноды - фич для Jade от новых мейнтейнеров не дождемся)


дьякую некий список вопросов :

1. что делать с переменными, переданными в шаблон (я передавал их как глобальные)?
2. как задать layout для шаблона?
3. что насчёт сахарку для директив ангуляра (тут сам не додумал, но, возможно, как-то писать без префикса "ng" или группировать их)?
Ответить с цитированием
  #136 (permalink)  
Старый 07.07.2014, 07:07
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
что делать с переменными, переданными в шаблон (я передавал их как глобальные)?
Я решил эту проблему в новой версии. Будешь передавать переменные как первый параметр и юзать так:

{template foo(@params)} /// @params - это сахарная форма для with params
    {@foo} /// params.foo
{/}


Если пользователь решит задать дополнительные параметры для шаблона, то они просто будут передаваться как последующие, т.е.

{template foo(@params, some1, some2)}
    {@foo + some1 + some2} 
{/}


Это на мой взгляд самое лучшее решение проблемы.

Цитата:
как задать layout для шаблона?
Имеешь ввиду, как делать include сторонних файлов? Ну пока я интегрировал Jossy, т.е.

//#include ./file1.ss
//#include ./file2.ss


Но есть задумка интегрировать include как директиву, тогда можно будет делать так:

{for var i = 0; i < 10; i++}
    {include './file' + i + '.ss'}
{/}


Цитата:
что насчёт сахарку для директив ангуляра (тут сам не додумал, но, возможно, как-то писать без префикса "ng" или группировать их)?
{attr ng-(foo1 => val1; foo2 => val2)} нормально?
__________________
kobezzza
code monkey
Ответить с цитированием
  #137 (permalink)  
Старый 07.07.2014, 11:09
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

отлично )
ещё одна деталь

как перевести *.ss сразу в *.html, минуя *.ss.js ?

есть ли какое-то особое имя у template, которое отличается от остальных тем, что именно оно будет запускаться при переводе *.ss в *.html ?
Ответить с цитированием
  #138 (permalink)  
Старый 07.07.2014, 11:18
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
как перевести *.ss сразу в *.html, минуя *.ss.js ?
Можно скомпилить шаблон и сразу же его выполнить, т.е. не сохраняя результат в файл, могу сделать отдельный метод для этого.

Цитата:
есть ли какое-то особое имя у template, которое отличается от остальных тем, что именно оно будет запускаться при переводе *.ss в *.html ?
Нет, но таким именем можно сделать имя файла где лежит шаблон, т.е. если файл profile.ss и там есть template с именем profile, то он считается главным.

ЗЫ: сделал директиву include, теперь можно делать, например, так:

{fs = require('fs')}

{forEach @fs.readdirSync('...') => el}
    {include el}
{/}

{template foo()}
    ...
{/}


или тоже самое в новом синтаксисе

- fs = require('fs')

- forEach @fs.readdirSync('...') => el
    - include el

- template foo()
    ...


Директива работает только на этапе трансляции, также есть защита от дублирования файлов, т.е. если много раз написать include одного файла, то подключится он только один раз. Директиву можно юзать только вне тела шаблона.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 07.07.2014 в 11:29.
Ответить с цитированием
  #139 (permalink)  
Старый 07.07.2014, 11:59
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от kobezzza
Нет, но таким именем можно сделать имя файла где лежит шаблон, т.е. если файл profile.ss и там есть template с именем profile, то он считается главным.
примерно это же я и сделал в express-snakeskin, только если нет имени шаблона, совпадающего с именем файла, вызывается шаблон 'main', или тот, что указан в options.

а новый синтаксис можно уже юзать? будут ли какие ошибки, если попробовать подсветку Jade на файле Snakeskin ?

можно ли делать ss файл без записей template? как бы получится неявное оборачивание в template, который будет переводить в html

Последний раз редактировалось melky, 07.07.2014 в 12:05.
Ответить с цитированием
  #140 (permalink)  
Старый 07.07.2014, 12:13
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от melky Посмотреть сообщение
а новый синтаксис можно уже юзать? будут ли какие ошибки, если попробовать подсветку Jade на файле Snakeskin ?l
Ещё нет, ведь релиза 4-й версии ещё не было, но постараюсь на этой недели всё закончить и обновить доку. Если юзать ограниченно то ошибок не будет, но это идиотизм, т.к. тогда можно оставаться на Jade Ну а Snakeskin фишки будут варнить к сожалению. Если бы было время, то мб я бы покурил как написать плагин для WS, но его нет

Сообщение от melky Посмотреть сообщение
можно ли делать ss файл без записей template? как бы получится неявное оборачивание в template, который будет переводить в html
Нет, и лучше так не делать, т.к. это убьёт многие фишки Snakeskin.

***

Когда буду обновлять доку, то сниму пару роликов про главные фичи, такие как наследование, прототипы и т.д.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 07.07.2014 в 12:18.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
express-snakeskin - view через snakeskin для express melky Ваши сайты и скрипты 5 10.06.2014 11:35