Finom
+27

Восхищаюсь вашей стойкостью!

Finom
0

Я бы еще к антипаттернам добавил очевидный литерал массива и не очень очевидный, но распространенный антипаттерн возврата обработчика при каждом рендеринге.


const onClickMe = (name) => (event) => doSomething(name);
//...
<SomeComponent something={['foo', 'bar']} onClick={onClickMe('baz')} />
Finom
+1

Скорость загрузки, в большей степени, будет зависить от длины цепочки зависимостей, а не только от скорости отдачи файлов HTTP/2. Иначе придется включать прелоад всех модулей, а это требует тулзы подобной бандлеру. В этом не очень много смысла.

Finom
0
Есть также огромный аутлет, где можно купить по настоящим скидкам брендовые шмотки.

Где и как он называется? Из дешевых брендовых аутлетов знаю только TKMaxx, которого нет в Чехии, к сожалению.

Finom
0

Обновил описание в репозитории, спасибо.

Finom
0

Это не просто Hello World, это — quick and dirty Hello World. Такой код никогда не должен попасть в продакшн, уж лучше на jQuery намакаронить.


Я так понимаю, у вас достаточно мало знаний относительно React. Тогда, давайте прекратим эту беседу.

Finom
+1

Вы на полном серьезе вырываете из контектста раздела "Trying Out React" эту фразу?

Finom
0

Ну такое. Не только выучить, но и заюзать это всё не так просто. У многих возникает шок от того, что веб разработчик, оказывается. должен знать NodeJS, даже если пишет только под фронт. Это я не говорю об остальном инструментарии. Если вы осилили (изучили и смогли использовать) все необходимые технологии за пару месяцев, примите моё уважение.

Finom
0
Лучше оптимизирует рендеринг?

Если вы хорошо разбираетесь в React можем подискутировать (так как я и сам в нем неплохо разбираюсь). Если нет, я бы не хотел в этом посте описывать принципы рендеринга в Реакте, есть масса статей на эту тему.


уже давно неправда и не надо поддерживать этот миф.

Поговорите с любым начинающим разработчиком, для начала. Немало людей забивают на веб разработку, узнав о том, сколько вего им нужно знать, чтоб написать грамотный Hello World, используя один из мейнстримных фреймворком.

Finom
0

В общем, всё вышесказанное, можно свести к "Я умею что-то на jQuery, но хочу делать лучше" и таких разработчиков немало. Причем, остальное (сборка, пакеты, ECMAScript Stage X) можно учить постепенно, по-прежнему используя Matreshka.js.

Finom
0
Новички скорее всего будут смотреть на React, обучающих видео и статей по нему немало

Есть такое понятие, как JavaScript усталость. Слишком много всего нужно знать помимо, собственно Реакта: сборка, стор, оптимизация рендеринга (чем, к сожалению, часто пренебрегают).


Бекендщики с большей вероятностью посмотрят на Angular2, потому что там есть DI, MVC и типизация

Смотря кто. По моему опыту общения с разработчиками, бек-ендщики (например, PHP-шники), как правило, не уделяют много внимания фронт-енду и обходятся неструктурированным кодом на jQuery. React/Angular/Vue — это то, что их не интересует (это не касается людей, пишуих под NodeJS).

Finom
–1

Цитирую с сайта:


Для кого этот фреймворк?


  • Для новичков в веб программировании, желающих освоить разработку одностраничных приложений
  • Для full-stack разработчиков, для которых front-end разработка стоит на втором месте после back-end
  • Для всех тех, кого не устраивает текущий порядок вещей во Вселенной веб разработки
Finom
0

Как работать с DOM/BOM?

Finom
+1

На ноде уже есть async/await.

Finom
0

Я думал, что вы имеете в виду, что можно как-то обойтись без настройки nginx вовсе. А так, не вижу смысла сёрфить статику нодой если есть возможность сёрфить её быстрее.

Finom
0

Сходу даже не пойму, как настроить тулзу для нескольких доменов.

Finom
+2

Для поддержки старых браузеров юзают Babel :)


Да и чего вас это так возмущает? Например, когда почти все использовали Кофескрипт, он мне не нравился и я его просто не использовал.

Finom
0

Вы удивитесь, но ES2015 поддерживается всеми современными браузерами. С некоторыми оговорками, конечно же (например, файерфокс не умеет так: for(const x of y) {}, прриходится объявлять переменную с помощью let и юзать eslint-disable-line с конфигом airbnb).

Finom
0

Где вы были раньше? :)

Finom
0

Да, я знаю, что сделаю (по крайней мере, в общих чертах). Спасибо за адекватную критику.

Finom
0

Спасибо, подумаю над этим. У Evan You можно многому научиться, он большой молодец.

Finom
0

Мне не удалось попасть на главную TodoMVC около двух лет назад, я так и забил на это :)
Сейчас не вижу профита размещения у них приложения TodoMVC, так как оно потеряется в куче других, а у меня отпадет возможность оперативно менять документацию, код и пр.


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


Слова "самый простой", простите, когда вы говорите это — вы сразу попадаете в категорию болтунов

