Тут дело в том, что в СС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, время: 05:43. |