4 августа 2020 г.
Наконец-то прошло 6 недель в программе Flatiron School, и за это время я получил знания и информацию о том, как интерфейс и сервер наконец-то работают вместе!
Первые 3 недели модуля были потрачены на изучение того, как работать с бэкендом на языке Ruby. Благодаря этому первому модулю я смог создать чистый серверный проект, использующий терминал для взаимодействия с приложением Ruby.
Последние 3 недели были комбинацией передних и внутренних технологий. В этом модуле мы, наконец, познакомились с популярным фреймворком Ruby on Rails! Поиграв пару дней с фреймворком Rails, я оценил простоту и удобный интерфейс, который Rails предлагает разработчикам.
Как только мы освоились с Rails, мы сразу же перешли к фронтенд-технологиям: JavaScript, HTML и CSS!
Самой захватывающей частью всего этого была возможность общаться между интерфейсом и сервером. В частности, в этом модуле мы сосредоточились на следующих принципах взаимодействия между ними:
- Использование шаблона проектирования Model-View-Controller (MVC)
- Создание API в соответствии с архитектурой RESTful
Вы можете спросить, а для чего в данном случае фронт и бэкенд?
Внешний интерфейс имеет дело с тем, как приложение выглядит/взаимодействует с пользователем/клиентом. К таким примерам относятся UI/UX (стили CSS, платформа Bootstrap, действия JavaScript) и передача/манипулирование данными (через JavaScript).
Что касается серверной части, то в первую очередь он занимается управлением данными, получением/ответом на запрос клиента и настройкой протоколов безопасности (аутентификация, надежные параметры и проверка модели).
Совершенствуя обе стороны вместе, вы получаете полнофункциональное приложение!
ПРОЕКТ МОДУЛЯ 2
Для моего проекта модуля 2 я разработал полнофункциональное веб-приложение под названием RedDoor Media. Ниже показана живая демонстрация моего завершенного проекта.
Технологии, используемые для этого веб-приложения, включают следующее:
- JavaScript
- HTML5/CSS3
- Начальная загрузка
- Рельсы
- SQLite3
Вдохновение этим веб-приложением пришло ко мне, поскольку я заядлый читатель новостей. Помимо новых статей, я также люблю смотреть видео на YouTube. Я хотел разработать приложение, которое бы доставляло весь мой любимый медиаконтент под одну крышу!
Внешняя разработка: рендеринг живого мультимедийного контента был получен из трех сторонних источников API. Используя метод «выборки» JavaScript (показан ниже), я смог сгенерировать интерактивные элементы узла, которые будут отображать живой контент.
fetch(newsUrl) .then(response => response.json()) .then(article => { for (i = 0; i < 10; i++) { const $div = document.createElement("div") $div.classList.add("carousel-item") $div.innerHTML = `<a href="${article[i].url}"> ${article[i].title}</a>` $carousel.append($div) }
Внутренняя разработка: я создал серверную часть API rails, которая позволяет пользователям хранить информацию о своем профиле и сохраненном контенте через веб-сайт.
Используя архитектуру Model-View-Controller, я разработал четыре различных ресурса rails, которые охватывают следующее:
- Пользователь (has_many: статьи, видео, изображения)
- Веб-сайт (join_table)
- Статьи (имеет_много: пользователи, через: веб-сайт)
- Видео (имеет_много: пользователей, через: веб-сайт)
- Изображения (имеет_много: пользователи, через: веб-сайт)
В дополнение к настройке этих моделей действия контроллера были определены для включения шаблона RESTful (индексировать, показывать, создавать, обновлять, уничтожать).
После завершения шаблона MVC и RESTful включение надежных параметров и проверки модели были следующими целями:
Проверка модели:
class User < ApplicationRecord validates_precense_of :first_name, :last_name, :email, :password validates :email, format: { with: URI::MailTo::EMAIL_REGEXP } validates :password, uniqueness: true, length: {in: 7..25} end
Сильные параметры:
def create @user = User.create(user_params) if @user.valid? @user.save redirect_to user_path(@user) else render :new @user.errors end redirect_to "http://localhost:3001/index.html" end private def user_params params.require(:user).permit(:name, :email, :password) end
Некоторые из дополнительных технологий, используемых в этом приложении, включают в себя:
- JWT-аутентификация Rails
- FAST_JSON_API (сериализатор)
Одной из самых больших проблем для этого приложения была оптимизация передачи данных в циклах запрос/ответ. Большинство проблем было решено путем отладки на вкладке сети в инструментах разработчика и использования console.log при отправке ответов с сервера.
Самый большой вывод из этого проекта — это возможность учиться на собственном опыте проб и ошибок. Для моего проекта модуля 3 (следите за обновлениями) я буду разрабатывать проект, который включает в себя стек технологий MERN:
- MongoDB
- Express.js
- React.js
- Node.js
Если вы хотите более подробно ознакомиться с моим проектом, щелкните ссылку ниже на мой репозиторий GitHub:
GitHub: https://github.com/hjkmines/RedDoor-Media
Если вы хотите узнать больше о моем опыте и реализованных проектах, просмотрите мой LinkedIn, веб-сайт с портфолио и/или профиль на GitHub:
LinkedIn: https://www.linkedin.com/in/hyung-kim/
Веб-сайт портфолио: https://hjkmines.github.io/my-portfolio-website/
GitHub: https://github.com/hjkmines
Пожалуйста, не стесняйтесь обращаться ко мне с любыми вопросами или запросами по электронной почте: [email protected]