Тут дело в том, что в СС7 появились неймспейсы, и при наследовании нужно указывать весь неймспейс целиком:
extends lalala.parent Но, если шаблон наследования лежит в том же неймспейсе, что и базовый шаблон, то можно проще: extends @parent Т.к. неймспейс создаёт неявный with блок с биндингом на себя. Цитата:
|
О. Папка с тестами как всегда выручила :)
#{ template child(@params) extends @parent } Собачку надо добавить :) Цитата:
|
Цитата:
button.ss - namespace ui.button - template main() ... super-button.ss - include './button' - namespace ui['super-button'] - template main() extends ui.button.main ... |
Привет.
Можете подсказать такую вроде не сложную вещину :) ? задача глобальная - разбить все на микрочастицы, и комбинировать как хочется. 1. Есть шаблон основной страницы - namespace demo - template layout.general(@params) - doctype < html < head < title { @title } # style css .foo {} # script alert(1); < body < .hello Hello me! 2. Есть модуль А - namespace A { template html(@params) } < button { @buttonText } {/ template } #{ template styles(@params) } #{ @buttonSelector } { background: #f00; outline: 0; } #{/} #{ template scripts(@params) } alert( #{@message} ) #{/} { template page(@params) } ??? {/ template } Таких модулей может быть много. Моя задача наследовать (может не совсем верная формулировка) каждый модуль от demo.layout.general и на место стилей и скриптов в head ставить мои темплеиты. Равно как и содержимое body также нужно заменить на A.html шаблон Я пока себе не представляю, как это делается? При том, что мне нужно в каждый шаблон пробросить нужные переменные. Т.е должно работать вроде как вот так const a = ss.compileFile( path.resolve(__dirname, './../a.ss') ); a.page({ message: 'Some alert message', buttonSelector: 'button.my-button', buttonText: 'Click me!', title: 'Кнопка же, ну' }); Но я запутался с последовательностью. Или в сторону block надо копать? |
Писать вот так не получается
< head < title { @title } # style css { block styles() } Hello world! {/ block } Суть в том, что стили из шаблона А.styles мне будут нужны в двух видах. Как здесь - внутри тега style Так и как raw - чтобы вставить их в отдельный файл. |
Эммм, если я правильно понял, то есть мастер шаблон, и все остальные шаблоны должны от него наследоваться и заменять (или дополнять) некоторые его участки. Для этого будем использовать блоки и наследование.
base.ss - namespace base - template main() - doctype < html < head - block head < body - block body child.ss - namespace child - include './base' - template main() extends base.main - block head # style .foo { color: red } Если при переопределении блока в дочернем шаблоне нужно вызвать тело родителя, то используем директиву super - namespace child - include './base' - template main() extends base.main - block head - super # style .foo { color: red } |
Цитата:
base.ss - namespace base - template main() - doctype < html < head - block head < body - block body child.ss - namespace child - include './base' #{template style()} .foo { color: red } #{/template} - template main() extends base.main - block head - style += child.style() /// Или += @style() если не занят биндинг |
ой. Сработало.
Невнимательно переписал пример. Решетку убрать надо было. А зачем она? Чем # style отличается от - style ? |
Цитата:
# style ты продекларировал расширенный синтаксис директив, вот тут += styles.test() забыл про это и СС думает, что это просто текст :) Исправь на #+= styles.test() А вообще в примере выше нет необходимость делать style через расширенный синтаксис, если всё что внутри неё будет - это просто вызов другого шаблона, т.к. расширенный синтаксис нужен если мы пишем текст, а тут просто вызов другого шаблона. Цитата:
- template foo(content) < .wrapper {content} - template bar() += foo() < .baz Hello world Думаю смысл ясен :) Если нужно передать несколько аргументов, то используем директиву putIn - template foo(a, b, content1, content2) {a + b} < .wrapper1 {content1} < .wrapper2 {content2} - template bar() += foo(1, 2) < .baz Hello world * < .bla Hello! Больше примеров тут |
Это и спрашивал. Спасибо)
Пока все круто. Ну за исключением того, что сюда надо бегать за каждым чихом :) |
Часовой пояс GMT +3, время: 04:25. |