k12th
+2

Оригинал 2013 года, в мире nodejs это геологическая эпоха.

k12th
+3

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

k12th
+11

Не то что я особый поклонник React и ненавистник Scala, но не является ли это очередным случаем "я считаюсь fullstack, но ниасилил React и вообще фронт не люблю"?


что приложение на фреймворке Binding.scala содержит всего 154 строки кода

А сколько весит scala.js (имеется ввиду скаловский runtime)? Года три назад было 20 мегов.

k12th
+1

Спасибо, стало понятнее. А вершинные шейдеры тоже получают униформные переменные или как?

k12th
+2

Интересно, почему переменные называются юниформные? И откуда они берутся? Если их передает ShaderToy, то, получается, в голом JS без обвязки написанные шейдеры перестанут работать? Если нет, то где полный список?

k12th
+4

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

k12th
0

А webpack может в серверный рендеринг? Такой же точно вопрос.

k12th
+1
чем этот лучше?

Плюшки вебпака без его наркоманских конфигов, видимо.


Есть только проблема, что когда начинаешь новый проект, то действительно есть тысяча бойлерплейтов и не проблема взять любой. А если у тебя легаси, которое нужно органично эволюционировать и не поломать, то все равно придется писать ручками G(runt|ulp)file.js, webpack.config.js, karma.config.js и так далее ad infinitum ad nauseam:)

k12th
+1

Я и говорю — разные у людей хобби.

k12th
+4

Вот как весна, так хоть блокируй себе хабр. Дорогое НЛО, удали, пожалуйста мой коммент и всю ветку.

k12th
+7

Это неплохая метрика, но не идеальная. Есть очень крепкие разработчики, которые просто не пишут в open source — другое хобби, частный проект, просто не пользуются гитхабом:)

k12th
+1

MD нужен только для приложений. Но приложения обычно строятся на модульной системе, а тут просто куча тупо вкинута в глобальный скоуп. Плюс элементы обычно создаются на лету, а тут чтобы виджеты ожили надо вручную вызывать всякие функции, да еще неизвестно, как это сработает с уже живыми виджетами. Тема задается css-переменными, работать будет очень не везде, но при этом используется устаревший JS.


А так, конечно, выглядит неплохо, да и вес небольшой, это плюсы.

k12th
0

Если человек содрогается, то можно брать.

k12th
0

Вроде в шарпе были литералы для структур? Но, как я говорил, я не настоящий сварщик.

k12th
+3
Когда React умер и исчез

О, как оно там, в будущем? Что его вытеснило, Vue, какой-нибудь next-shiny-thing.ts?

k12th
+2

Оффтоп: а неужели нельзя это место на C# как-то поизящнее переписать? Я не настоящий сварщик, но должен же быть способ без адской копипасты.


image

k12th
+1
почти все те-же проекты можно генерировать используя dotnet new

Так почему в примере не используется dotnet new, какие преимущества у йомена в данном случае?

k12th
0

Вот момент с генерацией проекта йоменом был вообще неожиданный. У матерых энтерпрайзников не подгорает от использования столь низменной технологии как nodejs?:)
P.S. ничего не имею против .NET, просто многие посматривают свысока на JS вообще и на nodejs в частности.

k12th
0

Ну в веб-приложениях далеко не все миддлвари потребляют результат предыдущей, некоторые вполне можно параллелить (но не все, понятно, авторизация должна срабатывать первой и не пускать дальше).

k12th
+1

Вот это вообще бесит, да.

k12th
+1

Поддержка эмодзи находится в довольно печальном состоянии, даже если не учитывать всякие хитрые комбинации.


Я сделал недавно текстовую игру в порядке эксперимента, где действия обозначались эмодзи вместо слов. И все было прекрасно на Win10 Pro, пока я не открыл ее на мобильнике, где вместо половины картинок были квадратики. Списав на старую версию (4.4), я пошел на работу и открыл на Win10 Enterprise, где ситуация оказалось не сильно лучше. Пришлось искать специальный шрифт, который весит на полтора порядка самой игры, и делать отдельную версию, потому что нельзя же всех заставлять качать 6 мегов для текстовой-то игры.


В общем, если вы спросите меня: «готова ли инфраструктура для всемирного перехода на эсперанто колобков и какашек?», мой твердый и решительный ответ будет: «может быть, подождите пока».

k12th
0

Окей, я понял, спасибо. По прежнему не согласен (стримов нет; а отбрасывать-то можно что угодно, но ведь (state) => state они редьюсером не называют), хотя бы корни терминологии ясны.


А стримы, наверное, возникают, когда делаешь time-travel: берешь initial state и проходишь по массиву случившихся экшенов, чтобы получить состояние в желаемой точке.

k12th
0

Так нет никакого «вместо», под капотом это так и работает.


Как я уже и сказал, можно спокойно управлять стейтом без vuex и ФП.

k12th
0

Не буду делать вид, что понял, зачем экшены живут в списке, и в чем тут сходство сигнатуры, когда редьюсеры в JS имеют вид (accumulator, currentValue, index, array) => value, но за объяснение спасибо.

k12th
+1

Для этого vuex не нужен, скармливаете любой объект vue.js, она сама будет следить за свойствами. Вместо геттеров — computed (и watch), вместо экшнов — methods.


vuex, в некоторой степени, дань моде на ФП подход в UI; в отличие от React тут действительно есть реактивность и UI перерисовывается без создания нового объекта.

k12th
+1

Не знаю начет Redux + reselect, но похоже на MobX. Иммутабельности нет, vue наоборот не любит, когда вы заменяете объект целиком.


С мемоизацией сложный вопрос. С одной стороны в явном виде ее нету. С другой стороны, при использовании геттеров ожидаемым образом — то есть в качестве computed-свойств в компонентах — vue сама следит, какие computed-свойства пересчитать, то есть какие геттеры вызвать.

k12th
0

Тут в основном декомпозиция идет на уровне собственно бизнес-логики, которая разбивается на небольшие, хорошо изолированные функции.


Плюс есть т.н. «модули», когда вся бизнес-логика, относящаяся к некоторой части состояния, выносится и группируется отдельно.

k12th
+1

Если честно, я плаваю в redux-терминологии. Для меня редьюсер не выглядит так, будто он принимает очередь, а выглядит так, будто принимает стейт и возвращает объект, замещающий какую-то часть в стейте.

k12th
+2

А какой смысл называть mutation reducer'ом?

k12th
+2

Для всякого CRUD типа админок, да и просто быстро набросать основу — очень прикольно. Давайте продолжение!

k12th
+10

Неправда ваша, все знают, что в СССР было всё — и баги в том числе. Но с этими пережитками буржуазного прошлого боролись, перевоспитывали их в фичи.

k12th
0

Я бы всем этим манагерам и заказчикам посоветовал был офигенно действенную методологию под названием "пишем, бл***, код".


К сожалению, таймшиты, кажется, столь же неизбывны, как пробки, понедельники, налоги, смерть и потеря бэкапов — по крайней мере, в аутсорсинговых конторах.

k12th
0

Ну предположим, но основная часть времени тратится все равно на (транc|ком)пиляцию, а из перечисленных вами языков имплементация на C есть разве только у SASS и еще может у MD.
А если они свои компиляторы TS и ES2015 написали на C, то я к этому не притрагивался бы палкой даже бесконечной длины.


Я щас посмотрел, оно еще и платное, о божечки:D

k12th
+1

Хороший GUI это хорошо, но в данном случае это примерно так же удобно, как рисовать картинки в CLI.

k12th
+3

Если label не содержит в себе input, то он и не будет работать как лейбл. То есть, нужен id у инпута и for у этого лейбла. И если верстка не совсем кривая, то найти нужный лейбл можно через $('label[for=" + this.id + '"]').

k12th
0

То ли дело плитки Пенроуза, да?

k12th
+2

Неплохая статья (и вообще весь сайт, побольше бы там материалов), но я лично, когда реализовывал гексовое поле, использовал как шпаргалку вот это: http://ondras.github.io/rot.js/manual/#hex/indexing