Vue.js Digest 🇷🇺 🇺🇸
39 subscribers
389 photos
745 links
Дайджест новостей из мира vuejs
Download Telegram
TIL about specific Array combination types

https://dev.to/vanquard/til-about-specific-array-combination-types-28bo
Okay, so its not actually called "specific Array combination types", but that was the best description I had for it, before I looked it up.

Its actually called "Tuple Types" and the documentation can be found here: https://www.tutorialsteacher.com/typescript/typescript-tuple
I'll come back to why this blew my mind today, but first, lets scroll back a bit, to some of my first steps into JS/TS programming. I started my programming career in Java, and one of the things that annoyed the hell out of me, was the fact that I could only have 1 object returned from a function (This was before the Pair class was introduced).
But in JS we can easily just return an array with 2 values:



const someFunction = () => {
return ['Mathias', 28];
}


And combined with some destructuring on the recieving, it was all nice and easy:



const [myName, myAge] = someFunction();





Adding types

Until today I never had to add types onto a scenario like this, usually when I work with arrays, I either just do a basic string[], or when its required in complex object scenarios: Array<{name: string, age: number}>.

But with the tuples we can actually avoid naming them and just say the return type for our function is [string, number]:



const someFunction = (): [string, number] => {
return ['Mathias', 28];
}





Vue relation

I came across this when I working with Vue2 combined with TS, and was trying to create a v-for loop over a Map, but Vue2 did not support this, so I had to come up with a different approach that supported the same end goal.
So this is where the new tuples came in handy! Given an example with some data in a Map:



const map = new Map<string, object>();
map.set('key1', {data: 'lots of data'});
map.set('key2', {data: 'more data'});


I could then destructure it into an array like so:



const asArray = ...map.entries();
// Yielding:
[
['key1', {data: 'lots of data'}],
['key2', {data: 'more data'}],
]


And in order to Type this we now have:



const asArray: Array<[string, object]> = ...map.entries();


Thank you for reading this far, hope you gained something from this post.
NuxtJS v.2.15.8. How to hide private keys?

