На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU, ANDLL, fatalist
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> Велосипед ли?
    Есть идея создания фреймворка под задачу, но может уже есть такой?
    Суть идеи:
    подстановка в HTML значений из JSON-ответа.

    Есть верстка:
    ExpandedWrap disabled
      <html>
      <body>
      <div data-rest-url='/test'>
      <p data-json-path='$.name'></p>
      </div>
      </body>
      </html>


    Ответ от сервер по адресу /test:
    ExpandedWrap disabled
      {
      name: 'aaa'
      }


    Итог:
    ExpandedWrap disabled
      <html>
      <body>
      <div data-rest-url='/test'>
      <p data-json-path='$.name'>aaa</p>
      </div>
      </body>
      </html>
    Сообщение отредактировано: foreach -
      1) На 99% состоят из твоего "велосипеда": React и Knockout (Generic и/или Punches)
      2) Примерно на 30% состоят из этого "велосипеда": Vue, Angular, React & Redux, Backbone, Ember, Aurelia, etc...

      Итог: Бери всё, что включает в себя
      а) Cлова "framework" или "MVVM/MVC/MVP"
      б) Не начинается с букв "Jqu"
      в) Не заканчивается на "ery"

      и ты 100% получишь искомое :whistle:

      Добавлено
      Чуть подробнее:
      1) Это библиотеки, которые реализуют только связь между V и VM, по ходу дела предоставляя шаблонизацию. Отличия только в способе рендера:
      1.1) React использует виртуальный абстрактный DOM для построения реального дерева и дифф с ререндером компонентов для отслеживания изменений. Модно, молодёжно и очень быстро. Правда весь мир 10 лет разделял логику и представление, а модное и молодёжное движение решило что это путь в никуда. Да и собрать по-нормальному можно только через вебпак, что есть настолько большое извращение, что аж круто, но руки бы поотрывать тому, кто его придумал.
      1.2) Knockout использует шаблонизацию на самом DOM и объекты-обсерверы для отслеживания изменений. Т.к. эти штуки очень мощные (т.е. учитывают блокировку рекурсии, учитывают контекст компьютед-функций и прочего) довольно медленно стартует. Но используя эту штуку и зная нормально JS можно изобрести любой "фреймворк", повторив его синтаксис почти что с нуля. Самое мощное решение с самым чистым кодом на выхлопе что есть на данный момент.

      2) Тупо монстры, где V-VM лишь одна из составляющих
      2.1) Vue - огрызок с плюшками, типа лайтовая версия "N фреймворка" для ньюби
      2.2) Angular - свой "путь ниндзя", довольно прикольный и поковыряться стоит, можно сразу смотреть Angualar 4+, т.к., подозреваю, что через пару месяцев уже Angular 10 зарелизится... :jokingly:
      2.3) Redux - стероиды для реакта
      2.4) Backbone - прадедушка ангулара
      2.5) Ember - уродливый прадедушка ангулара, но зато зашибает всех одним мизинцем
      2.6) Aurelia - то, во что можно превратить Knockout и то, каким должен быть Vue, а не тот урезанный огрызок, что там сейчас. Безумно элегантно, безумно красиво... и сложно. Переименованный Durandal и то, чем мог бы быть Angular 2 (потом разраб оттуда ливнул, переименовал свой Durandal в Aurelia и завелосипедил V + VM что держалась на Knockout). Супер штука, но не взелетла (JSники ниасилили), так что можно считать его полумёртвым.

      Добро пожаловать в то, где обитают JS-ники.
        Цитата Serafim @
        Правда весь мир 10 лет разделял логику и представление, а модное и молодёжное движение решило что это путь в никуда

        Пааазвольте! :) Логику представления и само представление вполне можно (а может и нужно) хранить вместе 8-)

        Добавлено
        Цитата Serafim @
        можно сразу смотреть Angualar 4+

        Четверка еще не релизнулась же.

        Цитата Serafim @
        подозреваю, что через пару месяцев уже Angular 10 зарелизится... :jokingly:

        Ну, они перешли на модную со времен фирефокса систему "на каждый чих - новая версия". Главное что б не было такой разницы, как между 1.х и 2.х

        Добавлено
        foreach, если простыми словами, то тебе нужно разделение модели и представления. Это то, что тебе со страшными аббревиатурами сказал Serafim :D То есть о том, что бы формировать верстку на сервере придется забыть (и слава б-гу!), теперь сервер отвечает за данные, а за отрисовку оных отвечает исключительно клиент. Если хочется написать свой велик, и просто посмотреть как оно будет работать, то можно на том же jQuery на коленке что-то наваять. Если нужно что-то, что будет не просто разделять модель и вью, а еще и апдейтить вью при изменениях модели, то весь ворох фреймворков и библиотек тебе в руки, чуть выше все расписано. От себя добавлю, что любой фреймворк имеет более высокий порог входа, нежели библиотека, поэтому на "просто пощупать" рекомендую React - это библиотека, и если люди не врут, то более-менее прямо ее использовать можно уже на второй день, как взял в руки. Это не ангуляр, в который неделями с матом въезжать приходится...
          Я всё равно всеми руками за нокаут, он ещё проще и удобнее реакта :tong:
            Цитата Serafim @
            Я всё равно всеми руками за нокаут, он ещё проще и удобнее реакта :tong:

            Ты, похоже, единственный, кто его использует :) Реально больше практически нигде не встречал упоминаний о нем.
              Да нет, весь майкрософт на нём сидит, кусок яндекса и небольшая толика рамблера (не без моего активного участия) :-? С другой стороны буквально только что тред про него в трендах 2017 замутился: https://habrahabr.ru/company/ruvds/blog/319...omment_10001842 видишь, не я один такой =)

              Просто есть вещи распиаренные, а есть не рекламируемые ;) Взять хотя бы Vue - объективно, уродливый огрызок нокаута, но при этом "в тренде".

              Добавлено
              Прошу заметить, что я ни слова не сказал, ни про реакт, ни про ангулар и прочие "модные штуки", т.к. в них есть профит, всё зависит от прикладной задачи.
                Цитата Serafim @
                весь майкрософт

                Лишний повод насторожится :D

                Цитата Serafim @
                кусок яндекса

                Какой именно, если знаешь?

                Цитата Serafim @
                Прошу заметить, что я ни слова не сказал, ни про реакт, ни про ангулар и прочие "модные штуки", т.к. в них есть профит, всё зависит от прикладной задачи.

                ч0рт, твой профиль угнали, да? :D
                  Цитата Астарот @
                  Какой именно, если знаешь?

                  Вроде бы карты =) Год назад у нас доклад даже проводили: https://habrahabr.ru/company/rambler-co/blog/279771/

                  Добавлено
                  Цитата Астарот @
                  ч0рт, твой профиль угнали, да?

                  Да нет, очевидно, что даже смысла говорить про это нет и так всем всё ясно :crazy:
                    Цитата Serafim @
                    Вроде бы карты =)

                    С одной стороны рекомендация! :) А с другой - блин, а чего они такие тормозные? :D

                    Цитата Serafim @
                    Да нет, очевидно, что даже смысла говорить про это нет и так всем всё ясно :crazy:
                    Ну, раньше ты был куда категоричнее :D
                      Цитата Астарот @
                      Ну, раньше ты был куда категоричнее

                      Мне крайне не нравится костыли ради костылей. Чуваки сами придумывают себе проблемы и сами выдумывают правила "это сюда, а это сюда, иначе не будет работать". На нокауте можно повторить соглашения и поведение и ангулара, и реакта, и аурелии, вообще кого угодно. Это просто библиотека, которая облегчает самую тяжёлую часть работы - связь V+VM, но обратное невозможно, просто потому что сабжи сдержаны рамками надуманных соглашений и даже правил об именовании переменных (камень в огород первого ангулара).

                      По-этому я дальше буду продолжать считать, что ничего проще и удобнее:
                      ExpandedWrap disabled
                        class Any {
                          blabla = 'lemon squeezy';
                        }
                         
                        class Some {
                          message = 'Izi pizi';
                          any = new Any;
                        }
                         
                        ko.applyBindings(new Some, app);
                         
                        //
                        <div id="app">{{ message }} {{ any.blabla }}</div>

                      Никто реализовать не смог (намекаю, что тут ровно одна строчка от нокаута, остальное чистый js).

                      Так лучше?
                        Цитата Serafim @
                        Мне крайне не нравится костыли ради костылей. Чуваки сами придумывают себе проблемы и сами выдумывают правила "это сюда, а это сюда, иначе не будет работать". На нокауте можно повторить соглашения и поведение и ангулара, и реакта, и аурелии, вообще кого угодно. Это просто библиотека, которая облегчает самую тяжёлую часть работы - связь V+VM, но обратное невозможно, просто потому что сабжи сдержаны рамками надуманных соглашений и даже правил об именовании переменных (камень в огород первого ангулара).

                        Фреймворки все же решают еще кучу других задач все же. Связь вьюшки с моделью лишь одна из них. Di, модули, роутинг, фильтры и прочая, прочая, прочая... Конечно это все отбивается микролибами, но на выходе получается винегрет, и получаем туже проблему наоборот - вместо того, что бы знать один фрейм нужно изучить произвольный набор чего поменьше.
                          Ну это да. Я бы с удовольствием обменял нокаут на какой-нибудь вменяемый фрейм. Но, увы, в мире JS таких нет, либо огрызки, реализующие идеально что-то одно, вроде нокаута. Либо костыли, которые много, но через пень-колоду, вроде ануглара или редакса, при этом, сравнивая с фуллстек бекендом - теже самые огрызки. Так что я выбираю именно первый вариант, т.к. это самая сложная часть, разве что за исключением ORM, которых под клиентский JS вообще не существует, тупо потому что "ниасилили". А как работать с беком проксируя сквозь IndexedDB какую-нибудь - уже сам развлекайся.

                          Добавлено
                          Фронтэнд - боль
                            Цитата Serafim @
                            разве что за исключением ORM

                            Вот уж что предпочитаю избегать - так это orm. Ну его нафиг...

                            Цитата Serafim @
                            которых под клиентский JS вообще не существует

                            Ну, срастить язык с утиной типизацией и данные из БД, имеющие жесткий тип, да еще без третьего промежуточного звена... :) Не уверен, что эту задачу вообще стоит решать.

                            Цитата Serafim @
                            Фронтэнд - боль

                            А где не боль? :) Везде свои боляки, везде свои углы.
                              Цитата Астарот @
                              Не уверен, что эту задачу вообще стоит решать.

                              Да ладно, вон под пых и Доктрина, и Пропел, и Элоквинт, и ещё чёрте знает что. Пусть и без утиной типизации язык, но тоже самое скрещивание динамики и строгости. Более того - тот же эктиврекорд вообще жить не может на языках без нормального метапрограммирования.

                              Цитата Астарот @
                              А где не боль?

                              О, есть такие места, куда приходишь просто отдохнуть и получить удовольствие от кода. Но ты ведь всё равно не поверишь, нет? :huh:
                                Цитата Serafim @
                                О, есть такие места, куда приходишь просто отдохнуть и получить удовольствие от кода. Но ты ведь всё равно не поверишь, нет? :huh:

                                Так ты скажи где такие :)

                                Цитата Serafim @
                                Да ладно, вон под пых и Доктрина, и Пропел, и Элоквинт, и ещё чёрте знает что. Пусть и без утиной типизации язык, но тоже самое скрещивание динамики и строгости. Более того - тот же эктиврекорд вообще жить не может на языках без нормального метапрограммирования.

                                Ты не забывай, что у пыха нутро вполне себе расширябельное и писано вовсе не на нем же. То есть какой-нибудь PDO как раз по сути и занят тем, что бы "получить из БД и куда-то смапить", и там под капотом все при типах и по-взрослому. А уже полученные данные прокинуть в пых дело техники. В случае с
                                Цитата Serafim @
                                ORM, которых под клиентский JS

                                у тебя такой прослойки по сути нет - БД с одной стороны и не расширябельный js браузера с другой. Эта задача в общем случае не решается вообще, поскольку драйверов к базам в браузер пока никто затащить не додумался :)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0533 ]   [ 16 queries used ]   [ Generated: 29.03.24, 04:52 GMT ]