|
|
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
SPA (Single Page App) с React.JS позволяют создавать веб приложения которые практически не отличаются от нативных. Все работает быстро, никаких перезагрузок страницы и т.п. Но! Они требуют написания значительного обьема кода . Нужно писать как-бы два экземпляра кода - один на сервере, второй на клиенте и обеспечивать АПИ взаимодействия между ними. Существует подход который раза в два или более сокращает обьем кода, работ и сложности - при конечном результате - практически таком-же конечном результате. Он добавляет магии (о ней ниже) и убирает разделение на клиент и сервер. На картинке демки такого фреймворка - все выглядит так словно это писалось на жаваскрипте в браузере. Магия. Как все работает: - Когда шелкается кнопка на клиенте - событие перехватывается и пересылается на сервер - Сервер стейтфул, он поддерживает в памяти структуру данных похожую на Риакт компонент - с состоянием и методом рендер. Сервер также хранит виртуальную копию ДОМ браузера. Когда приходит событие - сервер запускает обработчик события. Затем запускает метод рендер. И сравнивает новый ДОМ с тем что был у него в памяти до этого. Формирует ДИФФ, и отправляет разницу браузеру. Все работает очень похоже на риакт, только на сервере. - Клиент получает ДИФФ от сервера, применяет его к своему ДОММ, и все магическим образом обновляется. Преимущества. Простой и краткий код, его меньше чуть ли не в 2 раза и он проще. Можно делать приложения быстрее и дешевле и получать больше бабок . Если делать скажем копию https://www.sql.ru с риактом (или вуе, ангуляром) - нужно будет создать следующие компоненты: Сервер: - Модели работы с Базой (Топик, Коммент и т.п.) - Контроллеры - АПИ на РЕСТ/Сокет/ГрафКЛ - Сериализацию моделей в ЖСОН АПИ Клиент - Запросы к АПИ - Обработка ошибок АПИ - ЖСОН Модели (Топик, Коммент и т.п.) - в явном, либо неявном виде (как часть компонентов, редукс и т.п). - Риакт компоненты (Топик, Коммент и т.п.) - Обработчики событий А с таким фреймворком половину этого кода можно выкинуть, и останется: Сервер: - Модели работы с Базой (Топик, Коммент и т.п.) - Контроллеры - Риакт-подобные компоненты (Топик, Коммент и т.п.) - Обработчики событий Недостатки: Латенси. В отличии от риакта где можно делать мгновенную реакцию на события, с таким подходом всегда будет задержка. Но, на практике, она может быть настолько малой что разница между интерфейсами с мгновенной реакцией и с задержкой будет незамента. Например если сервер и пользователи в штатах - можно уложиться в задержку меньше 200мс если вообще не меньше 100. Пример такого фреймворка , это из него скриншоты с демками, но он к сожалению на Erlang / Elixir Я хотел бы найти что-то похожее на JavaScript/TypeScript, Ruby или на Java/Kotlin Если знаете поделитесь пожалуйста :) П.С. - Метеор.ЖС работает похоже. Да, метеор делает что-то подобное, только наоборот они перенесли все на клиент. И у метеора достоинство что там нет задержки, но недостаток - он сложнее и больше кода чем данный подход.. - GraphQL, Apollo - не имеет никакого отношения к теме. ГрафКЛ это один из вариантов общения по сети, а весь смысл этого подхода в том чтобы убрать сеть в принципе. - Vue Angular - не имеет значения, я везьде упоминал Риакт, но можно с тем-же успехом заменить на любой из них. - Есть Java Wicked, GWT, Vaadin - да, они работают немного похоже, но у них нет виртуального ДОМ. Это половина того что надо, им всем не хватает виртуального дома чтобы стать тем о чем идет реч в этой теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 17:14 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
private, галимый asp.net webforms в 2007-м году по сути работал так, только через постбеки, и как оказалось, это нафик никому не упёрлось. и вот, история повторяется. сначала метеор. то, что он тоже нафик никому не упёрся, никого не волнует, теперь с б и ш на риакте! ахаха.. чото ржу. МММАаааааААГИЯ!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 17:25 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
privateПростой и краткий код, его меньше чуть ли не в 2 раза и он проще. Можно делать приложения быстрее и дешевле и получать больше бабок . да, надо мужикам рассказать во всем мире. а то они того.. тупенькие.. не знают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 17:27 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
private- Сервер стейтфул, он поддерживает в памяти структуру данных похожую на Риакт компонент - с состоянием и методом рендер. Сервер также хранит виртуальную копию ДОМ браузера. Когда приходит событие - сервер запускает обработчик события. Затем запускает метод рендер. И сравнивает новый ДОМ с тем что был у него в памяти до этого. Формирует ДИФФ, и отправляет разницу браузеру. Все работает очень похоже на риакт, только на сервере. - Клиент получает ДИФФ от сервера, применяет его к своему ДОММ, и все магическим образом обновляется.полная путаница. на сервере не надо хранить дом, не надо иметь разницу, это лишняя работа. то что ты ту описываешь - называется серверный рендеринг, но это работает совсем по другому. private- Когда шелкается кнопка на клиенте - событие перехватывается и пересылается на сервердля этого надо написать код js, и не все так просто в перехвате событий их надо назначать, обрабатывать и пр... есть куча элементов, которые реализуются приличным объёмом кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 17:30 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
hVosttда, надо мужикам рассказать во всем мире. а то они того.. тупенькие.. не знают.солидарен на 146% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 17:31 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
авторгалимый asp.net webforms в 2007-м году по сути работал так, только через постбеки, и как оказалось, это нафик никому не упёрлось.Не знаю АСП, но подозреваю что было то-же что и на ГВТ - там не было виртуалного ДОМ и вместо автоматических мутаций их надо было писать вручную. Это не то, я уже упоминал почему это не то в комментах. автордля этого надо написать код js, и не все так просто в перехвате событий их надо назначать, обрабатывать и пр... есть куча элементов, которые реализуются приличным объёмом кода. Посмотри пример по ссылке, там строк тридцать, хоть и на Еликсире но вобщем понятно что происходит. Там просто метку ставишь на элементе куда передавать евент, никакого кода писать не надо <button phx-click="dec" class="minus">-</button> авторна сервере не надо хранить дом, не надо иметь разницу, это лишняя работа. то что ты ту описываешь - называется серверный рендеринг, но это работает совсем по другому. Это не серверный рендеринг, хотя на первый взгляд и похоже. То о чем я говорю совершенно другое. Перечитай еще раз что я описал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 17:41 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
private, такой автокомплит как на твоей картинке, у нас в одном проекте на IceFaces работает. это обычный ажакс код на сервере, по ажакс запросу, вернет html который браузер вставит в нужный div зачем на сервере виртуальный дом и дифф? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 17:52 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
privateТам просто метку ставишь на элементе куда передавать евент, никакого кода писать не надо <button phx-click="dec" class="minus">-</button>-это нечто..... privateЭто не серверный рендеринг, хотя на первый взгляд и похоже. То о чем я говорю совершенно другое. Перечитай еще раз что я описал.многократно перечитывал. полная х.... private<button phx-click="dec" class="minus">-</button>ну вообще-то для избавления от такого phx-click и был придуман атрибут "data-*" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 17:54 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 17:59 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
автортакой автокомплит как на твоей картинке, у нас в одном проекте на IceFaces работает. это обычный ажакс код на сервере, по ажакс запросу, вернет html который браузер вставит в нужный div зачем на сервере виртуальный дом и дифф? Вот именно чтобы не писать весь этот обвес который ты перечислил - для этого и нужен виртуальный дом на сервере с диффом. Вместо всего этого можно было-бы написать примерно такой код как ниже Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 19:19 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
private // Без всяких аджаксов, графкл и прочего обвеса. // И этот код выполняется не на клиенте, а на сервере. Поэтому запрос в базу безопасный. ЭТО СУПЕР! данные между клиентом и сервером передаются с помощью божьей воли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 19:25 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
Посредством разогнанных протонов, передаются даже раньше чем нажата кнопка. Лучше бы подумал - если они таки передаются (примеры на эликсире работают) - а у тебя нет лучшего обьяснения чем божия воля - о чем это говорит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 19:35 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
Потому и нужна копия виртуального дом и ДИФФ на сервере что весь процессинг происходит именно там, а браузер работает лишь как зеркало получая итоговый ДИФФ и синхронизируя свой ДОМ с серверным. Незнаю как более доходчиво написать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 19:41 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
privateЛучше бы подумал - если они таки передаются (примеры на эликсире работают) - а у тебя нет лучшего обьяснения чем божия воля - о чем это говорит?я могу перечислить все способы передачи. но нет ни одного который работает без "обвеса" Вообще "запрос в базу безопасный" это даже не обсуждается, т.к. делать запрос на клиенте - это супер дурость. "Без всяких аджаксов" можно , к примеру это websocket, но это тоже требует "обвес". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 19:46 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
Конкретно в случае Еликсира и автокомплита - на каждое нажатие клавишы будет слаться событие на сервер, сервер делает поиск в базе, рендерит страницу (на самом деле не всю, а оптимально - только фрагмент), сравнивает с текущей копией ДОМ что у него в памяти, видит что поменалась квери и список автокомплита, формирует ДИФФ, шлет по вебсокету на браузер инструкцию как применить этот ДИФФ, браузер применяет ДИФФ, пользователь видит что поиск обновился. Все это происходит автоматически без моего участия, я не знаю, и не пишу никакой обвес, мне вообще без разницы как это случается по божьей воле, вебсоктам или еще как-то. Для меня все это магия которая работает автоматом и в итоге я пишу меньше кода и завершаю проект быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 19:49 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
privateПотому и нужна копия виртуального дом и ДИФФ на сервере что весь процессинг происходит именно там, а браузер работает лишь как зеркало получая итоговый ДИФФ и синхронизируя свой ДОМ с серверным. Незнаю как более доходчиво написать.НАХ...? передать весь html страницы чтоб там найти что-то введённое в input? это ж надо до этого додуматься!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 19:49 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
Вся страница там не передается. Я уже несколько раз обьяснял как именно - если нужно больше деталей - по ссылке есть целая статья и детальные примеры как именно это все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 19:54 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
privateна каждое нажатие клавишы будет слаться событие на сервер,на сервер никакого события не может слаться! На сервер может отправится только строка. privateшлет по вебсокетуну это уже прогресс - нашёл ws. Ещё раз - это называется "серверный рендеринг" и для этого не надо никакой копии DOM на сервере. если тебе нужна эта "магия" - возьми любой fw - и получишь твою фантазию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 19:56 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
privateВся страница там не передается. Я уже несколько раз обьяснял как именно - если нужно больше деталей - по ссылке есть целая статья и детальные примеры как именно это все работает.умные люди передают только введённое значение, и ничего не надо сравнивать в с "копией DOM" на сервере. надо просто сделать запрос(если мы рассматриваем твой вариант с поиском) получить данные - и сформировать html-строку, которую по ws отправить клиенту. И НИ КАКОГО DIFF!!! эту строку можно вставить простым innerHTML. я знаю как это всё работает без всяких статей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 20:02 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
private, так что насчёт WebSharper скажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 20:07 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
что можно обсуждать с дилетантом?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 20:21 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
private Пример такого фреймворка , это из него скриншоты с демками, но он к сожалению на Erlang / Elixir Начал читать... И где там фреймворк? Библиотека, призванная заполнить определённые пробелы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 20:29 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
авторумные люди передают только введённое значение, и ничего не надо сравнивать в с "копией DOM" на сервере. надо просто сделать запрос(если мы рассматриваем твой вариант с поиском) получить данные - и сформировать html-строку, которую по ws отправить клиенту. И НИ КАКОГО DIFF!!! эту строку можно вставить простым innerHTML. я знаю как это всё работает без всяких статей. Конечно можно. В обработчике события вручную описывать какие именно мутации ДОМ нужно произвести. Тыщу лет так делали, и если тебя устраивает это ручное писание - не проблема, продолжай. Но многих это не устраивает, и именно для этого и создали Riakt.JS - чтобы просто менять состояние - а мутация дом случалась автоматически. Ну так вот тут происходит то-же самое, только на сервере. Уже в тысячный раз повторяю - именно для этого и нужна копия виртуальная ДОМ на сервере. Что в отличии от обычного серверного рендеринга про который ты постоянно упоминаешь - тут он используется не только для рендеринга изначального состояния страницы, но также и для мутаций ДОМ. автортак что насчёт WebSharper скажете? Спасибо за ссылку. Я посмотрел но он только для С# и F# - а я их не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 20:36 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
авторНачал читать... И где там фреймворк? Библиотека, призванная заполнить определённые пробелы... Основной фреймворк называется Phoenix, клон Рельсов, ничего особенного. Для него выпускается аддон LiveView - который позволяет вместо обычных контроллеров и темплейтов использовать Phoenix в стиле как-бы серверного реакта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 20:38 |
|
||
|
Огромная продуктивность, в разы меньше и проще кода чем с SPA и React.JS
|
|||
|---|---|---|---|
|
#18+
privateВ обработчике события вручную описывать какие именно мутации ДОМ нужно произвести. Тыщу лет так делали, и если тебя устраивает это ручное писание - не проблема, продолжай. Но многих это не устраивает, и именно для этого и создали Riakt.JS - чтобы просто менять состояние - а мутация дом случалась автоматически. Ну так вот тут происходит то-же самое, только на сервере.какие слова! только для того чтоб прикрыть глупость. privateВся страница там не передается.а что передаётся? весь тэг input? privateно также и для мутаций ДОМ.кажется мутация произошла... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2018, 20:41 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=39748669&tid=1443906]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 506ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...