mirror of
https://github.com/robonen/metr.git
synced 2026-03-20 02:44:42 +00:00
Init commit
This commit is contained in:
133
README.md
Normal file
133
README.md
Normal file
@@ -0,0 +1,133 @@
|
||||
# Metr Frontend
|
||||
|
||||
<p align="center">
|
||||
<a href="">
|
||||
<img alt="Logo" src="public/logo.svg" width="300" title="Logo">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/chemodan-tours/landing/actions">
|
||||
<img src="https://github.com/chemodan-tours/landing/actions/workflows/release.yml/badge.svg" title="Release status">
|
||||
</a>
|
||||
<a href="https://github.com/chemodan-tours/landing/actions">
|
||||
<img src="https://github.com/chemodan-tours/landing/actions/workflows/test.yml/badge.svg" title="Lint status">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## Git Flow ⚠
|
||||
|
||||
Продакшен ветка - `master`
|
||||
|
||||
Ветка для разработки - `dev-x.x.x`
|
||||
|
||||
### Порядок работы с репозиторием
|
||||
- Создать ветку с версией dev-x.x.x
|
||||
- После окончания работы над версией и успешным прохождением тестов выполнить слияние с master веткой
|
||||
- Для создания нового релиза перейти в раздел Releases, заполнить описание версии и добавить тег
|
||||
- После успешного релиза нужно проверить корректность
|
||||
|
||||
## Установка проекта
|
||||
|
||||
```bash
|
||||
git clone https://github.com/robonen/metr-frontend.git
|
||||
cd frontend
|
||||
npm install
|
||||
```
|
||||
|
||||
### Запуск в режиме разработки
|
||||
|
||||
```bash
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Компиляция продакшен сборки
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
## Правила структурирования проекта
|
||||
|
||||
### Компоненты (`src/components`)
|
||||
|
||||
```
|
||||
AppButton.vue
|
||||
AppPopup.vue
|
||||
AppToastNotification.vue
|
||||
BaseButton.vue
|
||||
BasePopup.vue
|
||||
ClientForm.vue
|
||||
ClientList.vue
|
||||
SearchWidget.vue
|
||||
SearchWidgetInput.vue
|
||||
SearchWidgetList.vue
|
||||
```
|
||||
|
||||
1. Каждый компонент должен быть определен в отдельном файле
|
||||
2. Имена файлов компонентов должны быть в PascalCase
|
||||
3. Все базовые компоненты должны начинаться с одного префикса
|
||||
4. Имена компонентов всегда должны быть многословными, чтобы не конфликтовать с существующими или будущими элементами HTML
|
||||
5. Сильно связанные дочерние компоненты должны иметь префикс с именем их родительского компонента
|
||||
|
||||
### Страницы (`src/views`)
|
||||
|
||||
```
|
||||
UsersIndex.vue
|
||||
UsersCreate.vue
|
||||
UsersShow.vue
|
||||
UsersEdit.vue
|
||||
SignIn.vue
|
||||
Settings.vue
|
||||
```
|
||||
|
||||
1. Каждая страница должна быть определена в отдельном файле
|
||||
2. Имена файлов компонентов должны быть в PascalCase
|
||||
3. Все страницы, относящиеся к одной сущности должны начинаться с одного префикса
|
||||
4. Страницы, на сколько это возможно, строятся из компонентов, чтобы избежать дублирование кода
|
||||
|
||||
### Стили
|
||||
|
||||
1. Глобальные переменные, модули, миксины выносятся в папку `/assets/scss` и подключаются в `vue.config.js`
|
||||
|
||||
```javascript
|
||||
// vue.config.js
|
||||
|
||||
module.exports = {
|
||||
css: {
|
||||
loaderOptions: {
|
||||
scss: {
|
||||
prependData: `@import "~@/assets/scss/variables.scss";`,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
```html
|
||||
<template>
|
||||
<router-view />
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
.some-class {
|
||||
background-color: $main-color;
|
||||
}
|
||||
</style>
|
||||
```
|
||||
|
||||
2. Стили модуля задаются в файле модуля
|
||||
|
||||
```html
|
||||
<template>
|
||||
<div class="hello">
|
||||
<h1>Hello, World!</h1>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
.hello {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
</style>
|
||||
```
|
||||
Reference in New Issue
Block a user