* Remove Vue dependency and change extends Signed-off-by: Jakub Juszczak <netghost03@gmail.com> * 💎 Release new version 3.0.0-rc0 * ⬆️ Update examples * 📝 Update README.md * ⬆️ Update examples * ⬆️ Update englishd docs * ⬆️ Update transalted docs with current code examples * 🔥 Remove dist files from gitignore * ⬆️ Update dependencies vue and chartjs * Change private data Implements #182. The private chart instance is now in the vue.js data model. And can be accessed over `this.$data._chart` Updated unit tests * 📝 Update docs with private data * ✨ Add codeclimate ignore * ⬆️ Update codeclimate * ⬆️ Update codeclimate * ⬆️ Update codeclimate Add build and config folders to ignore
search
| search |
|---|
| ru |
vue-chartjs
vue-chartjs это обертка для Chart.js в vue. Вы можете с легкостью создавать многоразовые компоненты диаграмм.
Демо & Документация
Совместимость
- v1 later
@legacy- Vue.js 1.x
- v2 later
- Vue.js 2.x
После финального выпуска vue.js 2, вы получите v2 по умолчанию, если установите vue-chartjs через npm. Больше нет необходимости в @next теге. Если вы нуждаетесь в v1, вам необходимо указать версию или использовать legacy тег. Если вы ищите v1, проверьте эту ветку.
Установка
Просто выполните yarn add vue-chartjs chart.js
В случае если вы хотите использовать библиотеку прямо в браузере, добавьте
<script src="https://unpkg.com/vue-chartjs@2.6.0/dist/vue-chartjs.full.min.js"></script>
в ваши скрипты. Смотрите пример на Codepen
Описание различий сборок
Существует три различные точки входа. Это зависит от того, какая сборка стоит у вас. Зависимости собираются или подключаются как peerDependency.
- Browser
- Browserify / Webpack 1
- Webpack 2
| Build | Chart.js | Vue.js |
|---|---|---|
| vue-chartjs.full.js | Bundled | Bundled |
| vue-chartjs.full.min.js | Bundled | Bundled |
| vue-chartjs.js | peerDependency | peerDependency |
| vue-chartjs.min.js | peerDependency | peerDependency |
| es/index* | peerDependency | peerDependency |
Браузер
Вы можете использовать vue-chartjs прямо в браузере без установки каких-либо сборок. Пример на codepen. В этом случае, пожалуйста, используйте vue-chartjs.full.min.js. Это минифицированная версия библиотеки, содержащая Vue.js и Chart.js в себе, с возможностью подключения при помощи UMD Module. Таким образом, вам необходим лишь один файл.
Browserify / Webpack 1
Если вы используете Gulp, Browserify или Webpack 1, входная точка находится в vue-chartjs.js. Она транслируется и собирается при помощи UMD Module.
Однако Vue.js и Chart.js являются peerDependencies, поэтому вы можете устанавливать их отдельно. В большинстве проектов вы в любом случае будете иметь установленный Vue.js. В этом случае, вы можете иметь различные версии Vue.js и Chart.js.
Webpack 2
Если вы используете Webpack 2, он будет автоматически использовать jsnext:main / module в качестве входной точки, которая расположена в es/index.js.
Это транслированная es версия кода, которая не собирается в модуль. Таким образом, three shaking будет работать.
Как и в собранной версии, Vue.js и Chart.js являются peerDependencies и не нуждаются в установке.
Как использовать
Вам необходимо импортировать базовый класс диаграммы и унаследовать его. Это даст гораздо большую гибкость при работе с различными данными. Вы можете передать данные через props или vue-resource.
Вы можете импортировать весь проект или каждый модуль по отдельности.
import VueCharts from 'vue-chartjs'
import { Bar, Line } from 'vue-chartjs'
Просто создайте ваш собственный компонент.
// CommitChart.js
import { Bar } from 'vue-chartjs'
export default {
extends: Bar,
mounted () {
// Переопределение базового рендер метода с реальными данными.
this.renderChart({
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
datasets: [
{
label: 'GitHub Commits',
backgroundColor: '#f87979',
data: [40, 20, 12, 39, 10, 40, 39, 80, 40, 20, 12, 11]
}
]
})
}
}
Затем просто импортируйте и используйте ваши собственные расширенные компоненты как обычные vue компоненты.
import CommitChart from 'path/to/component/CommitChart'
Другой пример с options
Вы можете переопределить стандартные опции графика. Просто передайте объект с опциями в качестве второго параметра в рендер метод.
// MonthlyIncome.js
import { Line } from 'vue-chartjs'
export default {
extends: Line,
props: ['data', 'options'],
mounted () {
this.renderChart(this.data, this.options)
}
}
Используйте это в вашем vue приложении
import MonthlyIncome from 'path/to/component/MonthlyIncome'
<template>
<monthly-income :data={....} />
</template>
<script>
export default {
components: { MonthlyIncome },
....
}
</script>
Реактивность
Chart.js не обновляет и не перерисовывает диаграмму при передаче новых данных. Впрочем, вы можете реализовать это самостоятельно или использовать один из двух подключенных миксинов:
reactivePropreactiveData
Оба включены в mixins модуль.
Миксины автоматически создают chartData в виде prop или data. И добавляют watcher. Если данные были измененны, график обновится.
Но помните про ограничения vue и javascript на изменение массивов и объектов. Больше информации можно получить здесь
// MonthlyIncome.js
import { Line, mixins } from 'vue-chartjs'
export default {
extends: Line,
mixins: [mixins.reactiveProp],
props: ['chartData', 'options'],
mounted () {
this.renderChart(this.chartData, this.options)
}
}
Mixins модуль
Модуль mixins включен в VueCharts, а также доступен в виде отдельного модуля.
Несколько способов импортировать их:
// Load complete module with all charts
import VueCharts from 'vue-chartjs'
export default {
extends: VueCharts.Line,
mixins: [VueCharts.mixins.reactiveProp],
props: ['chartData', 'options'],
mounted () {
this.renderChart(this.chartData, this.options)
}
}
// Load speperate modules
import { Line, mixins } from 'vue-chartjs'
export default {
extends: Line,
mixins: [mixins.reactiveProp],
props: ['chartData', 'options'],
mounted () {
this.renderChart(this.chartData, this.options)
}
}
// Load speperate modules with destructure assign
import { Line, mixins } from 'vue-chartjs'
const { reactiveProp } = mixins
export default {
extends: Line,
mixins: [reactiveProp],
props: ['chartData', 'options'],
mounted () {
this.renderChart(this.chartData, this.options)
}
}
Доступные диаграммы
Bar Chart
Line Chart
Doughnut
Pie
Radar
Polar Area
Bubble
Scatter
Настройка сборки
# инициализация зависимостей
npm install
# сборка с горячей заменой на localhost:8080
npm run dev
# сборка для production с минификацией
npm run build
# запуск unit тестов
npm run unit
# запуск e2e тестов
npm run e2e
# запуск всех тестов
npm test
Для получения детальных объяснений того, как это работает, перейдите в руководство и документацию для vue-loader.
Contributing
- Fork it ( https://github.com/apertureless/vue-chartjs/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
License
This software is distributed under MIT license.








