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.