Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.187.103] |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Есть идея создания фреймворка под задачу, но может уже есть такой?
Суть идеи: подстановка в HTML значений из JSON-ответа. Есть верстка: <html> <body> <div data-rest-url='/test'> <p data-json-path='$.name'></p> </div> </body> </html> Ответ от сервер по адресу /test: { name: 'aaa' } Итог: <html> <body> <div data-rest-url='/test'> <p data-json-path='$.name'>aaa</p> </div> </body> </html> |
Сообщ.
#2
,
|
|
|
1) На 99% состоят из твоего "велосипеда": React и Knockout (Generic и/или Punches)
2) Примерно на 30% состоят из этого "велосипеда": Vue, Angular, React & Redux, Backbone, Ember, Aurelia, etc... Итог: Бери всё, что включает в себя а) Cлова "framework" или "MVVM/MVC/MVP" б) Не начинается с букв "Jqu" в) Не заканчивается на "ery" и ты 100% получишь искомое Добавлено Чуть подробнее: 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 зарелизится... 2.3) Redux - стероиды для реакта 2.4) Backbone - прадедушка ангулара 2.5) Ember - уродливый прадедушка ангулара, но зато зашибает всех одним мизинцем 2.6) Aurelia - то, во что можно превратить Knockout и то, каким должен быть Vue, а не тот урезанный огрызок, что там сейчас. Безумно элегантно, безумно красиво... и сложно. Переименованный Durandal и то, чем мог бы быть Angular 2 (потом разраб оттуда ливнул, переименовал свой Durandal в Aurelia и завелосипедил V + VM что держалась на Knockout). Супер штука, но не взелетла (JSники ниасилили), так что можно считать его полумёртвым. Добро пожаловать в то, где обитают JS-ники. |
Сообщ.
#3
,
|
|
|
Цитата Serafim @ Правда весь мир 10 лет разделял логику и представление, а модное и молодёжное движение решило что это путь в никуда Пааазвольте! Логику представления и само представление вполне можно (а может и нужно) хранить вместе Добавлено Цитата Serafim @ можно сразу смотреть Angualar 4+ Четверка еще не релизнулась же. Цитата Serafim @ подозреваю, что через пару месяцев уже Angular 10 зарелизится... Ну, они перешли на модную со времен фирефокса систему "на каждый чих - новая версия". Главное что б не было такой разницы, как между 1.х и 2.х Добавлено foreach, если простыми словами, то тебе нужно разделение модели и представления. Это то, что тебе со страшными аббревиатурами сказал Serafim То есть о том, что бы формировать верстку на сервере придется забыть (и слава б-гу!), теперь сервер отвечает за данные, а за отрисовку оных отвечает исключительно клиент. Если хочется написать свой велик, и просто посмотреть как оно будет работать, то можно на том же jQuery на коленке что-то наваять. Если нужно что-то, что будет не просто разделять модель и вью, а еще и апдейтить вью при изменениях модели, то весь ворох фреймворков и библиотек тебе в руки, чуть выше все расписано. От себя добавлю, что любой фреймворк имеет более высокий порог входа, нежели библиотека, поэтому на "просто пощупать" рекомендую React - это библиотека, и если люди не врут, то более-менее прямо ее использовать можно уже на второй день, как взял в руки. Это не ангуляр, в который неделями с матом въезжать приходится... |
Сообщ.
#4
,
|
|
|
Я всё равно всеми руками за нокаут, он ещё проще и удобнее реакта
|
Сообщ.
#5
,
|
|
|
Цитата Serafim @ Я всё равно всеми руками за нокаут, он ещё проще и удобнее реакта Ты, похоже, единственный, кто его использует Реально больше практически нигде не встречал упоминаний о нем. |
Сообщ.
#6
,
|
|
|
Да нет, весь майкрософт на нём сидит, кусок яндекса и небольшая толика рамблера (не без моего активного участия) С другой стороны буквально только что тред про него в трендах 2017 замутился: https://habrahabr.ru/company/ruvds/blog/319...omment_10001842 видишь, не я один такой =)
Просто есть вещи распиаренные, а есть не рекламируемые Взять хотя бы Vue - объективно, уродливый огрызок нокаута, но при этом "в тренде". Добавлено Прошу заметить, что я ни слова не сказал, ни про реакт, ни про ангулар и прочие "модные штуки", т.к. в них есть профит, всё зависит от прикладной задачи. |
Сообщ.
#7
,
|
|
|
Цитата Serafim @ весь майкрософт Лишний повод насторожится Цитата Serafim @ кусок яндекса Какой именно, если знаешь? Цитата Serafim @ Прошу заметить, что я ни слова не сказал, ни про реакт, ни про ангулар и прочие "модные штуки", т.к. в них есть профит, всё зависит от прикладной задачи. ч0рт, твой профиль угнали, да? |
Сообщ.
#8
,
|
|
|
Цитата Астарот @ Какой именно, если знаешь? Вроде бы карты =) Год назад у нас доклад даже проводили: https://habrahabr.ru/company/rambler-co/blog/279771/ Добавлено Цитата Астарот @ ч0рт, твой профиль угнали, да? Да нет, очевидно, что даже смысла говорить про это нет и так всем всё ясно |
Сообщ.
#9
,
|
|
|
Цитата Serafim @ Вроде бы карты =) С одной стороны рекомендация! А с другой - блин, а чего они такие тормозные? Цитата Serafim @ Ну, раньше ты был куда категоричнее Да нет, очевидно, что даже смысла говорить про это нет и так всем всё ясно |
Сообщ.
#10
,
|
|
|
Цитата Астарот @ Ну, раньше ты был куда категоричнее Мне крайне не нравится костыли ради костылей. Чуваки сами придумывают себе проблемы и сами выдумывают правила "это сюда, а это сюда, иначе не будет работать". На нокауте можно повторить соглашения и поведение и ангулара, и реакта, и аурелии, вообще кого угодно. Это просто библиотека, которая облегчает самую тяжёлую часть работы - связь V+VM, но обратное невозможно, просто потому что сабжи сдержаны рамками надуманных соглашений и даже правил об именовании переменных (камень в огород первого ангулара). По-этому я дальше буду продолжать считать, что ничего проще и удобнее: 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). Так лучше? |
Сообщ.
#11
,
|
|
|
Цитата Serafim @ Мне крайне не нравится костыли ради костылей. Чуваки сами придумывают себе проблемы и сами выдумывают правила "это сюда, а это сюда, иначе не будет работать". На нокауте можно повторить соглашения и поведение и ангулара, и реакта, и аурелии, вообще кого угодно. Это просто библиотека, которая облегчает самую тяжёлую часть работы - связь V+VM, но обратное невозможно, просто потому что сабжи сдержаны рамками надуманных соглашений и даже правил об именовании переменных (камень в огород первого ангулара). Фреймворки все же решают еще кучу других задач все же. Связь вьюшки с моделью лишь одна из них. Di, модули, роутинг, фильтры и прочая, прочая, прочая... Конечно это все отбивается микролибами, но на выходе получается винегрет, и получаем туже проблему наоборот - вместо того, что бы знать один фрейм нужно изучить произвольный набор чего поменьше. |
Сообщ.
#12
,
|
|
|
Ну это да. Я бы с удовольствием обменял нокаут на какой-нибудь вменяемый фрейм. Но, увы, в мире JS таких нет, либо огрызки, реализующие идеально что-то одно, вроде нокаута. Либо костыли, которые много, но через пень-колоду, вроде ануглара или редакса, при этом, сравнивая с фуллстек бекендом - теже самые огрызки. Так что я выбираю именно первый вариант, т.к. это самая сложная часть, разве что за исключением ORM, которых под клиентский JS вообще не существует, тупо потому что "ниасилили". А как работать с беком проксируя сквозь IndexedDB какую-нибудь - уже сам развлекайся.
Добавлено Фронтэнд - боль |
Сообщ.
#13
,
|
|
|
Цитата Serafim @ разве что за исключением ORM Вот уж что предпочитаю избегать - так это orm. Ну его нафиг... Цитата Serafim @ которых под клиентский JS вообще не существует Ну, срастить язык с утиной типизацией и данные из БД, имеющие жесткий тип, да еще без третьего промежуточного звена... Не уверен, что эту задачу вообще стоит решать. Цитата Serafim @ Фронтэнд - боль А где не боль? Везде свои боляки, везде свои углы. |
Сообщ.
#14
,
|
|
|
Цитата Астарот @ Не уверен, что эту задачу вообще стоит решать. Да ладно, вон под пых и Доктрина, и Пропел, и Элоквинт, и ещё чёрте знает что. Пусть и без утиной типизации язык, но тоже самое скрещивание динамики и строгости. Более того - тот же эктиврекорд вообще жить не может на языках без нормального метапрограммирования. Цитата Астарот @ А где не боль? О, есть такие места, куда приходишь просто отдохнуть и получить удовольствие от кода. Но ты ведь всё равно не поверишь, нет? |
Сообщ.
#15
,
|
|
|
Цитата Serafim @ О, есть такие места, куда приходишь просто отдохнуть и получить удовольствие от кода. Но ты ведь всё равно не поверишь, нет? Так ты скажи где такие Цитата Serafim @ Да ладно, вон под пых и Доктрина, и Пропел, и Элоквинт, и ещё чёрте знает что. Пусть и без утиной типизации язык, но тоже самое скрещивание динамики и строгости. Более того - тот же эктиврекорд вообще жить не может на языках без нормального метапрограммирования. Ты не забывай, что у пыха нутро вполне себе расширябельное и писано вовсе не на нем же. То есть какой-нибудь PDO как раз по сути и занят тем, что бы "получить из БД и куда-то смапить", и там под капотом все при типах и по-взрослому. А уже полученные данные прокинуть в пых дело техники. В случае с Цитата Serafim @ ORM, которых под клиентский JS у тебя такой прослойки по сути нет - БД с одной стороны и не расширябельный js браузера с другой. Эта задача в общем случае не решается вообще, поскольку драйверов к базам в браузер пока никто затащить не додумался |