Согласен с blackPeanut. DOM подразумевает работу с документами (Document Object Model, все-таки), которых просто не существует в мобильной разработке. Вы не представляете документы, используя объектную модель, Вы используете древовидную структуру для представления компонентов экарн(а|ов).
Более того, VDOM, как таковой, является структурой для представления DOM в памяти и не подразумевает никаких «встроеных» алгоритмов (однако, почти все известные VDOM имплементации поставляются вместе с набором алгоритмов типа обхода дерева, вычисления разницы деревьев и пр).
Прошу не считать это «подкопом» к терминологии, скорее небольшой семантической поправкой статье.
Основываясь на докладе с JSConf EU в этом году (вот этот доклад, если не ошибаюсь), при правильном написании, JS отстаёт по производительности от C на ~16%.
Но как уже кто-то заметил выше, в веб приложениях не так сильно важна скорость, а писать программы, от которых требуется высокая производительность, можно и на другом языке, раз уж на то пошло.
Вопрос к автору: почему движки в сравнении 12-13 годов? Как-то странно смотреть на сравнение Chrome 26, когда у тебя стоит Chrome 48...
А вот я после прочтения немного взгрустнул: сейчас у меня как раз «то время»: пицца и бессонные ночи за Open Source проектами и чтением документации. Не хочется верить, что через 30 лет я больше не смогу так делать.
Но ещё более страшно будет прочитать этот комментарий через 30 лет.
О, мы использовали handlebars в 2011. Но, честно говоря, я думаю что целевая аудитория этой статьи крайне ограничена людьми, которым приходится поддерживать legacy- код на backbone или чем-то подобном. Все современные решения (а-ля angular, react) предоставляют свои инструменты для шаблонизации HTML.
Тем не менее, материал качественный и красиво оформленный. А это, нынче, редкость.
Так, ну React использует Facebook, Airbnb, Khan Academy, Filpboard как минимум (это первое, что приходит на ум). Вообще, есть целый тред на эту тему. Могу то же самое найти для Webpack, но я полагаю Вы тоже умеете пользоваться поиском.
Что касается Babel, ES6 и т. п. то действительно считаю баловством использование в продакшене языков не поддерживаемых основными браузерами. Изучать новые технологии нужно, но бежать впереди поезда не слишком эффективно.
Последняя утвержденная спецификация языка для Вас — «бежать впереди поезда»?
Я не хочу никого обидеть, но затем создавать приложения на стеке умирающих технологий? Когда выйдет Angular 2, про первый будут помнить разве что те, у кого всё приложение в данный момент завязано на него, а что касается requirejs, то несмотря на свою дикую популярность 4 года назад, на нынешний день имеет на 100 000 скачиваний в месяц меньше, чем webpack и, на секундочку, на ~2 233 089 скачиваний меньше, чем browserify.
Вы так интересно рассуждаете о технологиях — «сегодня популярны, а завтра — забыли», но ведь уже «сегодня» про requirejs забыли, а про angular 1.x забудут, считай что «завтра».
Дочитав дискуссию до середины, удивился, насколько yosemity стрессоустойчив :) Но что ж, раз уж такая пьянка, давайте пофлеймим: Представьте, что появляется лекарство от рака. Его можно использовать сразу, что будет означать, что ваши дети больше не будут восприимчивы известным штаммам фируса. Или же можно обновлять каждый месяц, добавляя иммунитет к новым штаммам. Я выберу второе. И да, химический состав везде разный, но нацелен на борьбу с одними и теми же клетками, каждый выбирает своё.
А теперь про вторую часть: если не будет конкуренции — не будет качества. Останется один единственный антивирус — начнётся деградация качества, мол «аналогов-то нет, никто от нас не откажется». А вообще, какая вам разница, сколько компаний это производит? Или вы хотите получить серебрянную пулю за бесплатно?
Основная идея, «пропитывающая» реакт — композиция элементов. Т.е. «шаблон вывода» в Вашем понимании составляется из маленьких dumb components, которые при аггрегации образуют то, что Вам нужно.
Разумеется, где-то вверху будет находится smart component, который будет оркестрировать весь процесс: забирать данные из какого-нибудь хранилища (будь то что-то самописное, redux store или что либо ещё) и передавать эти данные в ваши dumb components и, возможно, содержать логику а-ля «если количество записей больше нуля, показывать dumb component со списком записей, в противном случае показывать заглушку с сообщением об отсутствии записей». По факту весь реакт — это один большой шаблон, если так посмотреть :)
Более того, VDOM, как таковой, является структурой для представления DOM в памяти и не подразумевает никаких «встроеных» алгоритмов (однако, почти все известные VDOM имплементации поставляются вместе с набором алгоритмов типа обхода дерева, вычисления разницы деревьев и пр).
Прошу не считать это «подкопом» к терминологии, скорее небольшой семантической поправкой статье.
Но как уже кто-то заметил выше, в веб приложениях не так сильно важна скорость, а писать программы, от которых требуется высокая производительность, можно и на другом языке, раз уж на то пошло.
Вопрос к автору: почему движки в сравнении 12-13 годов? Как-то странно смотреть на сравнение Chrome 26, когда у тебя стоит Chrome 48...
Но ещё более страшно будет прочитать этот комментарий через 30 лет.
<Animals>
?Вообще, вот то же самое в 18 строчках на JS (или 14 не считая пустые). Я не могу говорить за всех, но имхо, этот код понятнее и проще.
ОКНОДАЙ
иИНАЧЕ ВСЁ
:)Тем не менее, материал качественный и красиво оформленный. А это, нынче, редкость.
Последняя утвержденная спецификация языка для Вас — «бежать впереди поезда»?
Я не хочу никого обидеть, но затем создавать приложения на стеке умирающих технологий? Когда выйдет Angular 2, про первый будут помнить разве что те, у кого всё приложение в данный момент завязано на него, а что касается requirejs, то несмотря на свою дикую популярность 4 года назад, на нынешний день имеет на 100 000 скачиваний в месяц меньше, чем webpack и, на секундочку, на ~2 233 089 скачиваний меньше, чем browserify.
Вы так интересно рассуждаете о технологиях — «сегодня популярны, а завтра — забыли», но ведь уже «сегодня» про requirejs забыли, а про angular 1.x забудут, считай что «завтра».
А теперь про вторую часть: если не будет конкуренции — не будет качества. Останется один единственный антивирус — начнётся деградация качества, мол «аналогов-то нет, никто от нас не откажется». А вообще, какая вам разница, сколько компаний это производит? Или вы хотите получить серебрянную пулю за бесплатно?
Разумеется, где-то вверху будет находится smart component, который будет оркестрировать весь процесс: забирать данные из какого-нибудь хранилища (будь то что-то самописное, redux store или что либо ещё) и передавать эти данные в ваши dumb components и, возможно, содержать логику а-ля «если количество записей больше нуля, показывать dumb component со списком записей, в противном случае показывать заглушку с сообщением об отсутствии записей». По факту весь реакт — это один большой шаблон, если так посмотреть :)