Не знать конкретное поведение в такой ситуации – не проблема. Не знаешь, как будет работать такой код? Просто напиши другой, про который знаешь.
Я вот не знал, как будет работать такой код. Разобрался и поделился с сообществом тем, что на мой взгляд может быть кому-то полезно. А мог бы написать другой код, про который знаю, и кто-то мне бы потом рассказывал, что, мол, если бы я начинал с Паскаля, мне не пришлось бы изобретать велосипеды.
Хотелось бы напомнить, что бОльшую часть истории языка Javascript в нём в принципе не было такой сущности, как class, и разработчикам принципиально не нужно было знать поведение системы в таких ситуациях
Не конфликта ради, а чтобы дополнить статью — можете помочь найти ссылку на документацию по Javascript, в которой бы хотя бы нечётко указывалось на такое поведение?
Я ни в коей мере не считаю себя специалистом высокого класса, но я изучил достаточно много книг и статей, связанных с фронтенд-разработкой, и я не разу не встречал информации по описанной мной теме
Мне показалось, или вы использовали фразу «экономят на сотрудниках» применительно к самой высокооплачиваемой сфере на постсоветском пространстве? (Не считая сферы распила бюджетов)
Как мне кажется, от джуна ждут того, что он весьма старательно готовился к собеседованию и его теоретические познания свежи и не успели замутниться опытом. А вот сеньоров, например, по моему опыту по теоретическим вопросам гоняют значительно меньше
Во-первых, npm — не сборщик. Раз уж вы используете pip, npm тоже не должен быть под запретом :)
Во-вторых, я как будто вернулся в свой 2011й, с статический генерацией HTML как в PHP.
А главная моя претензия даже не к Вам, а к авторам Jinja, потому что ваш файл myapp/templates/index.html — это невалидный HTML, и я не понимаю, почему у него оставили формат файла .html. Один из моих старых глупых принципов — это то, что html файл можно открыть в браузере и он хотя бы попытается показать своё содержимое
Вот у вас есть state. Большой, развесистый, с кучей комбинированных редюсеров. У вас или будет 2 куска обработки одного события в разных файлах с разными редюсерами, и потом из результатов их работы будет собираться единый стейт, или же будет один метод, в котором будет описано полное преобразование стейта в одной функции. В redux традиционный подход с switch-case — просто неплохо работающий вариант. Требование к его реализации только одно — newState = reducer(oldState, action). А внутри можно и к dom обращаться, и к сети, и 3d рисовать. Хоть и не стоит.
В традиционной реализации redux есть проблема. И если многие считают проблемой большое количество бойлерплейта и констант, то я считаю проблемой линейную сложность редюсеров от количества экшнов. Если у тебя есть 500 разных типов action, то store.dispatch каждый раз будет делать 500 сравнений ссылок на строку action type
А «Используйте TypeScript» это глупый максимализм. Несмотря на мои определенные к нему симпании, typescript и javascript — разные языки программирования. Вы ведь не приходите в посты про python и не говорите там «Используйте C#»?
Меня тоже всегда убивало это месиво из switch-case
Решение классное, простое и грамотное. Но в традиционном стиле redux его бы надо было написать как middleware
Что-то в виде:
const functionalReducerMiddleware = store => next => action => {
if (action.func) return action.func(next)
else return next
}
Хотя вообще я бы если интегрировал такое решение, как-то гарантировал бы, что action.type у таких штук будет уникальный и больше нигде не используемый, чтобы ни у кого не пришло в голову обработать такой экшн ещё и в редюсере
Где-то года 2 назад в репозитории react-redux ребятки писали, что не нужно стесняться использовать connect. Раньше и правда рекомендовалось использовать несколько «контейнеров», подключенных черех connect, и пробрасывать дочерние пропсы через React компоненты. Сейчас создатели заявляют, что connect достаточно производителен, чтобы использовать его (без фанатизма) в больших количествах
Вы своим решением предлагаете компонентам-пользователям состояния следить за изменениями в состоянии самостоятельно — через subscribe на изменения. Именно от этого уходил React, например. React компонентам плевать на то, откуда прилетело изменение, они знают только о факте изменения состояния и перерисовываются на основании свежего изменения. Но вообще subscribe у redux есть, если очень хочется
Вы можете заметить даже по этой статье, что не так уж сложно реализован стейт-менеджмент у Redux. По ограничениям — на нашем проекте достаточно комфортно себя чувствует себя модель в 70кб данных и ~300 условиями в reducers. А реализация redux по моему скромному опыту для больших состояний оказывается удобнее, чем паб-саб
Преобразование null и undefined к bool использовать довольно удобно во многих местах.
Например в React.js null и undefined это допустимые значения, не рендерящие ничего, и зачастую используется выражение:
Товарищи, мне эта тема кажется подходящей для моего вопроса. Задача — с помощью esp8266 скоммутировать электропечь для сауны. 3 фазы, 380V, ~12кВт мощности. Может кто-нибудь пожалуйста тыкнуть меня носом в гугл в правильном направлении?
Я вот не знал, как будет работать такой код. Разобрался и поделился с сообществом тем, что на мой взгляд может быть кому-то полезно. А мог бы написать другой код, про который знаю, и кто-то мне бы потом рассказывал, что, мол, если бы я начинал с Паскаля, мне не пришлось бы изобретать велосипеды.
Хотелось бы напомнить, что бОльшую часть истории языка Javascript в нём в принципе не было такой сущности, как
class
, и разработчикам принципиально не нужно было знать поведение системы в таких ситуацияхЯ ни в коей мере не считаю себя специалистом высокого класса, но я изучил достаточно много книг и статей, связанных с фронтенд-разработкой, и я не разу не встречал информации по описанной мной теме
Мне показалось, или вы использовали фразу «экономят на сотрудниках» применительно к самой высокооплачиваемой сфере на постсоветском пространстве? (Не считая сферы распила бюджетов)
v1vendi.github.io/particle_automata
Это не очень сильно отличается от предложенного в статье, как мне кажется :)
Во-вторых, я как будто вернулся в свой 2011й, с статический генерацией HTML как в PHP.
А главная моя претензия даже не к Вам, а к авторам Jinja, потому что ваш файл myapp/templates/index.html — это невалидный HTML, и я не понимаю, почему у него оставили формат файла .html. Один из моих старых глупых принципов — это то, что html файл можно открыть в браузере и он хотя бы попытается показать своё содержимое
В традиционной реализации redux есть проблема. И если многие считают проблемой большое количество бойлерплейта и констант, то я считаю проблемой линейную сложность редюсеров от количества экшнов. Если у тебя есть 500 разных типов action, то store.dispatch каждый раз будет делать 500 сравнений ссылок на строку action type
А «Используйте TypeScript» это глупый максимализм. Несмотря на мои определенные к нему симпании, typescript и javascript — разные языки программирования. Вы ведь не приходите в посты про python и не говорите там «Используйте C#»?
Решение классное, простое и грамотное. Но в традиционном стиле redux его бы надо было написать как middleware
Что-то в виде:
Хотя вообще я бы если интегрировал такое решение, как-то гарантировал бы, что action.type у таких штук будет уникальный и больше нигде не используемый, чтобы ни у кого не пришло в голову обработать такой экшн ещё и в редюсере
Этот момент я и правда упустил. Но мой пример настолько вырожденный, что, надеюсь, читатели мне его простят :)
Но я сам умею гуглить
На картинке биметаллический термостат KSD301 с заранее заданной температурой рассоединения контактов
Например в React.js null и undefined это допустимые значения, не рендерящие ничего, и зачастую используется выражение: