Vue-FAQ
932 subscribers
571 photos
91 videos
561 links
Канал сайта https://vue-faq.org
Информация о Vue.js, фронтенд разработке и не только

Contacts: @RuslanMakarov
Download Telegram
😁14💯3
На этом сайте можно создать анимированный SVG для скелетона

skeletonreact.com

#svg
👍13
Человек прав. Очень часто для среднего сайта условные PHP и JQuery решают задачи бизнеса проще и много дешевле, даже если у вас есть доступ к хорошим фреймворк фронтендерам.

А если его нет - то можно попасть совсем на неприличные деньги, время. а иногда и бизнес

#webdev
💯15💩41
Вы задумывались, почему c fetch-ем нужно два раза ждать?

const response = await fetch(url);
const data = await response.json();


Ведь JSON.parse() - синхронный

Этот факт обычно используется сторонниками axios в свою пользу.

На самом деле, это продуманное поведение, дающее больший и более гибкий функционал.

fetch() резолвит свой промис как только получит все заголовки (HTTP headers), а непосредственно body ждет уже response.json()

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

Или определить, какой контент принимать после получения заголовков.

#fetch #axios
21👍11🤔5
Интересный Youtube канал по Vue - LearnVue

Последнее видео - про новый функционал Teleport-а во Vue 3.5

#learning #video
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Различные виды жизненных циклов разработки ПО

(сделайте "Open GIF")

#sd
👍1
Ликбез от @vuejs_ru и Artyom Tuchkov

ref и reactive позволяют создать реактивную переменную, но имеют некоторые отличия:

Ref:
- позволяет удобно и просто перезаписать переменную целиком: example.value = 123, при этом сохранив реактивность;
- может быть использован с примитивами (string, number, boolean и т.д.);
- представляет из себя геттер и сеттер в случае с примитивами (без Proxy);
- в случае с объектами просто вызывает reactive и передает обработку ему;
- обязательно имеет контейнер, в котором хранит значение (.value), о котором нельзя забывать.

