Pull to refresh

Comments 38

Илья Климов, довольно известный спикер и разработчик на vue в гитлабе, отрицательно высказывается не то чтобы об использовании ts во vue, что-то не найду его последнюю лекцию, а вообще о ts. Люди командами разрабатывают на ts несколько лет и чувствуют лишнюю ненужную абстракцию без особых преимуществ.

На самом деле - на сайте typescript есть фраза со смыслом "старайтесь использовать только те функции тайпскрипта, которые есть напрямую в js", так что помимо абстракций типов в библиотеках и фреймворках, я стараюсь следовать этой парадигме. По-человечески я интерпретирую ее как "тайпскрипт это чтобы явно сказать людям, что строка это строка и только строка", генерики и прочее тоже имеет место быть - но очень осторожно и минималистично, а то и правда в некоторых продуктах ts выглядит как java.

Весьма заинтригован докладом Климова про то что ts не нужен, с интересом жду когда доклад появится в открытом доступе.

Но лично я (и те члены команды с которыми я это обсуждал) чувствую много профита от ts, в особенности в части самодокументирования кода. Уже не представляю себе старта проекта без ts.

UFO just landed and posted this here
Да если бы он один разделял это мнение, недавно совсем где-то они обсуждали ts c его ярыми приверженцами и копнули по глубже и заставили задуматься.
UFO just landed and posted this here
UFO just landed and posted this here

Попробую, спасибо, а если вкратце - чем лучше? В доке прочитал, что рекомендуют его.

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

Насколько я знаю, template по факту это и есть render сахар? Какую разницу в оптимизации вы имеете ввиду?

во vue3 в шаблонах добавлены оптимизации, которых пока нет в рендер функциях, как минимум это перенос в константы не динамических кусков темплейта.
Я не нашел чего-либо внятного по этой теме, документации или перформанс-тестов, не поделитесь ссылками?
Я давно видел доклад с обзором оптимизаций в vue template compiler, сейчас не могу вспомнить у кого. Но вот есть небольшое обсуждение github.com/vuejs/vuejs.org/issues/1936

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

да он и не изменился, да, я постарался посмотреть еще вариации и отразить их плюсы и минусы)

Хм. Проще купить webstorm/phpstorm и использовать стандартный template. Автоподсказки работают из коробки.

UFO just landed and posted this here

Ответил ниже, автоподсказки - плагин помогающий вам с названием переменных, но все давно болеют за полноценную типизацию template (внутри то все равно все типизировано!)

Суть не в intellisense или подобных автоподсказках, а в полноценной типизации темплейтов, как в JSX. Пишите свой компонент, описываете пропы и ивенты и они в компоненте-родителе проверяют ваши входные и выходные данных из компонента. В любом случае это на любителя, но все больше продуктов вижу, где пытаются выдавить максимум возможной типизации)

Что-то я не увидел, где у вас в родителе проверяются типы для child (проверил в vscode). phpstorm — с трудом понимает ваше оформление кода =(. Подсказки вообще не работают.
По-моему, многие проблемы у вас решатся с использованием vue-property-decorator и правильным оформлением кода.

В родителе и не проверяются типы child, я обозначил это как проблему темплейтов, а решается она, к сожалению, только TSX пока что. Я как раз и привел пример TSX компонента (типа и так можно писать). Vue-property-decorator не имеет смысла с новым setup во vue 3, а во 2 vue он единственный шанс нормально писать на typescript, да (https://habr.com/ru/post/540798/ самореклама, там писал об этом) . Что вы имеете ввиду под правильным оформлением кода, не совсем понял(
В общем, я считаю это бутылочным горлышком vue, но его можно прекрасно использовать и без 100% проверок типов, просто я ради интереса постоянно пытаюсь довести это до максимума)

Советую посмотреть Pinia в качестве замены Vuex 4. Минималистичная либа разработана основными контрибуторами Vuex, и относительно скоро может стать основой для Vuex 5, решает почти всю головную боль типизации хранилища.

Головная боль типизации хранилища в двух вещах: в хранилище и в типизации и она пройдет только в отсечением самой головы, как с пристнопамятным предыдущим "лордом вселенной и чемпионом окладов" - джавой

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

Почитаю, спасибо! С ходу не увидел там ts, но видимо просто не дочитал)

Благодарю за упоминание о Pinia, как сам хотел писать комментарий. Дело еще в том, что в Pinia 100% поддержка Typescript, идеологически очень грамотно выстроенная библиотека состояний, которая действительно станет основой (лучшие идеи) для Vuex 5, о чем речь идет вот здесь https://github.com/vuejs/rfcs/discussions/270

Выглядит как неплохое решение, но я все же склонен думать, что во vue 3 проще заархитектурить свое хранилище на композишине, так или иначе легче контролировать и менять что-либо в нем. Но тем кому просто не хочется что-либо придумывать, pinia подойдет отлично)

Кажется, что его нужно просто научиться готовить :)

С другой стороны "а зачем"? Готовые библиотеки типа Pinia решат все за нас

С моей точки зрения - потому что это очень легко в плане проектирования и написания, если взять архитектуру Vuex и просто переписать ее для composition api. Ну, а преимущество этого в свободе от зависимостей и свободе кастомизации)

Но это мой вывод спустя написание пары сторов для пет проектов и проектирования одного в небольшой коммерческий проект, возможно с большой командой можно столкнуться с какими-то подводными)

Дочитал до про "фанат типизации" и дропнул...

А я не приверженец насильственного чтения :)

Sign up to leave a comment.

Articles