All streams
Search
Write a publication
Pull to refresh
71
0
Владимир Клепов @thoughtspile

Фронтендер

Send message

Век живи век учись, локальные полифиллы действительно можно устроить через core-js-pure + babel-plugin-transform-runtime

Но (вдобавок к вашим):

  1. Наличие core-js и core-js-pure повышает риск дублирования полифилла

  2. Сам core-js-pure таки работает на сайдэффектах с хитрой подменой globalThis, пруф:

Возможно, я упускаю какие-то новейшие методы полифиллинга.

Спасибо за поправку, дополнил статью!

мне кажется можно было написать более сжато.

Да, тренируюсь потихоньку.

Возможно идет речь про то что мы играемся с нашей библиотекой в src, а папка lib содержит саму библиотеку

Некоторые ребята публикуют и собранную версию (lib / dist), и несобранную (в голом ts / jsx). Думаю, это излишне.

Можно было бы приложить конфиг для tsup

Обяательно будут и конфиги tsup, и vite, и tsc / esbuild / tsdown, но в следующей серии цикла. Пока просто думаем, что именно и почему должны делать эти конфиги.

Ну тогда это была бы статья "современная сборка JS для самых маленьких", а не "как публиковать npm-пакет" =)

В целом я не против такой статьи, накидывай вопросы!

А это сложный момент, вот например сложно сказать что postcss — плохая библиотека. Там CJS не доставляет проблем, вот его и не трогают. Выглядит хорошим решением!

В 2021 было довольно отчаянным рубить cjs, сейчас более отчаянно — сидеть на post-EOL node с потенциалом уязвимостей.

Для новых библиотек стратегия "esm-only до первой жалобы" кажется адекватной, меньше заморочек для запуска MVP. Да, есть внешние инстументы с проблемами ESM (jest / TS / express), но непонятно, какая доля проектов на активной поддержке сидит на проблемных версиях. Например, для TS это как раз похоже на 10–12%

В любом случае, я даю информацию, решает каждый сам) Например, часто esm можно оторвать для внутренних библиотек, где мы точно знаем все версии nodejs и форматы кода наших проектов.

Когда я приступал к статье, у меня было смутное воспоминание что в приватном режиме сафари localStorage отключен, но к счастью эту фичу убрали еще в сафари 11

Кейс с явным полным отключением localStorage точно нишевый уровня "пользователь отключил js" и покрывается фолбеком аналогично SSR (единственное отличие — в firefox при этом localStorage === null, а не is not defined)

Спасибо, хороший пойнт!

Вряд ли стоит об этом сильно переживать, там очень хорошая поддержка https://caniuse.com/?search=localstorage

Зависит от кейса, но по дефолту скорее нет чем да — там замороченное (и довольно мерзкое) асинхронное апи + технология менее популярная. Для offline-first приложения попробовать стоит, для настроек / баннеров / кеша лучше не надо.

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

Раз мы всегда умеем работать с кейсом "в сторадже пусто", то проще свести кейс "кривые данные" к нему небольшой валидацией. Если это попадает в ваш концепт миграции, то можем называть это так =)

Если подойти к вопросу серьезно, то дело уже попахивает миграциями. Но я все таки пришел к выводу что если состояние стораджа нельзя безболезненно выкинуть и пересоздать заново, то в 95% кейсов мы выбрали неправильный инструмент (за исключением всякой offline-first экзотики)

Ну или хотя бы среднего и полезного) Спасибо!

Хмм, на самом деле не думал про BI системы для этой задачи! Тогда сегментируемся так, hippotable:

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

  • Работает действительно быстро из-за отсутствия клиент-серверности.

  • Простой деплой on-premises.

  • Почти неограниченная нагрузка с низкими операционными костами (S3 по цене грязи).

При этом:

  • Ограниченный размер датасета

  • Меньше источников данных и интеграций

Интерактивности маловато, на датасете in-memory размера хочется поиграться с параметрами и чтобы таблица менялась в реальном времени.

Спасибо за отзыв! С локальным запуском мой косяк, имелся в виду npm ci (без run) — обновил ридми.

Спасибо за багрепорт, исправил! Думаю, перед дальнейшим развитием хорошо бы намазать тестов =)

DuckDB мотивирует SQL-синтаксисом или чем-то еще?

Пока никак =) На слое данных это не проблема, в arquero есть полный комплект джойнов, но много интерфейсной работы (переключение таблиц, мульти-табличные пайплайны и всё такое). Задача в топе на развитие.

В спецификации со времён ES6 есть специальное поручение (12.14.4.1.e.iii) в такой ситуации доставать name функции из имени переменной (и из многих других мест, ищется по SetFunctionName).

И это легко проверить

А в минифицированном коде имена и функций, и переменных, обфусцируются и ориентироваться в любом случае придется по line:column

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

Я обдумаю это предложение, спасибо)

> Там в preset-small-lib используется esbuild

Благая весть! Вот я дед

Спасибо!

Мне второй раз предъявляют за map, но мне нравится это название — отображение же! (возможно, конформные отображения сломали мне мозг) В голом JS под map подразумевается не только то, что вы подумали, но еще и ассоциативный массив Map. В TS есть mapped types, который совсем не про массивы. В rx есть map, и ничего, как-то живут. В общем, если подойти достаточно абстрактно, всё есть map)

size-limit конечно лучше чем жать голый UMD, но мы всё ещё измеряем один бандл, а не разницу с пустым приложением, так что EOCD и непрогретый gzip остаются. К тому же завязка на вебпак, который инжектит свой рантайм — я что-то уже не хочу к нему приближаться вообще

Я ждал этого комментария) "Просто валидация" — растяжимое понятие, хотел дополнительно уточнить что речь не о валидации форм

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity