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

Contacts: @RuslanMakarov
Download Telegram
Попытка применить числовые отношения к визуальному миру, чтобы задать критерии красоты, продвинулись не так далеко. Было принято, что "красивый" прямоугольник это такой, у которого маленькая сторона относится к большой так же, как большая к сумме маленькой и большой. Решение простого квадратного уравнения дает бесконечную дробь: a/b = 1.61803... Её и назвали золотым сечением.

Сразу же получается, что если a/b = 1.61803..., то b/a = 0.61803... Только одно число обладает таким свойством. Отметим, если a/b = φ и b/c = φ, то a/c = φ*φ, и таким образом можно получить ряд уменьшающихся или увеличивающихся гармоничных отрезков, как и с музыкальными нотами и их созвучиями.

#math #webdesign
Из интересных свойств можно еще отметить, что отношение соседних чисел Фибоначчи при их росте стремится именно к золотому сечению. Другими словами, последующий член последовательности примерно в 1.6 раза больше предыдущего.

Золотое сечение сразу стали, с одной стороны, находить в природе, а с другой - использовать при создании произведений искусств и архитектуры. В наше время им часто руководствуются при создании логотипов для брендов (Apple, Pepsi, Twitter, Google), и веб-дизайна - гармоничное разбиение отрезка на две части.

#math #webdesign
Лучше всего избегать пустых CSS class атрибутов.
Например, следующий код отобразит div с пустым атрибутом class:

<div :class="isDisabled ? 'disabled' : ''"></div>
<!-- Will render <div class></div> -->


Передавая null вместо пустой строки, можно избежать отображения пустого атрибута класса:

<div :class="isDisabled ? 'disabled' : null"></div>
<!-- Will render <div></div> -->


#tip
Если кто использует большие сторонние библиотеки, например, bootstrap, то с помощью PurgeCSS можно удалить из вашего бандла неиспользуемые стили, коих может быть много, и облегчить его вес.

Библиотека подключается как PostCSS плагин и хорошо настраивается. Можно использовать с Vite.

#css #purgecss
Может кому надо, можно скачать себе почти весь интернет.

vue-faq.org тоже есть, я проверил.

#crawlers
Немного аналитики вакансий от Хабр. Карьеры

Всего обработано 10000 вакансий, из них две трети - удалёнка

Надо идти мидлом в бэкенд..

#job
Vue Router позволяет указать, куда и как скролить экран при переходе на роут:

const router = createRouter({
scrollBehavior(to, from, savedPosition) {
// всегда прокручивать до верха
return { top: 0 }
},
})

const router = createRouter({
// нативное поведение при навигации с помощью кнопок назад/вперед:
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
return { top: 0 }
}
},
})

const router = createRouter({
// задержка перед скролом
scrollBehavior(to, from, savedPosition) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ left: 0, top: 0 })
}, 500)
})
},
})


Другие варианты можно посмотреть в документации

#vuerouter #tip
Нашел четыре плагина для Vite для написания браузерных расширений:

https://github.com/samrum/vite-plugin-web-extension
https://github.com/antfu/vitesse-webext
https://crxjs.dev/vite-plugin/

https://github.com/aklinker1/vite-plugin-web-extension

Самый удобный и эффективный - последний. Поддержка HMR. В dev режиме возможно запускать в режиме расширения браузера, и в режиме веб приложения, что удобно для разработки.

#lib #webextension #vite
Во Vue необязательно использовать только Vue-native компоненты. Можно подключать js решения, если их функционал больше подходит, как, например, слайдер Swiper или таблица Tabulator. У многих есть адаптер для Vue.

Однако надо помнить, что такие решения могут нести в себе избыточный код, по сравнению с нативным решением.

#tip
При использовании стороннего компонента, получить доступ к его содержимому и изменить при необходимости его логику можно через template ref:

<template>
<ThirdPartyComponent ref="compRef"/>
</template>

<script setup lang="ts">
const compRef: Ref<typeof ThirdPartyComponent | null> = ref(null);
const input: HTMLInputElement | null = compRef.value?.$el.querySelector('input');
</script>


Если компонент должен освобождать какие-либо ресурсы, то сделать это можно в onUnmounted()

#tip
Почти два месяца назад создал Pull request во VueUse - небольшое добавление и багфикс в useBreakpoints
На днях его приняли.
Мое мнение за это время только усилилось:

Пишите красивый, эффективный код.
VueUse - это в большинстве случаев использования и некрасиво, и неэффективно.

#vueuse
Что-то пересматривая интервью Маска и других видных деятелей о перспективах искусственного интеллекта, подумалось: создать систему с задействованием ИИ, которая из полуготовых блоков будет создавать готовый магазин, сайт-визитку или лендинг, причем, с достаточно оптимизированным кодом, это намного проще, чем, например, генерить по промптам видео. А такие сайты занимают, наверно, 99% интернета.

Так что желающим только сейчас войти во фронтенд стоит задуматься о наличии мест в отрасли года через два-три.

#ai