Reactive:
- работает только с непримитивными значениями (объекты и массивы);
- использует Proxy и глубокую реактивность по умолчанию;
- не может быть просто перезаписан целиком по аналогии с ref, потому что потеряется реактивность;
- удобен для группировки связанных значений в общий объект (чтобы не создавать отдельные независимые переменные для связанного состояния);
- поддерживает ref unwrapping (https://vuejs.org/guide/essentials/reactivity-fundamentals.html#additional-ref-unwrapping-details), а значит в него можно положить другие ref’ы, и они раскроются (не нужно будет писать лишний .value) внутри объекта;
- иногда может быть удобнее в типизации - для него не нужно использовать отдельный тип MaybeRef<T>, как в случае с обычным ref (например, если хочется иметь объект, который может быть как реактивным, так и нет, то типизация и работа с reactive будет в целом выглядеть удобнее).

В общем случае можно просто использовать ref, если это кажется проще, но про reactive тоже полезно помнить, потому что его особенности могут рано или поздно пригодиться.

Полезные ссылки:
1. https://vuejs.org/guide/essentials/reactivity-fundamentals.html

2. https://vuejs.org/guide/extras/reactivity-in-depth.html#how-reactivity-works-in-vue

3. https://stackoverflow.com/questions/61452458/ref-vs-reactive-in-vue-3/65262638#65262638
🔥19👍8
PWABuilder безо всяких капаситоров и других сложных механизмов может обернуть ваше PWA в webview для Apple Store, Google Play и других магазинов нативных приложений.

Но, соответственно, и функционала меньше.

#pwa
👍3
Немного новинок в ваш reset.css

h1, h2, h3, h4, h5, h6 {
text-wrap: balance;
}

p, li {
text-wrap: pretty;
}


Первый делает многострочные заголовки выглядящими более органично (переносы)

Второй - при переносе учитывает семантику слов (не разделит переносом the apple, например)

#css
🔥361
Что такое дизайн-система?

Дизайн-система — это набор правил и компонентов, которые обеспечивают согласованность и масштабируемость интерфейса. Она включает в себя:

- Цветовые палитры: Основные и дополнительные цвета, используемые в интерфейсе.
- Типографика: Шрифты, размеры, межстрочные интервалы и другие параметры текста.
- Компоненты: Готовые элементы интерфейса (кнопки, формы, карточки и т.д.), которые можно повторно использовать.
- Отступы и размеры: Стандартные значения для отступов, размеров элементов и других пространственных характеристик.
- Использование CSS свойств

Шаги по созданию дизайн-системы

1. Определение базовых стилей:

- Нормализация: Использование нормализатора (например, Normalize.css) для устранения различий в стилях браузеров.
- Переменные: Объявление основных цветов, шрифтов, отступов и других значений в виде CSS переменных.
- Базовые стили: Определение базовых стилей для элементов (например, body, h1, p).

2. Создание компонентов:

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

Ключевые моменты для запоминания:

- Постоянство: Придерживайтесь единого стиля во всех компонентах.
- Модульность: Разбивайте дизайн-систему на небольшие, независимые компоненты.
- Гибкость: Создавайте компоненты, которые можно адаптировать под различные сценарии использования.
- Тестирование: Регулярно тестируйте дизайн-систему, чтобы убедиться в ее корректной работе.

Пример:

/* variables.css */
:root {
--primary-color: #007bff;
--font-family: sans-serif;
}

/* BaseButton.vue */
.button {
background-color: var(--primary-color);
padding: 1rem 2rem;
cursor: pointer;
...
}


#webdesign #css
🔥13👍2
Вышел Deno 2.0 RC, js/ts runtime environment и движок. Развивает проект бывший создатель Node.js Ryan Dahl

- Аналогично Bun, является комбайном, содержащий линтер, тестер, форматер, компайлер и бандлер.
- Отличительная особенность - работа с TS напрямую в рантайме, а не компиляция в js c удалением всех типов как делает Node.js
- Заявляется о полной обратной совместимости с NPM пакетами и Node.js, хотя развивают свой репозиторий typescript-ных библиотек JSR.
- Поддерживает частные npm репозитории.
- Хорошая поддержка Web API
- Интегрировал в себя много утилит типа lodash (как и Bun)
- Можно использовать с Vue проектами
- Имеет свой веб фреймворк, основанный на Preact и со вшитым Tailwind

В общем, далеко не киллер и довольно спорные решения, но конкуренция всегда полезна

Ну и De-no <= No-de если что.

#deno #nodejs #jsr
🤔4👍2👎1
VueSchool не останавливается в попытках монетизации Vue.js паствы и добавила к себе еще и JavaScript сертификацию

#certification
🤣6💯1
Вслед за Amazon и Microsoft выкупила на 20 лет атомную электростанцию, чтобы питать ей свои AI ресурсы.

#ai #microsoft
Большая лингвистическая модель выполняет простейшую на первый взгляд операцию. Она предсказывает следующее слово в последовательности слов. Чем больше слов уже включено в такую последовательность, тем проще угадать каждое новое, потому что круг вариантов постоянно сужается. В сущности, функция LLM – это доведенное до немыслимого совершенства автозаполнение.

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

У языковых моделей есть, конечно, дополнительные уровни программирования и этажи – например, слой RLHF (оптимизирующее обучение с человеческой обратной связью) и так далее. Суть в том, что языковую модель натаскивают выбирать такие продолжения лингвистических конструкций, которые в наибольшей степени устроят проводящих тренировку людей.

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

Первые LLM-модели (или GPT-боты, как их тогда называли) были чисто реактивными. Им требовался человеческий вопрос. Но количество стремительно переходило в качество, и с какого-то момента бот переставал ждать вопросов и начинал генерировать их самостоятельно, основываясь на анализе заданных ему прежде. А после отвечал сам себе, стараясь избежать внутреннего подзатыльника от себя же. Человек для подобной тренировки больше не был нужен.

Приход AI в сферу лингвистических процедур привел ко множеству радикальных культурных сдвигов.

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

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

Ведь в чем заключается классическая демократия?

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

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

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

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

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

#ai #quote
👍1
3 и 4 октября будет проходить ViteConf 2024
Онлайн и бесплатно
Там бывают интересные доклады

#vite #conf
Миллиардная компания...

#vuejs
😁4❤‍🔥2😨1
Недавние тесты производительности Vapor

Чудес особых не будет - Vue и так быстр. Хотя на больших сложных компонентах преимущество может быть уже ощутимей.

Поэтому не пишите большие сложные компоненты. Разбиение помогает оптимизировать рендеринг.
Признак хорошего Vue.js кодинга №4.

#vapor #benchmark
👍5
Не стоит завидовать программистам с родным английским

включить "отмеченный" из "отмеченный";
включить "vue" из "vue";
включить "использоватьМаршрут" из "vue-маршрутизатор";

постоян маршрут = использоватьМаршрут();

консоль.регистрировать(маршрут.параметры.ид);

постоян свойства = определитьСвойства<{
рекомендация: Рекомендация;
}>();

постоян htmlДанные = вычисляемое(() => {
если (!свойства.рекомендация) {
вернуть "";
}
постоян данные = JSON.разобрать(свойства.рекомендация.данные);
вернуть отмеченный.преобразовать(данные.рекомендация) как строка;
});


#humor
😁29👍3
Понадобилось как-то стилизовать содержимое v-html (html, преобразованный из markdown) в нескольких компонентах

Прокидывать всё через :deep() было как-то совсем грустно, поэтому придумал такой вариант

// import в main.ts или так один раз:

<style>
@import "@/app/assets/styles/md.css";
</style>


// md.css
.md {
table {
font-family: Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
display: block;
overflow-x: auto;

td,
...


на элементе с v-html в шаблоне ставится class="md"

#css
👍51