Git Product home page Git Product logo

vk-dropdown's Introduction

VK DROPDOWN

Тестовое задание для VK

Демо

https://vk-dropdown-demo.herokuapp.com/

*При наведении на элемент в дропдауне появляется title в котором содержится доменное имя. Первикс (local) указывает на то, что данные взяты из локальной базы пользователей, хранящейся в браузере. При этом локальный поиск не включает поиск по домену.

Структура проекта

/client

В папке client/src находятся основные файлы для клиентской части - скрипты и стили. При помощи gulp скрипта они собираются в один js файл и один css файл, в обоих случаях создаются минифицированые версии. Помимо сборки в директорию /dist скрипт копирует бандлы на сервер в папку server/public

client/src/js/dropdown.js - Содержит всю логику работы выпадающего списка, включая манипуляию данными. Подразумевается, что в компонент передаются источники данных, с которыми компонент может взаимодействовать.

client/src/js/app.js - В данном файле инициализируется демо-приложение, которое добавляет на страницу нескольок списков с разными настройками.

client/src/js/search.js client/src/js/keymap.js client/src/js/translit.js - Отвечают за логику поиска с учетом неправильных раскладок, кроме того в search.js содержится источник данных (Функция, возвращающая Promise), который используется для запроса на сервер.

client/src/js/set-frontend-users.js - Записывает первую 1000 пользователей в локальное хранилище браузера.

/server

В данной папке проинциализиравно Express.js приложение.

В /server/routes/users.js находится ендпоинт для поиска.

В /server/core находятся файлы, аналогичные тому, что есть на клиенте для поиска с учетом неправильных раскладок, в данном варианте идет поиск по домену

Идеи по доработке

Есть некоторые детали реализации, которые можно реализовать, но которые не были указаны в задаче и требуют времени. При необходимости могу сделать.

  1. Подсветка поисковой фразы в результатах поиска.
  2. Кастомный скроллбар.
  3. Улучшеная логика сортироки резултатов поиска на бекенде - выставление весов не только на основании призка "изначальный текст / транслит / измененная раскладка", но и на основании поля по которому искали. Разбиение поискового запроса по словам, выставление весов. (Тут уже желательно иметь БД и полнотекстовый поиск)
  4. Добавить debounce для запросов на сервер.

vk-dropdown's People

Watchers

Konstantin Korobkov 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.