Библиотека Naive UI предоставляет мощные компоненты
для работы с числовыми значениями, включая поддержку локализованных
форматов и удобное отображение валют, процентов и больших чисел. Для
форматирования чисел часто используется
NNumberAnimation и вспомогательные
утилиты, основанные на стандартных методах JavaScript, таких как
Intl.NumberFormat.
Intl.NumberFormatIntl.NumberFormat позволяет создавать локализованные
числовые форматы. В сочетании с Naive UI это обеспечивает единый стиль
отображения чисел в интерфейсе:
import { NInput } from 'naive-ui';
const formatter = new Intl.NumberFormat('ru-RU', {
style: 'currency',
currency: 'RUB',
minimumFractionDigits: 2
});
const formattedValue = formatter.format(1234567.89); // "1 234 567,89 ₽"
Особенности применения:
style: 'currency' – форматирование как денежной
единицы.style: 'percent' – для процентов.minimumFractionDigits и
maximumFractionDigits – контроль количества знаков после
запятой.'ru-RU', 'en-US' и т.д.)
определяет разделители тысяч и десятичные точки.NNumberAnimationДля динамического отображения чисел можно использовать
NNumberAnimation, который плавно анимирует
изменения значения:
<template>
<n-number-animation :value="currentValue" :precision="2" :group-separator="' '" />
</template>
<script setup>
import { ref } from 'vue';
const currentValue = ref(12345.67);
// Обновление значения с анимацией
setTimeout(() => {
currentValue.value = 98765.43;
}, 2000);
</script>
Ключевые параметры:
value – текущее число для отображения.precision – количество знаков после запятой.group-separator – символ разделителя тысяч (например,
пробел или запятая).prefix и suffix – добавление символов
перед или после числа, например валютных значков.Для отображения больших чисел удобно использовать сокращенные формы (K, M, B). В Naive UI можно сочетать утилиты JavaScript с компонентами:
function formatLargeNumber(num) {
if (num >= 1e9) return (num / 1e9).toFixed(1) + 'B';
if (num >= 1e6) return (num / 1e6).toFixed(1) + 'M';
if (num >= 1e3) return (num / 1e3).toFixed(1) + 'K';
return num.toString();
}
Применение вместе с NNumberAnimation позволяет визуально
привлекательно отображать данные на дашбордах.
Naive UI не содержит отдельного компонента для форматирования дат, но
его компоненты работают с датами через стандартные объекты
Date и форматирование с помощью
Intl.DateTimeFormat.
Intl.DateTimeFormatconst date = new Date('2026-03-19T14:30:00');
const formatter = new Intl.DateTimeFormat('ru-RU', {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: '2-digit',
minute: '2-digit'
});
formatter.format(date); // "четверг, 19 марта 2026 г., 14:30"
Особенности:
year, month, day – форматы
отображения даты.weekday – день недели.hour, minute, second –
отображение времени.Компоненты NDatePicker и
NTimePicker позволяют не только выбирать
дату/время, но и интегрировать кастомное форматирование:
<template>
<n-date-picker v-model:value="selectedDate" :format="customFormat" />
</template>
<script setup>
import { ref } from 'vue';
const selectedDate = ref(new Date());
function customFormat(date) {
return new Intl.DateTimeFormat('ru-RU', { day: '2-digit', month: '2-digit', year: 'numeric' }).format(date);
}
</script>
Параметр format позволяет указать функцию, которая
принимает объект Date и возвращает строку, что делает
форматирование полностью гибким.
Для отображения диапазонов дат удобно комбинировать
NDatePicker с утилитами date-fns или
dayjs:
import dayjs from 'dayjs';
const start = dayjs('2026-03-01');
const end = dayjs('2026-03-19');
const formattedRange = `${start.format('DD.MM.YYYY')} - ${end.format('DD.MM.YYYY')}`; // "01.03.2026 - 19.03.2026"
Это позволяет создавать дашборды с удобным визуальным представлением периодов.
Intl.NumberFormat и Intl.DateTimeFormat для
поддержки разных языков и валют.NNumberAnimation,
чтобы улучшить визуальное восприятие изменений данных.NDatePicker с кастомными функциями
форматирования для единого стиля интерфейса.Такой подход позволяет создавать интерфейсы, где числовые и временные данные визуально удобны, понятны и эстетически согласованы с дизайном.