Code Monkey home page Code Monkey logo

contact-management's Introduction

Contact-Management

Запуск проекта

git clone https://github.com/AlekseidDEV/Contact-Management.git

cd Contact-Management

npm i

npm run serve

Используемые библиотеки

  • Vue Router
  • Pinia
  • Tailwinds
  • Axios

Структура папок с компонентами

project-root/
├── src/
│   ├── components/
│   │   ├── ui/
│   │   │   ├── ContactForm.vue
│   │   │   ├── SearchBar.vue
│   │   │   └── ...
│   │   ├── ContactItem.vue
│   │   ├── ContactList.vue
│   │   └── ...
│   ├── views/
│   │   ├── HomeView.vue
│   │   ├── ItemDetail.vue
│   │   └── ...
├── README.md
└── ...

Комментарий: привык работать с такой структурой. Компоненты из папки Views самые верхние по уровню, строятся на основе компонентов из папки components, а сами строительные блоки строяться из более мелких и не очень компонентов из папки ui.

Примечание: дабы в компонентах верхнего уровня как таковой логики не было, я поместил туда запрос фейковых данных , что бы не засорять основную логику строительных компонентов. Использовал библиотеку Axios. Использую ее во всех проектах, поэтому решил воспользоваться и здесь.


Работа с хранилищем Pinia: внутри хранилища есть все методы, для манипуляции контактами в списке: Удаление, редактирование, добавление, Сортировка. Так же есть методы которые записывают данные в LocaStorage и получают их оттуда записывая в state. Два раздельных геттера для получения обычных данных и фильтрованных.


ComponentList: - по большей части компонент работает с флагами, для переключения режимов или отображения разных кусков верстки. Значения флагов, индексы отправляются уже в хранилище при вызове действий, а геттеры уже возвращают информацию на рендер.

ContactForm: принимает пропс. Если флаг редактирования активен, контакт редактируется, если нет, то происходит обычное добавление. Проверка полей. Регуляркой проверяются поля email и phone. Есть emit для закрытие модалки по крестику.

SearchBar: связываю переменную с инпутом, и вызываю действие из хранилища для фильтрации по имени. Внимание! - поле ввода реагирует на событие keyup.enter (Можно реализовать на событие input), но я выбрал первый вариант. Когда поиск активируется, и флаг принимает статут true, в список загружаются уже "фильтрованные данные"

ContactItem: получаю данные из параметров route, получаю нужный контакт из store. Так же добавил возможным редактировать и удалить контакт.


TypeScript: все объявления interface были вынесены в специальную попку models.
Jest: написал два простых теста, первый на отрисовку компонента, второй на проверку начальных данных при рендере странницы

contact-management's People

Contributors

alekseiddev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.