시작하기
FreeGrid는 프레임워크에 의존하지 않는 TypeScript 그리드이고, React, Vue, Svelte, Angular용 얇은 래퍼를 제공합니다. 코어 패키지나 사용하는 프레임워크용 패키지를 설치하세요.
실행 예제10만 행
보이는 행과 열만 그리기 때문에 10만 행 × 50열도 끊김 없이 스크롤됩니다.
이 데모의 코드
import { createGrid } from '@freegridjs/core';
import { demoColumns, makeRows } from '../data';
import { button, separator, text, tr, type DemoContext } from '../ui';
export default function mount(ctx: DemoContext) {
const { lang } = ctx;
// 100,000 rows × 50 columns (12 base + 38 extra metric columns)
const rows = makeRows(100_000, 38);
const t0 = performance.now();
const grid = createGrid(ctx.host, {
columns: demoColumns(lang, 38),
data: rows,
rowSelection: 'multiple',
locale: lang,
});
const ms = performance.now() - t0;
text(ctx, tr(lang, {
en: `${rows.length.toLocaleString()} rows × 50 columns rendered in ${ms.toFixed(0)} ms`,
ko: `${rows.length.toLocaleString()}행 × 50열을 ${ms.toFixed(0)}ms에 렌더링`,
}));
separator(ctx);
button(ctx, tr(lang, { en: 'Jump to row 50,000', ko: '50,000번째 행으로' }), () => grid.scrollToRow(49_999));
button(ctx, tr(lang, { en: 'Jump to the end', ko: '맨 끝으로' }), () => grid.scrollToRow(rows.length - 1));
button(ctx, tr(lang, { en: 'Sort by total', ko: '합계로 정렬' }), () => {
const s = performance.now();
grid.setSort([{ colId: 'total', dir: 'desc' }]);
ctx.log(tr(lang, { en: 'sorted 100,000 rows in', ko: '10만 행 정렬 시간' }) + ` ${(performance.now() - s).toFixed(0)} ms`);
});
return grid;
}FreeGrid는 프레임워크에 의존하지 않는 TypeScript 그리드이고, React, Vue, Svelte, Angular용 얇은 래퍼를 제공합니다. 코어 패키지나 사용하는 프레임워크용 패키지를 설치하세요.
npm i @freegridjs/core
# React
npm i @freegridjs/core @freegridjs/react
# Vue
npm i @freegridjs/core @freegridjs/vue
# Svelte
npm i @freegridjs/core @freegridjs/svelte
# Angular
npm i @freegridjs/core @freegridjs/angular높이가 있는 컨테이너를 준비하고, 스타일시트를 한 번 import한 다음 컬럼과 데이터를 넘기면 됩니다. 화면에 보이는 행만 그리기 때문에 데이터가 많아도 느려지지 않습니다.
import { createGrid } from '@freegridjs/core';
import '@freegridjs/core/styles.css';
const grid = createGrid(document.getElementById('grid'), {
columns: [
{ field: 'name', header: 'Name', pinned: 'left' },
{ field: 'country', header: 'Country', filter: 'set' },
{ field: 'joined', header: 'Joined', type: 'date' },
{ field: 'total', header: 'Total', type: 'number', format: '#,##0' },
],
data: rows,
});CDN으로 쓰기
빌드 도구가 없다면 npm 패키지를 unpkg CDN에서 script 태그로 불러오세요. 전역 FreeGrid 객체가 생기고 14개 언어가 모두 들어 있습니다. @1은 1.x 중 최신 버전을 가리키니, 운영 환경에서는 @freegridjs/[email protected]처럼 버전을 고정해서 쓰세요. jsDelivr에도 같은 파일이 있습니다. 주소의 unpkg.com을 cdn.jsdelivr.net/npm으로 바꾸면 됩니다.
<link rel="stylesheet" href="https://unpkg.com/@freegridjs/core@1/dist/cdn/freegrid.css">
<script src="https://unpkg.com/@freegridjs/core@1/dist/cdn/freegrid.min.js"></script>
<div id="grid" style="height: 480px"></div>
<script>
const grid = FreeGrid.createGrid(document.getElementById('grid'), {
columns: [{ field: 'name' }, { field: 'total', type: 'number', format: '#,##0' }],
data: [{ name: 'Kim', total: 1200 }, { name: 'Lee', total: 3400 }],
locale: 'ko', // all 14 languages are bundled
});
</script><link rel="stylesheet" href="https://unpkg.com/@freegridjs/core@1/dist/cdn/freegrid.css">
<div id="grid" style="height: 480px"></div>
<script type="module">
import { createGrid } from 'https://unpkg.com/@freegridjs/core@1/dist/cdn/freegrid.esm.js';
createGrid(document.getElementById('grid'), { columns, data });
</script>이 페이지에 대한 질문
FreeGrid는 어떻게 설치하나요?
npm i @freegridjs/core로 설치하고 createGrid와 스타일시트를 불러온 뒤, 높이가 있는 요소에 createGrid(요소, { columns, data })를 호출하면 됩니다. 빌드 도구가 없으면 CDN에서 freegrid.min.js와 freegrid.css를 불러오세요.
React나 Vue 같은 라이브러리가 필요한가요?
아니요. 코어는 의존성이 없고 순수 자바스크립트에서 동작합니다. React, Vue, Svelte, Angular용 래퍼는 별도 패키지입니다.