Статья от 20 ноября 2024 года
8 Reasons Why Vue JS is the Best Framework for Your Modern Projects
И пишут же вот такие вот контент-райтеры на дешевеньких LLM-ках вот такую вот хрень. Для компаний, которые, типа, предлагают услуги разработки на
И наверняка могут написать о чем угодно...
#facepalm
8 Reasons Why Vue JS is the Best Framework for Your Modern Projects
И пишут же вот такие вот контент-райтеры на дешевеньких LLM-ках вот такую вот хрень. Для компаний, которые, типа, предлагают услуги разработки на
Vue.js
И наверняка могут написать о чем угодно...
#facepalm
Когда-то модалки были довольно нетривиальным элементом, породившим кучу библиотек для их отображения (даже сам когда-то заэнпиэмил одну).
Сейчас
Вот пример модалки в 30 строк с оверлеем, закрытием по outside клику и клавише
Использование:
И всё. Не надо никаких композаблов, телепортов и мучений с позиционированием.
В комментариях будут стили для плавного (
#html #tip
Сейчас
HTML
<dialog>
делает это легко и непринужденноВот пример модалки в 30 строк с оверлеем, закрытием по outside клику и клавише
ESC
, с поддержкой доступности и других W3C
стандартов<script setup lang="ts">
import { ref } from "vue";
const dialog = ref(null);
function show() {
dialog.value.showModal();
}
function close() {
dialog.value.close();
}
function onClick($event) {
if ($event.target === dialog.value) {
dialog.value.close();
}
}
defineExpose({ show, close });
</script>
<template>
<dialog
ref="dialog"
role="textbox"
tabindex="0"
@mousedown="onClick"
>
<slot />
</dialog>
</template>
<style scoped></style>
Использование:
const holaModal = useTemplateRef("holaModal");
// holaModal.value.show();
...
<ModalDialog ref="holaModal">
<div>Hola!</div>
<button @click="holaModal.close()">
Close
</button>
</ModalDialog>
И всё. Не надо никаких композаблов, телепортов и мучений с позиционированием.
В комментариях будут стили для плавного (
fade in-out
) открытия и закрытия окна диалога и оверлея.#html #tip
В вышедшем недавно
Появились ассиметричные (?) модификаторы доступа свойств класса и переопределяемые геттеры/сеттеры (привет, js).
А также наконец, через 30 лет, удобный
#php
PHP 8.4
тем временем небольшая революцияПоявились ассиметричные (?) модификаторы доступа свойств класса и переопределяемые геттеры/сеттеры (привет, js).
А также наконец, через 30 лет, удобный
API
для парсинга HTML
документов.#php
Как приятно выйти на пенсию и заниматься только пет-проектами...
Предпоследний - Библеистика
Фронт в целом занял где-то треть работы. Технически было много интересных моментов, особенно на бэке (сбор данных, нормализация, структурирование, размещение, организация/оптимизация передачи их на фронт, индексация, морфологический поиск и т.п.). Был (и есть) даже вариант, что сайт может быть полностью статичным, без бэка, даже с поиском.
В итоге сайт "сотки" и близко к ним выбивает на
Репозиторий
#pet
Предпоследний - Библеистика
Фронт в целом занял где-то треть работы. Технически было много интересных моментов, особенно на бэке (сбор данных, нормализация, структурирование, размещение, организация/оптимизация передачи их на фронт, индексация, морфологический поиск и т.п.). Был (и есть) даже вариант, что сайт может быть полностью статичным, без бэка, даже с поиском.
В итоге сайт "сотки" и близко к ним выбивает на
PageSpeed
Репозиторий
#pet
Библеистика
Изучение Библии по контекстам с помощью Конкорданса Стронга
При рисовании графиков на фронтенде обычно используется два подхода -
Библиотеки для первого (
Если нужны несложные диаграммы, можно использовать
Специальная обертка для
#charts #svg
canvas
и svg
Библиотеки для первого (
chart.js
, uplot
) предлагают больший функционал и детализацию, библиотеки для второго (frappe-charts
, chartist
) - намного меньший размер пакета и заметно лучшую производительность в браузере.Если нужны несложные диаграммы, можно использовать
SVG
Специальная обертка для
Vue
не обязательна - все можно сделать в onMounted()
через useTemplateRef()
.#charts #svg
Недавно понадобилось сделать график. Вроде простой, но перебрал несколько библиотек и не нашел подходящей - чтобы маркеры горизонтальные были, тултип, расположение по оси Х как надо, растягиваемый и т.п.
В итоге решил сделать сам используя третий подход - на
Времени на создание рабочего варианта (первая картинка) ушло меньше, чем на поиски и пробы готовых графических библиотек (четырёх).
К сведению любителей не изобретать эти чертовы велосипеды.
Ну и дальше можно закастомизировать по красоте как нужно именно тебе.
#charts
В итоге решил сделать сам используя третий подход - на
HTML
и CSS
. Времени на создание рабочего варианта (первая картинка) ушло меньше, чем на поиски и пробы готовых графических библиотек (четырёх).
К сведению любителей не изобретать эти чертовы велосипеды.
Ну и дальше можно закастомизировать по красоте как нужно именно тебе.
#charts
Бесплатные, доступные, опенсорсные и self-hosted альтернативы платным приложениям и сервисам
Notion -> Appflowy
Zoom -> Jitsi
Jira -> Plane
Airtable -> NocoDB
Vercel -> Coolify
Heroku -> Dokku
Firebase -> Pocketbase/Appwrite/Convex/Supabase
Shopify -> Prestashop
GitHub -> GitLab
Slack -> Mattermost
Salesforce CRM -> ERPNext
Dropbox -> NextCloud
Mailchimp -> Mautic
Trello -> Wekan
Docusign -> Docuseal
Calendly -> Cal dot com
Datadog -> Prometheus
Google Analytics -> Matomo
Microsoft Office 365 -> LibreOffice
Asana -> OpenProject
#software
Notion -> Appflowy
Zoom -> Jitsi
Jira -> Plane
Airtable -> NocoDB
Vercel -> Coolify
Heroku -> Dokku
Firebase -> Pocketbase/Appwrite/Convex/Supabase
Shopify -> Prestashop
GitHub -> GitLab
Slack -> Mattermost
Salesforce CRM -> ERPNext
Dropbox -> NextCloud
Mailchimp -> Mautic
Trello -> Wekan
Docusign -> Docuseal
Calendly -> Cal dot com
Datadog -> Prometheus
Google Analytics -> Matomo
Microsoft Office 365 -> LibreOffice
Asana -> OpenProject
#software