https://dev.to/vadiminsk/nuxtjs-v2158-how-to-hide-private-keys-3h62
Hello everyone! Currently I am working on PWA project. We build pwa with nuxt and drupal as backend. So I have a lot of secrets from backend and don`t know where store it.

Can you share your best practices?
Simple Black Friday

https://dev.to/core_ui/simple-black-friday-1eep
Not long ago, a guy, let’s name him “Kyle” asked us about CoreUI’s Tips for developers to create stunning web or app.
Answer was easy: “keep it simple” :)
“Everything should be made as simple as possible, but no simpler.”

Albert Einstein
You probably know Steve Krug’s “Don’t let me think” — it also a “bible” for CoreUI’s team. When you keep your design simple, then you’ll easily understand the principles of intuitive navigation and information design.

There’re too many overloaded products available on the market, that’s why we’ve always wanted to keep CoreUI as simple as it’s possible.

So we decided to master a CoreUI as one, comprehensive ecosystem or rather tool for the most significant UI needs.

When designing a stunning web or an app, it’s good to stick to valuable tools which will make your work easier. As an example, we can have “CoreUI’s Triada”:

Admin Templates
UI Components
Icons

They are all available for the most popular frameworks like Angular, Vue, Bootstrap and React. Such universal tools let the designer to be more flexible when working on different projects.
Keep it simple and responsive — the rest will follow.
PS Black Friday obliges… If you’re ready for -70% bounce here: Simple CoreUI Black Friday
A Vue wrapper for HubSpot Forms

https://vuejsexamples.com/a-vue-wrapper-for-hubspot-forms/
A Vue wrapper for HubSpot Forms
Webpack/Rollup/Vite plugin to add multiple root-node support to Vue 2 SFCs

https://vuejsexamples.com/webpack-rollup-vite-plugin-to-add-multiple-root-node-support-to-vue-2-sfcs/
Webpack/Rollup/Vite plugin to add multiple root-node support to Vue 2 SFCs
Petite-vue: 6kb subset of Vue optimized for progressive enhancement

https://vuejsexamples.com/petite-vue-6kb-subset-of-vue-optimized-for-progressive-enhancement/
Petite-vue: 6kb subset of Vue optimized for progressive enhancement
Museum of Ordinary Objects Web Application using Vue

https://vuejsexamples.com/museum-of-ordinary-objects-web-application-using-vue/
Museum of Ordinary Objects Web Application using Vue
Import types in Vue SFC for defineProps

https://vuejsexamples.com/import-types-in-vue-sfc-for-defineprops/
Import types in Vue SFC for defineProps
Как локализовать Vue.js приложение

https://habr.com/ru/post/573894/?utm_campaign=573894&utm_source=habrahabr&utm_medium=rss
Как локализовать Vue.js приложениеОднажды мне понадобилось перевести готовый Vue сайт на несколько языков. Немного погуглив я нашел несколько полу рабочих вариантов как это сделать и решил показать свой рабочий вариант. Подробнее
Что такое v9s, и почему потребовалось писать еще одну библиотеку валидации?

https://habr.com/ru/post/574044/?utm_campaign=574044&utm_source=habrahabr&utm_medium=rss
Примерно год назад фронтенд нашего проекта, в качестве фреймворка для которого используется Vue.js 2, дошел до состояния, хорошо описываемого словами "проще сжечь".К тому времени наш нетипизированный корабль уже трещал по всем швам, и решено было убить сразу нескольких зайцев одним выстрелом: полностью перевести проект на TypeScript, внедрить Vue Composition API и решить проблемы валидации сложных форм.А проблемы были. Vuelidate - отличная библиотека с массой готовых валидаторов и остается таковой до тех пор, пока мы имеем дело с, так сказать, плоскими формами - формами, не использующими вложенных компонентов, также требующих валидации. Vuelidate работает на уровне компонента, требует наличия миксина, содержит массу правил, которые нам не были нужны, но все равно тянулись в составе пакета, поддержка TypeScript и Composition API на тот момент отсутствовала, и мы не могли более с этим миритьcя. Читать далее
Сервис просмотра и редактирования библиотек геометок

https://habr.com/ru/post/574716/?utm_campaign=574716&utm_source=habrahabr&utm_medium=rss
В 2018 решил освоить Vue.js, так, для общего развития, а как известно, лучший способ освоить язык/фреймворк/etc — начать писать. В голову пришла довольно простая идея, которая со временем выросла в довольно большой проект — онлайн сервис «Места», позволяющий создавать свои коллекции мест на карте, геометок, с подробной информацией о них. Собирать их в альбомы, сортировать в дереве папок, просматривать, редактировать, обмениваться с другими, открывать для просмотра другим пользователям сервиса. Привязывать к местам фотоальбомы, экспортировать свои библиотеки в файлы JSON и GPX (для навигаторов, например), импортировать в свои библиотеки места других людей.Идея была проста. Есть множество средств создания фотоальбомов, музыкальных плейлистов — с описаниями, возможностью сортировки, ссылками, преферансом и барышнями. А похожей полноценной картографической реализации толком нет. По крайней мере, я не нашёл.Представьте, что вы пошли с другом в поход. Каждый у себя в навигаторе смартфона отмечал какие-то интересные места — удобные стоянки, опасные пороги, прохождение которых описывал. Потом вернулись домой, и каждый остался при своих. Сервис позволяет собрать их вместе, слив оба набора в один, отсортировать, разложить по папкам, отредактировать описания в удобном интерфейсе на компе, добавить фотографии, ссылки, сделать при желании видимыми другим пользователям сервиса, экспортировать потом, в конце концов, для использования в навигаторах и т. д.Проект свободный (https://github.com/assador/places, сам действующий сервис пока здесь: https://places.scrofa-tridens.ru). Сейчас в планах помимо API Яндекс.Карт, которые отвечают, собственно, за карту, подключить и другие — OSM, 2ГИС и пр. Хочу добавить возможность добавлять к местам не только фото-, но и видео-, и аудиоальбомы. Развивать структуру прав и ролей пользователей, их связь друг с другом на сервисе, расшаривать библиотеки в соцсети и пр. Короче, для меня штука интересная. Читать далее
Vuetify  —  создаем свое простое приложение

https://habr.com/ru/post/575050/?utm_campaign=575050&utm_source=habrahabr&utm_medium=rss
В этой небольшой статье мы с вами напишем свое простое приложение по типу "заказа еды". Само приложение если что будет статичным и здесь главный упор будет сделан на использование компонентов Vuetify и рассмотрение того как именно они работают. Также добавлю что здесь мы не будем рассматривать отдельную библиотеку Bootstrap Vue которую использует Vuetify чтобы строить гриды. Читать далее
[Перевод] Создаём одинаковое приложение 5 раз

https://habr.com/ru/post/575416/?utm_campaign=575416&utm_source=habrahabr&utm_medium=rss
На написание этой статьи меня вдохновил YouTube-канал Fireship, записывающий отличные видео о веб-разработке, крайне рекомендую их посмотреть, если вам интересна эта тема.



Вот видео с канала, в котором в 10 фреймворках создают todo-приложение:





Я решил, что не хочу тратить на это кучу времени, и в основном использовал статью как оправдание для изучения нескольких новых фреймворков, поэтому пять раз собрал одно и то же приложение. Я планирую создать простое приложение для добавления заметок, в котором пользователи могут писать текст и сохранять его как отдельные заметки. Некоторые из этих фреймворков я уже использовал для создания подобных приложений, а в других не делал ничего похожего, или даже не использовал их вообще, поэтому это будет чуть сложнее.
Читать дальше →
Компактные Vue компоненты из самописных SVG иконок

https://habr.com/ru/post/577202/?utm_campaign=577202&utm_source=habrahabr&utm_medium=rss
История вопроса

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

Мне уже давно и прочно нравится мир Vue. Особенно завораживает скорость, с которой в нём рождаются новые возможности писать код более лёгким и понятным. Недавно появились Composition API, VueUse, Vite… По ходу освоения этих новых инструментов я нашёл шаблон Vitesse, буквально насыщенный удобными средствами — и для управления макетами (layout), и для маршрутизации, и для локализации и ещё для много чего… Возможно, есть смысл написать отдельный обзор этого арсенала по русски (чего в Интернете пока ещё нет). Но сейчас речь не об этом. Читать дальше →
Vite.js и Vue.js

https://habr.com/ru/post/580064/?utm_campaign=580064&utm_source=habrahabr&utm_medium=rss
Я нашёл только 3 статьи по Vite.js на Хабр, там были некие обзоры функционала и описание фишек данного инструмента.Хорошо, тогда вопрос, что же это за инструмент такой и в чем преимущества использовать его при разработке? Если мы зайдем на официальный сайт - то здесь выделяется 6 основных фишек: Читать далее
Разработка документации на VuePress

https://habr.com/ru/post/580894/?utm_campaign=580894&utm_source=habrahabr&utm_medium=rss
VuePress представляет собой минималистичный генератор статичных сайтов, оптимизированный для написания технической документации.Изначальной целью VuePress, была поддержка фреймворка Vue.js и сопутствующей инфраструктуры. Для примера, можно посмотреть любую документацию по Vue: Vue.js, Vue Router, Vuex, где применяется единый стиль, заложенный в основе VuePress.В ходе статьи мы разберем архитектуру VuePress, разработаем базовое приложение и выложим на GitHub Pages. Читать далее
Создание унифицированного UI без мам, пап и кредитов

https://habr.com/ru/post/581616/?utm_campaign=581616&utm_source=habrahabr&utm_medium=rss
Всем привет! Меня зовут Артём и я разработчик в команде Operations & Support Tools. Наша команда занимается разработкой софта для взаимодействия поддержки с пользователями, с целью решения любых возникших у пользователей проблем.В прошлый раз один из моих коллег рассказывал, как реализовано взаимодействие сервисов у нас в Платформе. Те, кто пропустили эту статью, могут найти её по ссылке. Сегодня я хочу рассказать про приложение, которое раскрыло возможности Contract API с новой стороны. Знакомьтесь, Contract UI. Читать далее
[Перевод] Создание веб-компонентов с помощью Vue 3.2

https://habr.com/ru/post/581954/?utm_campaign=581954&utm_source=habrahabr&utm_medium=rss
Вы когда-нибудь работали над несколькими проектами и хотели иметь набор настраиваемых компонентов, которые можно было бы использовать во всех из них? Будь то работа или просто побочные проекты, набор компонентов, к которым вы можете обратиться, - отличный способ ускорить работу в новом или существующем проекте. Но что, если не все ваши проекты используют одну и ту же структуру пользовательского интерфейса? Или, что, если у вас есть тот, который вообще не использует какой-либо фреймворк JavaScript и полностью отрисован на сервере?Как разработчик Vue, в идеале мы хотели бы просто использовать наш фреймворк для создания сложных пользовательских интерфейсов. Но иногда мы оказываемся в описанной выше ситуации, работая с другим фреймворком JavaScript, таким как React или Angular, или используя внутреннюю систему рендеринга, такую как Rails или Laravel. Как мы можем создать многоразовый пользовательский интерфейс для различных вариантов внешнего интерфейса?В Vue 3.2 у нас теперь есть решение этой проблемы: веб-компоненты на базе Vue! Читать далее