Comments 24
О, Pug поддерживается, отлично.
Было бы интересно помимо react сравнить еще с vue (который сейчас активно пиарится и по производительности ± наравне с react). Не пробовали?
Vue.js тоже очень даже, ещё и по скорости работы хорош. Но он отталкивает меня банально тем, что он более усложнён чем Riot.js :) Плюс, до версии 2.0 у Vue.js отсутствовал серверный рендер, что сыграло решающую роль. Ибо серверный рендер нам нужен.
Увидев pug сильно удивился. Как две капли воды похож на Jade. Полез на github, и правда:
This project was formerly known as "Jade."
Не удивительно :)
Если хочется чего-то похожего, то есть vue.js. Правда меня беспокоит отношение его автора к некоторым кроссбраузерным проблемам, к примеру https://github.com/vuejs/vue/issues/3722. React.js в этом плане гораздо лучше, и для неопытных девелоперов гораздо больше подойдёт, тк решает очень много подобных проблем.
>В то же время, если рассуждать о производительности дальше, то я уже давно смотрю в сторону Inferno: посмотрите ещё раз на таблицу производительности библиотек. Эта библиотека практически идёт один в один с тестами на основе ванильного JS. Если честно, это действительно впечатляет.
Вы просто не понимаете что значат цифры в этом бэнчмарке. Но это не ваша вина, просто некоторые любят использовать такие бэнчмарки в качестве маркетинговой платформы.
Я уважаю ваш опыт и мнение. Но не нужно быть таким категоричным. Вспомните тех многих противников PHP, долгие годы ведущих яростную миссионерскую деятельность против него. Всё это часто доходило до какого-то совсем страшного фанатизма, из-за чего сегодня репутация у PHP сильно подпортилась, думаю, все об этом знают. При этом, PHP решает проблемы и до сих пор живёт, к тому же, на нём ещё и пишут гигантские проекты..
Node.js вышел, миссионеры тут же объявили смерть PHP по этому случаю. Вроде бы вот она — идеальная платформа для веб-разработки. Один язык на сервере и в браузере. Но опять что-то не сошлось… PHP не умер, а Node.js так и не смог кардинально переломить ситуацию.
Относитесь попроще к JS библиотекам. Ну да, есть там проблемы во внутренностях, да, другие парни, возможно, написали свои библиотеки где-то лучше. Но говорить, что его авторы совсем не разбираются в том что они делают — тоже как-то слишком жёстко и некорректно.
Такого чистого API нет ни у кого другого, из того, что я видел. Работает всё вполне нормально: я уже несколько лет использую Riot.js в довольно сложных компонентах. Да, там есть недоработки, за время работы я создал 4 ишью в их проекте на гитхабе. Все они были исправлены авторами библиотеки. Многие проблемы они поправили очень быстро, некоторые — с выходом релиза 3.0. Разве это не значит, что они понимают, что делают?)
Ну а как ещё говорить о тех кто впаривает библиотеку тысячам благодаря лжи в своих маркетинговых статьях? Когда научатся не терять внутреннее состояние, узнают про проблемы асинхронности и инпут евентов, перестанут пихать кучу ненужного хлама в документы, этот список можно очень долго продолжать… Тогда можно будет сказать о том что наконец-то они разобрались :)
Видимо я тоже не знаю об этих проблемах, ибо я бы уже создал ишью на эту тему им) Можете рассказать более подробно, с какими-то примерами, что конкретно вы имеете ввиду? Где оно вредит разработке?
Вы просто не понимаете что значат цифры в этом бэнчмарке. Но это не ваша вина, просто некоторые любят использовать такие бэнчмарки в качестве маркетинговой платформы.
А можно здесь поподробнее? Я тоже приглядываюсь к Inferno, и очень хочется знать не только декларируемые преимущества, но и возможные проблемы.
Вы показали как создать компоненту, но не показали как её использовать. Что если я хочу использовать эту форму в разных контекстах и в некоторых из них мне не нужна регистрация, в некоторых авторизация происходит по иному урлу, а в некоторых авторизация происходит не по e-mail, а по username?
- У вас тексты зашиты в вёрстку. Что если мне нужна поддержка нескольких языков? Во что превратится "этот простой и понятный код" и сколько будет стоить внедрение локализации?
Ну, это вообще-то просто анонс нового релиза. Я много чего не показал, так как не стремился написать руководство по Riot.js: для этого можно открыть их официальный сайт и почитать его. Всё прекрасно расписано, логика работы очень простая)
Вы показали как создать компоненту, но не показали как её использовать
Как её использовать, вы можете почитать в главе о монтировании компонентов.
Что если я хочу использовать эту форму в разных контекстах и в некоторых из них мне не нужна регистрация, в некоторых авторизация происходит по иному урлу, а в некоторых авторизация происходит не по e-mail, а по username
Берёте и пишете всё так, как вам надо. Для вас доступны условные конструкции, циклы, вложенные компоненты, выражения, получаемые при монтировании параметры, и так далее. Всё из того, что вы написали — легко реализуемо при нормально работающем котелке.
Что если мне нужна поддержка нескольких языков?
У нас сейчас как раз ведётся разработка мультиязычного проекта. Мы в нашем проекте передаём все строки, нужные компоненту, при его монтировании. То есть, код инициализации нашего компонента выглядит примерно так::
riot.mount('#some-div', 'my-component', {
str: {
firstString: { ваша логика получения мультиязычной строки },
secondString: { ваша логика получения мультиязычной строки },
}
})
Далее, в коде вашего компонента, пишете что-нибудь вроде такого:
my-component
p { opts.str.firstString }
span { opts.str.secondString }
Существует ли какой то starter-kit?
Ну да. Пример из док-ции:
var riot = require('riot')
var timer = require('timer.tag')
var html = riot.render(timer, { start: 42 })
console.log(html) // <timer><p>Seconds Elapsed: 42</p></timer>
Существует ли какой то starter-kit?
Честно, я не пользовался, как-то сам всё делал всегда вручную. Сейчас нашёл какой-то более менее популярный. Но сказать ничего не могу про него)
- Поиграться с библиотекой
- Пример Todo приложения на плункере (plnkr — идеальный вариант чтобы играться с либами)
- Целая куча всяких других примеров
- Ещё одна куча примеров
- Готовые веб-компоненты на основе Riot.js
del, промахнулся с комментом
Вышел Riot.js 3.0