Подключение библиотеки Chart.js через CDN (Content Delivery Network)
является наиболее быстрым способом интеграции визуализации графиков в
веб-проект без установки зависимостей и настройки сборщиков. В этом
подходе библиотека загружается напрямую из внешнего источника и
становится доступной через глобальный объект Chart.
CDN-подключение удобно для прототипирования, учебных проектов, простых веб-страниц, а также для ситуаций, когда использование npm или bundler-инструментов избыточно.
Chart.js подключается через тег <script> в
HTML-документе. Наиболее распространённый вариант — использование
публичных CDN, таких как jsDelivr или cdnjs.
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
После подключения библиотека становится доступной глобально:
const chart = new Chart(ctx, {
type: 'bar',
data: {},
options: {}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.0/chart.umd.min.js"></script>
Разные CDN могут предоставлять разные сборки библиотеки. Важно
учитывать формат файла: UMD-сборка обеспечивает доступ через глобальный
объект Chart.
Для корректной работы Chart.js требуется элемент
<canvas>, на котором будет отрисован график.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Chart.js CDN</title>
</head>
<body>
<canvas id="chartCanvas"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
const ctx = document.getElementById('chartCanvas');
new Chart(ctx, {
type: 'line',
data: {
labels: ['Янв', 'Фев', 'Мар', 'Апр'],
datasets: [{
label: 'Продажи',
data: [10, 20, 15, 30]
}]
}
});
</script>
</body>
</html>
Ключевым моментом является порядок подключения: сначала библиотека, затем код инициализации.
При подключении через CDN библиотека не требует импортов. Вся
функциональность доступна через глобальный объект
Chart.
Основные элементы:
Chart — конструктор графиковChart.register() — регистрация компонентов (актуально
для модульной архитектуры Chart.js 3+)Chart.defaults — глобальные настройки по умолчаниюChart.instances — доступ к созданным графикамПример изменения глобальных настроек:
Chart.defaults.font.family = 'Arial';
Chart.defaults.color = '#333';
Использование конкретной версии важно для стабильности поведения графиков.
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0"></script>
Фиксация версии предотвращает автоматические изменения API при обновлениях библиотеки.
<script src="https://cdn.jsdelivr.net/npm/chart.js@^4.0.0"></script>
Такой подход допускает обновления внутри указанного major-диапазона.
Chart.js использует HTML5 <canvas> для рендеринга
графиков. Элемент должен иметь размеры, иначе график может отображаться
некорректно.
<canvas id="chartCanvas" width="600" height="300"></canvas>
Либо размеры задаются через CSS:
<style>
#chartCanvas {
width: 600px;
height: 300px;
}
</style>
Важно учитывать, что Chart.js масштабирует график относительно контейнера.
Инициализация графика происходит через конструктор
Chart.
const ctx = document.getElementById('chartCanvas');
new Chart(ctx, {
type: 'bar',
data: {
labels: ['A', 'B', 'C'],
datasets: [{
label: 'Пример',
data: [5, 10, 7]
}]
}
});
Основные параметры:
type — тип графикаdata — данныеoptions — настройки отображенияChart.js поддерживает множество визуализаций:
line — линейный графикbar — столбчатая диаграммаpie — круговая диаграммаdoughnut — кольцевая диаграммаradar — радарный графикpolarArea — полярная диаграммаПример круговой диаграммы:
new Chart(ctx, {
type: 'pie',
data: {
labels: ['Красный', 'Синий', 'Зелёный'],
datasets: [{
data: [12, 19, 7]
}]
}
});
На одной странице может быть несколько <canvas>
элементов, каждый из которых создаёт отдельный экземпляр
Chart.
<canvas id="chart1"></canvas>
<canvas id="chart2"></canvas>
new Chart(document.getElementById('chart1'), {
type: 'line',
data: { labels: ['A', 'B'], datasets: [{ data: [1, 2] }] }
});
new Chart(document.getElementById('chart2'), {
type: 'bar',
data: { labels: ['A', 'B'], datasets: [{ data: [3, 4] }] }
});
Каждый экземпляр управляется независимо.
При подключении через CDN важно учитывать момент загрузки скрипта.
Если код выполняется до загрузки библиотеки, возникает ошибка
Chart is not defined.
<script src="https://cdn.jsdelivr.net/npm/chart.js" defer></script>
<body>
<canvas id="chartCanvas"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
// инициализация
</script>
</body>
Перед использованием возможно выполнить проверку:
if (typeof Chart !== 'undefined') {
// библиотека загружена
}
Это полезно при динамической загрузке скриптов.
CDN обычно предоставляет UMD-версию, которая совместима с классическим браузерным подключением.
Особенности:
ChartПо умолчанию Chart.js адаптирует график под размер контейнера.
new Chart(ctx, {
type: 'line',
data: {...},
options: {
responsive: true,
maintainAspectRatio: false
}
});
responsive включает адаптивностьmaintainAspectRatio управляет сохранением
пропорцийПричины:
<canvas>Причина:
Причины:
datasetsdataПодключение Chart.js с разных CDN одновременно недопустимо. Это
приводит к конфликтам глобального объекта Chart.
Корректно использовать только один источник:
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
CDN автоматически кэшируется браузером, что ускоряет повторные загрузки страниц. Однако при разработке важно учитывать:
Для повышения безопасности возможно добавление SRI (Subresource Integrity):
<script
src="https://cdn.jsdelivr.net/npm/chart.js"
integrity="sha384-..."
crossorigin="anonymous">
</script>
Этот механизм проверяет целостность загружаемого файла.
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0"></script>
<canvas id="chartCanvas"></canvas>
<script>
new Chart(document.getElementById('chartCanvas'), {
type: 'bar',
data: {
labels: ['X', 'Y', 'Z'],
datasets: [{
data: [1, 2, 3]
}]
}
});
</script>