kobezzza,
Цитата:
Довольно интересный вариант, но, как мне кажется лучше собрать больше мнений, мб выяснятся какие-то +/- такого решения. Да-да, я намекаю на статью :) |
kobezzza,
Реакт это не шаблоны, а компоненты. HTML там только в самой начальной точке. Давай такой пример.
var Btn = React.createClass({
propTypes: {
value: React.PropTypes.string.isRequired,
className: React.PropTypes.string.isRequired
},
render: function () {
return (
<div className={this.props.className}>{this.props.value}</div>
)
}
});
//React.PropTypes.string.isRequired - выдает ошибку, если мы забудем указать свойство
var Board = React.createClass({
getInitialState: function() {
return {
className: "btn",
value: "Кнопка"
};
},
render: function () {
return (
<Btn className={this.props.className} value={this.state.value} />
<Btn className="btn-my" value="submit" />
)
}
});
Цитата:
|
Цитата:
Ну и я сейчас такой трюк юзаю с ангуляром на работе, как писал выше - оч удобно. Цитата:
Цитата:
1) Во первых SS может генерить любой текст и он точно также спокойно сгенерит текст с компонентом; 2) Это не только куча фишек, но и разделение сущностей, за которые не нужно платить, т.к. всё делается один раз на этапе сборки проекта. 3) Самое главное - это сейчас ну очень просто реализовать :) |
return Snakeskin('myFile');
Меня пугает до усрачки...Подключение шаблонизатора мне видится для ... я даже не знаю для чего. Цитата:
value: React.PropTypes.string.isRequired,он тоже сгенерит? |
Цитата:
Цитата:
Цитата:
Вот например шаблон, генерирующий JS:
#{template foo()}
function some() {
return #{1 + 2};
}
var a = {
bar: "#{'ffffuuuuuu'}"
};
#{/}
*** Вот ещё пример похожей схемы: Stylus и Rework, первый юзается для трансляции .styl в .css, а второй для .css в .сss (полифилы и т.д.) |
Хотел много чего написать, но напишу только одно. Не жалко времени, пофикси пересборку шаблонов, если возможно.
Цитата:
Цитата:
Если это критическая бага шаблонки, то вопрос снимается. Просто не понимаю, зачем нужен вотчер, если приходиться пересобирать все вручную. |
Стоп, я тебя не понял, какая бага?
Цитата:
Я объяснил ситуацию, привёл примеры и решения, что ты ещё хочешь то?
{template base()}
{block bar}
{proto e()}
1
{/}
{/}
{/}
{template child() extends base}
{block bar}
fffffuuuu
{/}
{/}
Неужели ты не видишь, что в дочернем шаблоне ты переопределил блок bar и всё его старое содержимое было законно уничтожено. Если ты хочешь доопределить - то просто используй super
{template child() extends base}
{block bar}
{super}
fffffuuuu
{/}
{/}
Это самый логичный способ. Есть ещё способ 2, который я также уже описывал, но который я бы не рекомендовал, т.к. на мой взгляд он не такой очевидный - это вынести прототип из родительского блока:
{template child() extends base}
{proto e()}
{super}
{/}
{block bar}
fffffuuuu
{/}
{/}
Здесь ты переопределил блок bar, но также явно вынес прототип. Цитата:
|
Тьфу, не то, мозг отрубается...
http://javascript.ru/forum/project/3...tml#post356968 А если у меня шаблоны разбросаны по разным папкам? |
Цитата:
|
Цитата:
Я уже описывал решения проблемы, но ок, опишу ещё раз: Решение 1: если ты хочешь как и раньше юзать вотчер WebStorm, то зайди в его настройки и просто задай вместо компиляции файла - компиляцию папки, например, snakeskin myTpls/ -o '%filePath%.js' Не надо боятся, что это будет долго делаться - не будет, SS не будет перекомпилить файл - если в этом не будет нужды. Решение 2: В CLI Snakeskin есть свой вотчер, который никак не связан с WebStorm и который знает про граф отношений. Для этого нужно убить вотчер в WebStorm и запустить из консольки SS с флагом --watch. Решение 3: Использовать вместо вотчера WebStorm вотчер gulp ил grunt - он просто при любом изменении будет перекомпиливать все шаблоны, т.к. решение похоже на пункт 1. Что тебе удобней - выбирай сам. |
| Часовой пояс GMT +3, время: 21:03. |