Местоположение
Россия

Наибольший вклад в теги

Все теги (13)

Лучшие ответы пользователя

Все ответы (28)
  • Выучил синтаксис языка. как использовать его на практике?

    AgentSmith72
    @AgentSmith72
    JS - это моё хобби
    1) Изучить что такое MVC. По курсам на youtube.
    2) Написать собственный MVC шаблон. Самостоятельно, после курсов, повторяя принципы ООП.

    Для начала можно переписать чей-нибудь курс по созданию сайта на MVC на youtube. Вникните в каждую строчку этого курса, и научитесь ориентироваться в ООП, и соответственно чужом коде.
    Ответ написан
    2 комментария
  • Верное у меня представление о разработке fullstack web приложений?

    AgentSmith72
    @AgentSmith72
    JS - это моё хобби
    Зависит от компании. бычно фронт занимается своими делами, а бэк своими.

    В лучшем случае, вы будете делать то, что говорит Тим-лид. Если нужно делать фронт на готовое от Бэка api, то значит в команде все хорошо. В редких случаях, фронту приходится мокать данные с Бэка, и работать со статичными данными.

    В худшем случае, это поддержка какого-нибудь сайта, где rest api и не пахнет.

    Если вы фронтэндер, то познакомьтесь с Postman. Например в виде гугл плагина. Научитесь работать с ответами роутов сайта. Вы можете создать свой проект, только фронт часть, а через Postman брать ответы с любого сайта, например api городов и стран, и встроить этот api в свой проект. Вам тогда вообще бэк знать не нужно будет.

    Проект по ссылке не столько не актуален, сколько ниже качества, чем нужно.

    Бэк часть:
    • Не рабочая концепция проекта.
    • Не профессиональная архитектура. Обычно используется архитектура вида валидатор-контроллер-сервис-репозиторий. В данном случае это был бы ProductsService (директория products + класс в ней ProductsService). Также в этом сервисе лежал бы класс репозитория этого сервиса, где хранились бы методы запросов к базе данных. Запрос бы попадал в валидатор, затем в контроллер, оттуда в сервис, а сервис бы вызывал соответствующий метод в репозитории.
    • База данных. Нет внешнего ключа у продукта к категориям.
    • Нет типизации. Это нужно для статичных анализаторов, проверяющих код на ошибки. Пример public string $name - как свойство класса. public function getById(int $id) - как метод класса
    • Нет валидации запроса. Например, что поля формы должны не содержать определённые символы, или быть конкретного типа. (Очистка от тэгов , используемая в модели, должна находится ещё до того как запрос попадёт в контроллер.)
    • Коды и текстовки раскиданы по разным файлам. Всё должно лежать в одном файле, классе, куда будут обращаться все классы за результатом.
    • Отсутствует MVC. В каждом файле создаётся новый класс, и дескриптор подключения, хотя это повторяющееся действие нужно вынести в отдельный класс.
    • Коды ответа. Не соответствуют действительности. При создании не нужно возвращать 200. 200 подразумевает, что в ответе есть дополнительные данные. Правильный вариант 201


    Фронт часть:
    • JQuery это рудимент.
    • Bootstrap не используется, если есть нормальный отдел разработки.
    • Стили страницы не разбиты на верхнюю и нижнюю части.
    • Не используется отложенная загрузка скриптов.
    • Вместо файлов JS для каждого типа CRUD достаточно одного JS файла
    • HTML код в JS. Загрузка JS это одна из самых затратных операций. Чем больше размер файла, тем выше время загрузки. Что сильно отщутимо на мобилке.
    • Везде используется POST запрос. В restfull api POST для создания, GET - для получения, DELETE - для удаления, Patch - для обновления части модели, PUT - Для обновления всех полей модели.

    Этого курса достаточно, чтобы сделать востребованный на рынке restfull api проект.
    Ответ написан
    6 комментариев
  • Как по очереди проверять и по очереди убирать лишнее?

    AgentSmith72
    @AgentSmith72
    JS - это моё хобби
    Вам пригодятся регулярные выражения
    Сервис для проверки регулярных выражений

    Потом его разделяю на массив где MAX_SMART_FILTER_687_4089903629 то что мне нужно и уже этот ID я сравниваю с тем что выдается в карточке товара

    В таком случае достаточно проводить проверку с помощью регулярных выражений:
    $regExp = '#' . $id['affiliation'] . '#';
    foreach($arr as $key => $string) if(preg_match($regExp, $string)) unset($arr[$key]);

    В $regExp размещаете своё условие для поиска.
    $arr это ваш массив со строками.

    Делаете перебор массива со строками.
    При нахождении нужного id, удаляете из массива со строками данный элемент.

    Если нужна помощь в составлении регулярного выражения, обращайтесь.
    Ответ написан
  • Как лучше организовать архитектуру проекта?

    AgentSmith72
    @AgentSmith72
    JS - это моё хобби
    Архитектура бывает двух типов:
    • На которой идёт быстрая разработка
    • Удобная для поддержки проекта

    Нужно отделять бизнес логику от деталей. Для начала это может быть обращение к интерфейсу, и вам не важно что в дальнейшем у методов этого интерфейса поменяется реализация.

    Нужно использовать сервисы и репозитории, в качестве абстракций к моделям. На практике это означает, что у контекста (например аккаунт) есть свой сервис - класс, где сосредоточена бизнес логика, и репозиторий - класс посредник для обращения к базовому репозиторию с методами запроса к базе данных.

    Что касательно вашей ситуации, то вам следует опираться на принцип "Единственной ответственности", суть которого в том, что к каждого компонента может быть только одна причина для изменения.

    Таким образом, причина для изменения логики работы с городами, не должна быть причиной изменения в коде, который работает с магазинами.

    Лучше идти от большего к меньшему, то есть сначала использовать дублирование кода в разных контекстах, а потом провести рефакторинг и вынести все что нужно в отдельные классы.

    Если вы будете использовать контексты, и выстраивать взаимодействие между ними, через классы посредники, вы поймёте, что дублирования кода нет, так как сам контекст уже содержит в себе логику, к которой обращаются несколько других контекстов.
    Ответ написан
    Комментировать
  • Как удалить гласные в строке?

    AgentSmith72
    @AgentSmith72
    JS - это моё хобби
    Мастер регулярных выражений вам в помощь.

    Цикл не нужен. Можно и динамически создавать объект регулярного выражения из переменных:

    let replace = '[aeuio]';
    let regExp = new RegExp(replace, "gi");
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (11)