Обзоры фреймворков, библиотек, компонентов и прочего
Предлагаю в этой теме постить:
Тесты производительности фреймворков |
Ractive.js. The diamond age of web development
Ractive.js
Цитата:
Пример кода <!-- 1. This is the element we'll render our Ractive to. --> <div id='container'></div> <!-- 2. You can load a template in many ways. For convenience, we'll include it in a script tag so that we don't need to mess around with AJAX or multiline strings. Note that we've set the type attribute to 'text/ractive' - though it can be just about anything except 'text/javascript' --> <script id='template' type='text/ractive'> <p>Hello, {{name}}!</p> </script> var ractive = new Ractive({ // The `el` option can be a node, an ID, or a CSS selector. el: '#container', // We could pass in a string, but for the sake of convenience // we're passing the ID of the <script> tag above. template: '#template', // Here, we're passing in some initial data data: { name: 'world' } }); |
Mithril. A client-side MVC framework
Mithril
Цитата:
Пример кода //model var Page = { list: function() { return m.request({method: "GET", url: "pages.json"}); } }; var Demo = { //controller controller: function() { var pages = Page.list(); return { pages: pages, rotate: function() { pages().push(pages().shift()); } } }, //view view: function(ctrl) { return m("div", [ ctrl.pages().map(function(page) { return m("a", {href: page.url}, page.title); }), m("button", {onclick: ctrl.rotate}, "Rotate links") ]); }; }; //initialize m.mount(document.getElementById("example"), Demo); |
Vue.js
Цитата:
Пример кода <div id="demo"> <h1>{{title | uppercase}}</h1> <ul> <li v-repeat="todos" v-on="click: done = !done" class="{{done ? 'done' : ''}}"> {{content}} </li> </ul> </div> var demo = new Vue({ el: '#demo', data: { title: 'todos', todos: [ { done: true, content: 'Learn JavaScript' }, { done: false, content: 'Learn Vue.js' } ] } }) sandbox |
rivetsjs
Цитата:
Пример кода <section id="auction"> <h3>{ auction.product.name }</h3> <p>Current bid: { auction.currentBid | money }</p> <aside rv-if="auction.timeLeft | lt 120"> Hurry up! There is { auction.timeLeft | time } left. </aside> </section> rivets.bind($('#auction'), {auction: auction}) |
Цитата:
Почему у React-а бегут цифры? Там таймаут? Разве вставка происходит не 1 раз? Разве тест не нарушает основной принцип React? Чем больше вирт-DOM тем быстрее должен работать React. Почему для вставки используется $('#reactMountNode')[0] В то время как document.getElementById("mithrilMountNode") ? С каких это пор результаты работы jquery и ванилы приравняли? Не вводи людей в заблуждение, а то ненароком поверят, что скорость работы ангуляра и реакта одинаковая. |
Цитата:
напиши свой адекватный, тогда сравним не надо холивара |
Цитата:
Хочешь чистую тему, не пиши неадекватную отсебятину. Хочешь тесты, сделай тему с тестами. |
nerv_,
Кстати, это форум, а не блог. Если хочешь держать тему чистой, то создай страницу в интернете, а сюда дай ссылку. Заставлять людей молчать и подчиняться твоим требованиям на общем форуме в оффтопике тоже неадекватно. |
|
Цитата:
всего лишь попросил предоставить адекватные на твой взгляд тесты производительности фреймворков |
Цитата:
Можно сравнивать звездолет с самолетом, но самолет не летает в космосе, функция у него такая отсутствует. А сравнивать насколько быстро они стартуют с земли бесполезно. Самолет все равно в космосе летать не станет. Пример: В реакте есть приложение, которое обновляется с помощью потока. Одновременно нужно на странице сделать изменения в разных частях. Вставка(изменение) будет мгновенное. Во ф-ах где нет распределительного диспетчера и оптимизатора дом, вставка будет последовательной. Исходя из этого любой тест абсурден. Больная фантазия автора теста! Исходя из Reconciliation, тестировать циклическую вставку очень тупая идея! Вставка всегда мгновенна, там нечего тестировать, можно во всех фреймворках её прировнять. |
Цитата:
Цитата:
2. понимаю, что тебя очень задело, что реакт не на первом месте, но тесты писал не я. Напиши свои в кот, он будет демонстрировать себя с лучшей стороны. 3. если ты не заметил, то помимо реакта еще как минимум два фреймворка (описанных мною выше) используют виртуальный дум. Есть еще фреймворки, кот. его используют, например, изоморфный Cycle.js. Но времени на обзор у меня сейчас нету. Если хочешь, сам пиши, я не против, даже наоборот :) |
Цитата:
Цитата:
Цитата:
|
nerv_,
Объясни мне пожалуйста почему у меня на странице при подключенном React-е вставляется 500 компонентов(картинка+оберт ка+описание) менее чем за 1 секунду, а в тесте я должен ждать 10 секунд когда вставится 10 - 100 простейших спанов? И не нужно стрелки переводить на то, что тест писал не ты. Если ты не сможешь объяснить то убери тест, если объяснишь то я с удовольствием послушаю. А иначе я буду считать, что ты просто впадаешь в неадекват. |
Вот это вкусность с теневым dom для тех кому не нравится jsx, а тобишь reactjs, но нравится flux.
https://muut.com/riotjs/ |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
l-liava-l,
У react-а гораздо большая сложность в применении flux и разруливании(routing), нежели в простом и понятном jsx. Если я перейду на Fluxxor или riot, то не потому, что мне jsx не нравится, а потому, что всем этим зоопарком в виде flux, dispetcher, router тяжело управлять, т.к. ванилаРеактФлюксРоутинг совершенно неочевиден! |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Если нет, то думаю сам знаешь ответ на вопрос. Зы под "всегда" я имел ввиду постоянно, а не утверждал что этот метод всегда неудобен. Цитата:
Цитата:
|
Цитата:
В случае с архитектурой MVVM код прост, понятен, очевиден: <div if="layer.isOpen"></div> layer.isOpen = true; Цитата:
|
Цитата:
Повторяю вопрос: Цитата:
Цитата:
|
Цитата:
layer.isOpen = true;див откроется? Что произойти то должно? А если мне нужно гораздо больше заложить логики, 1000 строк кода например реализуют множественную замену представлений внутри этого див. Что я должен сделать, написать в разметку всю эту кашу? |
l-liava-l,
nerv_, Вы два веселых "клоуна". Один не договаривает, другой думает, что все понимают о чём он говорит т.к. все знаю ангуляр. Я не понимаю, что вы хотите сказать. И ещё: Цитата:
|
Цитата:
ты, как обычно, свел все к холивару нравиться писать много на реакте? Пожалуйста, я не против. Я никого ни к чему не принуждаю. Об этом упоминал выше. если оглянуться на 3 страницы назад, можно заметить, что ты в эту тему не привнес абсолютно ничего, кроме "ла-ла-ла, я Гозар, а вы все говно" l-liava-l, например, дал ссылку на интересную либу/фреймворк. Я буду продолжать постить сюда обзоры по мере возможности и интересности лично мне, ты можешь продолжать говорить, что "я клоун", а реакт все равно круче :) |
Цитата:
Цитата:
Цитата:
Цитата:
Я офф |
Цитата:
Цитата:
|
Я хочу, чтобы вы подтвердили свои слова чем-то существенным, а не только заявлениями, - "это не я писал" и "неудобно" без объяснений. Почему вы так думаете?
Это сложно? Не, ну если вы не хотите говорить, я из вас вытягивать заколебался. |
Цитата:
|
Цитата:
Цитата:
что при однонаправленном потоке данных, много рутинной работы ложиться на плечи программиста и что эту работу может и должен брать на себя фреймворк Я осознаю, что тем, кто не работал с MVVM это сложно понять. Вы, те, кто работает с реактом, пишите код для синхронизации модели с представлением и наоборот. Зачем? Это рутина. Это может делать фреймворк. Можно сколько угодно кричать, что декларативность отстой, но она экономит время. А время это невозобновляемый ресурс) Допустим, есть у меня декларативный код <div if="layer.isOpen"></div> в ходе работы программы он будет преобразован в императивный - так вами любимый и единственно правильный код if (layer.isOpen) { // div show (псевдокод) } А если нет разницы, зачем писать больше? Потому, что императивность это круто? Потому, что вам нравиться набирать буквы на клавиатуре? Еще 100500 псевдо-причин? Повторяю в сотый раз: я не против, пишите. Я никого не тяну на свою сторону. Меня попросили объяснить, я попытался. Но я уже устал говорить об одном и том же :) Открываете первую страницу данного треда, выбираете любой MVVM и пробуете. У некоторых есть песочницы, вообще красота. Цитата:
Эта непонятная тебе хрень в html называется директивы. Но (самое интересное), фреймворки, о кот. я писал на первой странице, также реализуют и компоненты. Это же слово вам знакомо? Очень на это надеюсь) Не нравятся директивы? Не используй. Описывай все компонентами. ОНИ ТАМ ТОЖЕ ЕСТЬ. Привык к однонаправленному потоку данных? ПОЖАЛУЙСТА. Но, в отличии от реакта эти фреймворки (многие из них) поддерживают не только однонаправленный но и двухнаправленный, и согласно ужасным тестам производительности стоят рядом с реактом. Если бы ты, Гозар, прошел по ссылкам на данные фреймворкт или хотя бы почитал описания, которые я давал на первой странице, подобных вопросов не возникало. Ты же не читал? Вообще ничего. Верно? А у тебя, как у быка красная тряпка перед глазами "реакт не самый быстрый" и подсознательное "я же столько еб*сь, чтобы завести простое туду, так какого лешего и т.п." :) |
Цитата:
Цитата:
Ты читаешь только то, что хочешь видеть, игнорируя все что не подходит под "Gozar бычит": Цитата:
Цитата:
Спасибо за разъяснение стилей :) |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Чем больше кода, тем он становится проще. И ещё. Чем больше кода, тем меньше кода. ;) |
nerv_,
А ты сейчас на что хочешь перейти? Или хочешь остаться на ангуляр. Я для админки хочу подобрать что-нибудь, пусть тяжелое, но чтобы быстро разрабатывалось. Админка будет большая. Возможно со временем очень большая(много компонентов, SPA). На морде я однозначно реакт оставлю, а вот внутрь ресурс мне супербыстрый не нужен. |
Часовой пояс GMT +3, время: 06:34. |