Установка
Требования
| Окружение | Минимальная версия |
|---|---|
| Node.js | 18+ |
vue | 3.3.0+ (только для @macrulez/masonry-kit-vue) |
react | 18.0.0+ или 19.0.0+ (только для @macrulez/masonry-kit-react) |
nuxt | 3.9.0+ или 4.0.0+ (только для @macrulez/masonry-kit-nuxt) |
У @macrulez/masonry-kit-core вообще нет зависимости от фреймворка.
Установка
bash
npm install @macrulez/masonry-kit-coreДля Vue 3 — включает все экспорты ядра в виде реэкспорта, так что этого пакета достаточно, отдельно ядро ставить не нужно:
bash
npm install @macrulez/masonry-kit-vueДля React — тот же паттерн реэкспорта, что у Vue-пакета:
bash
npm install @macrulez/masonry-kit-reactДля Nuxt — оборачивает Vue-пакет и добавляет автоимпорты:
bash
npm install @macrulez/masonry-kit-nuxtБыстрый старт: Vanilla JS
ts
import { createMasonryEngine } from '@macrulez/masonry-kit-core'
const container = document.querySelector<HTMLElement>('#grid')!
const engine = createMasonryEngine(container, { columns: 'auto', minLaneSize: 240 })
engine.setItems([
{ id: 'a', el: document.querySelector<HTMLElement>('#card-a')! },
{ id: 'b', el: document.querySelector<HTMLElement>('#card-b')!, colSpan: 2 },
])Движок сам задаёт container CSS-позицию relative — вручную задавать CSS не нужно.
Быстрый старт: Vue
vue
<script setup lang="ts">
import { MasonryGrid } from '@macrulez/masonry-kit-vue'
const items = [{ id: 'a' }, { id: 'b', colSpan: 2 }]
</script>
<template>
<MasonryGrid :items="items" :options="{ columns: 'auto', minLaneSize: 240 }">
<template #item="{ item }">
<MyCard :data="item" />
</template>
</MasonryGrid>
</template>Быстрый старт: React
tsx
import { MasonryGrid } from '@macrulez/masonry-kit-react'
const items = [{ id: 'a' }, { id: 'b', colSpan: 2 }]
function Gallery() {
return (
<MasonryGrid items={items} options={{ columns: 'auto', minLaneSize: 240 }}>
{(item) => <MyCard data={item} />}
</MasonryGrid>
)
}id у элементов здесь явный для наглядности, но <MasonryGrid> (Vue, React, Nuxt) не требует его — если не задать, id генерируется автоматически по ссылке на сам объект карточки и остаётся стабильным, пока это тот же объект. Подробнее — на странице Компонент MasonryGrid.
Быстрый старт: Nuxt
ts
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@macrulez/masonry-kit-nuxt'],
masonry: {
columns: 'auto',
minLaneSize: 240,
},
})vue
<template>
<!-- <MasonryGrid>/useMasonry — автоимпортируются, явный импорт не нужен -->
<MasonryGrid :items="items">
<template #item="{ item }">
<MyCard :data="item" />
</template>
</MasonryGrid>
</template>