Цитата:
|
Цитата:
|
Вообще для Snakeskin прям напрашивается boilerplate либа, которая реализует, например, макеты на bootstrap и пласт полезных функций, аля
- proto base->icon(type)
< span class = fa #{type}
-template base()
- doctype
< html
< head
< title :: {title = 'Заголовок' ?}
- block scripts
< cdn bootstrap
< cdn fontawesome
< body
- block body
- proto classic->menu(list)
- forEach list => @el
...
-template classic() extends base
- block scripts
- super
< cdn jquery-ui
- block body
/// Тут идёт вёрстка макета и разбинение на блоки для наследования
И уже при самой разработке можно было бы просто подключать нужный файл и наследовать шаблон от него. Тоже самое и для UI, причём шаблоны удобно делать как метод класса UI контрола,
- template Button.prototype.tpl() extends Base.prototype.tpl
...
- template SuperButton.prototype.tpl() extends Button.prototype.tpl
...
|
Цитата:
есть ли способ дополнить этот стандарт или засахарить его? и ещё .. подсветка кода!!! :( |
Цитата:
Цитата:
В notepad++ подсветку также настроить легко через настройки->добавить язык. А вот в sublime я просто хз, но я не думаю, что там что прям эпик. Вот что действительно нужно добавить, т.к. это флаг --watch для компилятора, чтобы он сам пересобирал необходимые шаблоны, т.к. всякие File Watcher -ры делают это не совсем корректно, например, base.ss ... foo.ss - include 'base.ss' Файл foo.ss зависит от base.ss и при изменении base.ss нужно перекомпилить также foo.ss, но простой Watcher это не сделает, т.к. он не в курсе про граф отношений файлов - это знает только SS. И конечно нужно доработать модули, без этого никак. |
Цитата:
Я в своём проекте использую похожий подход, есть .styl
.b-button {
@extends i-base;
...
}
.ss - template bButton.prototype.tpl() extends iBase.prototype.tpl ... .js
// ES6 торт :)
class bButton extends iBase {
...
}
А подключение того или иного модуля делается через b-button.json, где описаны зависимости и т.д.
{
"block": "b-button",
"extends": "i-base",
"use": [
"logic",
"style",
"tpl"
]
}
Вызов такого блока в другом шаблоне выглядит примерно так: /// директива bem - это часть фреймворка - bem b-button value: '...', size: 'xxl', style: 'dark' Дополнительная крутость в том, что SS поддерживает БЭМ и локализацию на уровне синтаксиса, а блок может быть полностью отрендерен как на сервере, так и на клиенте без внесения изменений в код. Восхваляемый всеми Jade не умеет и 1/10 от фич SS - это объективный факт. Удобнее такого подхода за 7 лет проганья на JS я пока не видел :) |
Для меня в WebComponents самое ценное - это Shadow DOM, а остальное странные приблуды (те же кастомные элементы уже 100 лет как можно юзать, и более того их уже давно юзают, см гугло или яндекс карты). В лучшем случае эти модули можно будет использовать как пласт для более абcтрактных фреймворков, а не как конечный API.
|
Улучшил доку, добавил новые главы.
|
Одной из новых фич, которые войдут в будующий релиз Snakeskin будет новый вариант трансляции шаблонов - в императивный DOM, т.е.
< span.foo
hello world!
Превратится в
var _ = document.createElement('span');
_.setAttribute('class', 'foo');
_.appendChild(document.createTextNode('hello world'));
Такое расширение уже поддерживается движком Snakeskin, поэтому фича довольно легко реализуемая. |
Также в SS 4.2 будут серьёзно доработаны модули, т.к. сейчас они сделаны лишь наполовину, например появится такая важная возможность, как
- include 'foo.ss' as placehoder - include 'foo.ss' as interface Т.е. все шаблоны в подключаемом файле будут представлены либо как placeholder, либо как interface. Также появится возможность задавать флаги компилятора для каждого файла отдельно, причём работать они будут по принципу наследования-переопределения родительских свойств (т.е. свойств файла родителя). |
| Часовой пояс GMT +3, время: 01:35. |