Ну это как посмотреть. Это мой стиль изложения материала, записывать меня в разные категории — ваше право. Если у вас есть примеры хорошего, на ваш взгляд, и эффективного (в плане привлечения пользователей) изложения, дайте ссылку на автора. Приставка "во Вселенной" должна, по идее, своей утрированностью смягчать слова "самый простой".

Finom
+1
  • Не нужно прыгать с места в карьер, используя NPM, Webpack и пр (хотя, можно).
  • Можно объявлять двустороннее связывание с помощью селекторов (селекторы умеют юзать все).
  • Нет многословной теоретизации, есть одно правило: делаешь кусочек приложения (например, форму), объяви для этого класс и размести его в отдельном файле (ученикам будет понятно, зачем нужна модульность).
  • Документация настаивает на использовании ECMAScript 2015, который через год-два будут знать абсолютно все (сейчас многие противятся прогрессу)
  • Реактивность (например, поле формы, зависит от свойства А, свойство А от свойства Б, свойство Б от свойства В, свойство В зависит от другого поля формы: при изменении второго поля по цепочке изменятся свойства и первое поле формы). Читайте о методах bindNode и calc. Плюс к этому, можно навешать обработчик события изменения свойства, для того, чтоб запустить кастомный код (например, отправить запрос на сервер). Читайте о методах on, off, trigger

Самое главное: это чистый JavaScript. Никакого расширения синтаксиса языка разметки.


Если это дейтсительно не ирония, вы не первый, кто выбрал Matreshka.js для обучения.

Finom
+3

Вы писали этот комментарий пять минут, я писал Matreshka.js четыре года. Уж поверьте, за это время я многое обдумал :)

Finom
–1

За тем же, зачем вообще используют фреймворки: для разделения логики, уменьшения количества кода и пр. Комментарии действительно ни о чем. Возможно, небольшой туториал частично ответит на ваш вопрос.

Finom
–1
какой именно модуль вам интересен?

Ни какой.


вы меня с кем-то путаете, посмотрел свои комментарии, это первый ваш пост, в котором я есть))

Значит, магия (на самом деле нет, и я вижу, что вы заново зарегистрировались относительно недавно).

Finom
–1

Зашел на ваш Гитхаб и… я тоже задался вопросом "зачем", просматривая проекты, которые вы сделали. Я ни в коем случае ни хочу сказать, что ваши решения плохи, просто не понимаю, почему вы ходите в каждый пост о Matreshka.js и выясняете со мной отношения. Если мне не интересно, что делаете вы, я не буду вас убеждать в чем-то. А я удостаиваюсь такой чести уже не первый раз.

Finom
–1

Ух, сложно. Это фреймворк для студий, позволяющий экономить деньги на найме специалистов и фреймворк для разработчиков, позволяющий быстро начать что-то делать, не используя сложные современные решения — это основная задача фреймворка. Зайдите на сайт и прочтите подробности, не буду копипастить.

Finom
–1

Циклы, условные операторы и прочая логика в HTML — антипаттерн из-за, того, что их сложно дебажить. В JS если что-то упустил (опечатался, не определил переменную), узнаешь моментально.

Finom
+1

Пускай. Веб разработка уже давно пережила это. Если сильно хочется смешать JS и HTML, то JSX — лушее, что можно придумать, так как это не "HTML в который добавили логику", а "JavaScript с дополнительным синтаксисом".

Finom
0

if/else в виде атрибутов — антипаттерн. А так, да, без создания класса, либо экземпляра класса не обойтись.

Finom
+2

Ну, будем честными, можно вообще на всё забить и использовать React/Redux.

Finom
+1

Я не работал с библиотекой, о которой вы говорите. Я так порнимаю, что речь идет об автоматическом рендеринге коллекций, верно? Можете пролистать в самый конец этого поста, там типичный пример создания простой коллекции с её рендерингом. Документация к классу Matreshka.Array тут.

Finom
–1

У нас с Вами всё время возниакют споры, касающиеся двух методов. Сейчас они работают немного по-другому, гляньте переработанное описание bindNode и calc (ниже описание флагов с объяснениями) и исходный код.


Благодаря тому, что фреймворк переписан с нуля и разбит на сотню модулей (я не считал, но примерно, так), вносить изменения, касающиеся оптимизаций можно намного проще, чем раньше. Я буду рад, если обратите моё внимание на какие-нибудь недочеты.

Finom
–1

Условных байндингов в шаблонизаторе нету, иначе бы получился "очередной Ангуляр, но лучше". Байндинги должны быть в JavaScript коде (bindNode), за исключением самых простых (parseBinsings).

Finom
0

Да, там много всяких улучшений. Например calc и bindNode юзают debounce по умолчанию. Если обновите тест, буду благодарен.

Finom
0

Под конец, в спешке, белиберду написал, сорри. Перефразирую: юзеры так считают, не я.

Finom
+3

Наверно, стоило применить известную практику, которую я использовал в других постах о фреймворке "код для привлечения внимания", которую я, как оказалось, ошибочно считал неэффективной. В следующих постах исправлюсь.