- name
- vue-renderer-standards
- description
- Use when editing massCode renderer code in Vue 3, especially for script setup patterns, import rules, composables, shared state, and renderer-side conventions.
# Vue Renderer Standards
## Overview
Renderer в massCode строится на Vue 3 Composition API с `<script setup lang="ts">`. Здесь важны строгие import rules, composable-first state sharing и запрет на прямой доступ к backend-возможностям.
## Component Pattern
- Используй Vue 3 Composition API и `<script setup lang="ts">`.
- Vue core (`ref`, `computed`, `watch`, `onMounted` и подобные) не импортируй вручную: они auto-imported.
- Проектные компоненты из `src/renderer/components/` тоже не импортируй вручную: они auto-imported.
- Локальную логику компонента держи в script, а не в template.
## Manual Imports Only Where Required
Всегда импортируй вручную:
- composables из `@/composables`;
- utils из `@/utils`;
- `@vueuse/core`;
- Electron bridge из `@/electron`;
- Shadcn UI из `@/components/ui/shadcn/*`.
## Shared State
- Глобальное shared state реализуется composables без Pinia/Vuex.
- Reactive state, который должен шариться между компонентами, объявляй на module level, вне экспортируемой функции composable.
- Persistent UI/settings state храни через `store` из `@/electron`:
- `store.app` для UI state;
- `store.preferences` для user preferences.
## VueUse First
- Перед написанием нового composable сначала проверь, нет ли подходящего решения в `@vueuse/core`.
- Кастомный composable добавляй только если готового utility реально нет.
## Renderer Boundaries
- Renderer не импортирует storage internals или backend-модули доступа к данным напрямую.
- Renderer не обращается напрямую к Node.js, filesystem или storage runtime.
- Доступ к main process возможен только через `api` или `ipc`.
## Common Mistakes
- Ручной импорт `ref` / `computed` / `watch`.
- Ручной импорт локальных project components.
- Локальный state внутри composable, который должен быть общим между несколькими компонентами.
- Попытка “срезать путь” и импортировать backend-модуль прямо в renderer.
Auf GitHub ansehen