Skip to content

Cài đặt

@michi-vz được publish lên npm dưới scope @michi-vz. Bạn chỉ cần cài một package đúng stack của mình, các wrapper framework tự kéo theo engine (@michi-vz/core). Mỗi tên package bên dưới link thẳng tới trang npm của nó.

StackGóiPeer dependencies
React@michi-vz/reactreact & react-dom >= 18
Vue@michi-vz/vuevue >= 3
Svelte@michi-vz/sveltesvelte >= 4
Angular@michi-vz/angular@angular/core >= 16
Web component@michi-vz/wckhông có (tự chứa)
Vanilla / engine@michi-vz/corekhông có (d3 được đóng gói sẵn)

Cài đặt

bash
npm i @michi-vz/react
bash
npm i @michi-vz/vue
bash
npm i @michi-vz/svelte
bash
npm i @michi-vz/angular
bash
npm i @michi-vz/wc
bash
npm i @michi-vz/core

Ví dụ dùng npm, nhưng pnpm add, yarn add, bun add dùng y hệt.

Peer dependencies

Các wrapper framework khai báo framework của mình là peer dependency. Bạn cài nó (hoặc đảm bảo app đã có sẵn) cùng với wrapper, nhờ vậy bạn tự quyết định version:

bash
npm i @michi-vz/react react react-dom
bash
npm i @michi-vz/vue vue
bash
npm i @michi-vz/svelte svelte
bash
npm i @michi-vz/angular @angular/core

@michi-vz/wc@michi-vz/core không có peer dependency nào, mọi thứ chúng cần (d3-scale/d3-shape, DOMPurify) đều đã được bundle sẵn.

CDN / không cần build

Làm prototype, CodePen, hay một trang HTML thuần thì cứ load web component thẳng từ CDN, không cần bundler:

html
<script type="module" src="https://cdn.jsdelivr.net/npm/@michi-vz/wc/dist/michi-vz-wc.bundle.js"></script>

<michi-vz-line-chart id="c" width="600" height="300"></michi-vz-line-chart>
<script>
  document.getElementById("c").dataSet = [
    { label: "North", series: [{ date: 2016, value: 10, certainty: true }] },
  ];
</script>

Ghim một major version để chắc ăn, ví dụ @michi-vz/wc@1. Bundle CDN chứa mọi phần tử, nên với production thì nên cài package và chỉ import những biểu đồ bạn dùng (sub-path theo từng phần tử tree-shake được).

Styles

Engine tự chèn một core.css nhỏ (layout, tooltip, transitions) ngay lần đầu biểu đồ mount, bạn không cần import CSS nào cả. Nó cố tình không set fill/stroke: màu sắc là hợp đồng của bạn. Tô màu cho mark bằng nhãn đã sanitize, ngay trong stylesheet của riêng bạn:

css
.line[data-label-safe="North"] { stroke: #b23a2e; }
.bar[data-label-safe="Africa"] { fill: #cda14a; }

Vì biểu đồ render trong light DOM, CSS của bạn chạm được vào mọi mark, kể cả pixel canvas, qua một probe getComputedStyle.

Bước tiếp theo