Javascript.RU

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

Цитата:
А зачем она? Чем
# style
отличается от
- style
Решётка декларирует расширенный синтаксис, это означает что все вложенные директивы должны также использовать его.

- template foo()
  # script
    var a = {}; /// Не будет ошибки т.к. мы используем расширенный синтаксис


Цитата:
Это и спрашивал. Спасибо)
Пока все круто. Ну за исключением того, что сюда надо бегать за каждым чихом
Зато когда освоишь СС то сможешь такие штуки писать, что закачаешься
__________________
kobezzza
code monkey
Ответить с цитированием
  #702 (permalink)  
Старый 16.03.2016, 02:33
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от kobezzza
Зато когда освоишь СС то сможешь такие штуки писать, что закачаешься
Яростно плюсую)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #703 (permalink)  
Старый 16.03.2016, 15:25
Кандидат Javascript-наук
Отправить личное сообщение для yazonnile Посмотреть профиль Найти все сообщения от yazonnile
 
Регистрация: 25.05.2012
Сообщений: 133

Еще небольшой вопрос, если позволите.

< some
создаем тег some

- some
? простая директива?

# some
расширенная директива?


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

Например span.some
Сейчас использую вот так (класс вручную, а в переменной только класс)
< span (class = ${ @markup.spanClass })
    { @markup.spanText }


А вот так не получилось
< ${ @spanSelector }
	{ @markup.spanText }

Тк на выходе получал
<span.some>span text</span.some>

)

{tag ${ @spanSelector }}
    Hello world
{/tag}

Результат тот же

Последний раз редактировалось yazonnile, 16.03.2016 в 15:36.
Ответить с цитированием
  #704 (permalink)  
Старый 16.03.2016, 15:52
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
< some
создаем тег some
< - это сокращённый синтаксис для - tag, т.е.

- tag some


Даст такой же ответ. Сокращённые варианты есть лишь у некоторых директив и преследуют исключительно цель удобства написания

Цитата:
- some
? простая директива?
- обозначает, что следующий параметр будет имя директивы, но если директивы с таким именем нет, то будет использоваться либа директива output или global или const или decorator Т.е. всё зависи от контекста:

- template foo()
- var bla = 1
- bla /// 1
- bar = 2 /// создаст константу bar


Цитата:
# some
расширенная директива?
Расширенный синтаксис, его можно использовать с любой директивой и он просто означает, что все вложенные директивы должны использовать синтаксис #{ ... } и т.д. и это нужно, чтобы не было конфликтов с JS/CSS вставками, т.к. там используются блоки {}.

Цитата:
Например span.some
Сейчас использую вот так (класс вручную, а в переменной только класс)
Можно проще:

< span.${ @markup.spanClass }


И зачем взял в круглые скобки?

Цитата:
А вот так не получилось
< ${ @spanSelector }
    { @markup.spanText }


Тк на выходе получал
<span.some>span text</span.some>
Интерполяция в декларации тега требует, чтобы ты явно ставил разделитель класса, названия тега и ИД, например,

< ${tagName}#${idName}.${className1}.${className2}


Интерполяция также работает и при ручном задание атрибутов

< span ${attr1} = ${attrVal1}


А также можно использовать интерполяцию с объектом:

- var attrs = { foo: 1, bar: 2 }
< .foo ${attrs}
__________________
kobezzza
code monkey
Ответить с цитированием
  #705 (permalink)  
Старый 16.03.2016, 16:03
Кандидат Javascript-наук
Отправить личное сообщение для yazonnile Посмотреть профиль Найти все сообщения от yazonnile
 
Регистрация: 25.05.2012
Сообщений: 133

Спасибо за подробное объяснение.

Т.е раскрыть строку span.some в тег с классом не выйдет?
Ответить с цитированием
  #706 (permalink)  
Старый 16.03.2016, 16:04
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Т.е раскрыть строку span.some в тег с классом не выйдет?
- template foo(selector)
  /// Сокращение для - var
  : chunks = selector.split('.')
  < ${ chunks[0] }.${ chunks[1] }


Или более универсальный вариант (если классов много)

- template foo(selector)
  : chunks = selector.split('.')
  < ${ chunks[0] } сlass = ${ chunks.slice(1).join(' ') }
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 16.03.2016 в 16:07.
Ответить с цитированием
  #707 (permalink)  
Старый 16.03.2016, 16:06
Кандидат Javascript-наук
Отправить личное сообщение для yazonnile Посмотреть профиль Найти все сообщения от yazonnile
 
Регистрация: 25.05.2012
Сообщений: 133

И в догонку
Почему?

< span ${attr1} = ${attrVal1}
Но
< span
     {attr1} = {attrVal1}
Ответить с цитированием
  #708 (permalink)  
Старый 16.03.2016, 16:09
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

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

< .foo &
  bla = 1 |
  baz = 2
.


Если использовать классический синтаксис, то это не нужно.

{< .foo
  bla = 1 |
  baz = 2
}{/}
__________________
kobezzza
code monkey
Ответить с цитированием
  #709 (permalink)  
Старый 16.03.2016, 16:13
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

А стоп, не понял вопрос сначала. Ты спрашиваешь почему ${} и {}?

Потому что ${} - это синтаксис интерполяции, т.е. мы внутрь инструкции вставляем живые значения, а {} - это просто декларация директивы

< ${'foo'}
  {a} - {b}


Тоже самое на классическом синтаксисе

{< ${'foo'}}
  {a} - {b}
{/}


А разный синтаксис по 2-м причинам:

1) Визуальное отличие, чтобы не запутаться
2) Чтобы не было конфликтов с использованием {} блоков внутри директивы, например

/// <div class="foo" bla="{a: 1, b: 2}"></div>
< .foo bla = {a: 1, b: 2}
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 16.03.2016 в 16:18.
Ответить с цитированием
  #710 (permalink)  
Старый 16.03.2016, 16:18
Кандидат Javascript-наук
Отправить личное сообщение для yazonnile Посмотреть профиль Найти все сообщения от yazonnile
 
Регистрация: 25.05.2012
Сообщений: 133

Понял. спасибо!

Хорошего дня
Ответить с цитированием
Ответ



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

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


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