📄Работа №202752

Тема: РЕАЛИЗАЦИЯ АЛГОРИТМОВ ЭФФЕКТИВНОЙ СИНХРОНИЗАЦИИ СОСТОЯНИЙ ИНТЕРФЕЙСА ВЕБ-ПРИЛОЖЕНИЯ

📝
Тип работы Дипломные работы, ВКР
📚
Предмет программирование
📄
Объем: 52 листов
📅
Год: 2019
👁️
Просмотров: 45
Не подходит эта работа?
Закажите новую по вашим требованиям
Узнать цену на написание
ℹ️ Настоящий учебно-методический информационный материал размещён в ознакомительных и исследовательских целях и представляет собой пример учебного исследования. Не является готовым научным трудом и требует самостоятельной переработки.

📋 Содержание

АННОТАЦИЯ 2
ВВЕДЕНИЕ 5
1 ОБЗОР СОВРЕМЕННЫХ ЗАРУБЕЖНЫХ И РОССИЙСКИХ РАЗРАБОТОК.... 8
1.1 Зарубежные разработки 8
1.1.1 React 11
1.1.2 Vue 12
1.1.3 Angular 15
1.2 Российские разработки 16
1.2.1 $mol 16
2 ОСНОВНЫЕ КОНЦЕПЦИИ, ПРИМЕНЕННЫЕ В РАЗРАБОТКЕ 17
2.1 Стиль программирования 17
2.2 Компонентный подход 18
2.3 Свойства и состояние компонента 19
2.4 Реактивность 19
2.5 VirtualDOM 21
3 ОПИСАНИЕ РАЗРАБОТКИ 24
3.1 VirtualDOM 24
3.1.1 Представление DOM дерева 24
3.1.2 Применение представления DOM 25
3.1.3 Обработка изменений 26
3.1.4 Установка свойств (props) 28
3.1.5 Удаление свойств 30
3.1.6 Сравнение и обновление свойств 31
3.1.7 События 32
3.1.8 Слоты 33
3.1.9 Render 34
3.2 Управление состоянием 38
3.2.1 Основные понятия реактивности 38
3.2.2 Дополнительные возможности 40
3.3 Реактивное состояние 42
4 ТЕСТИРОВАНИЕ 44
4.1 Описание использованной методологии тестирования 44
4.2 Описание использованных инструментов тестирования 45
4.2.1 Mocha 45
4.2.2 Chai 46
4.2.3 Sinon.js 46
4.3 Написание автоматического теста 46
5 ДОКУМЕНТАЦИЯ КОДА 49
ЗАКЛЮЧЕНИЕ 51
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 52

📖 Введение

Фронтенд - клиентская сторона приложения, которая реализует пользовательский интерфейс, формирует запросы к серверу и обрабатывает ответы от него.
Основной задачей фронтенд-разработки является создание эффективного пользовательского интерфейса веб-приложения.
Актуальность темы. На данный момент в мире существует множество JS-фронтенд фреймворков, написанных с использованием различных подходов к проектированию и реализации ПО, обладающих, как сильными, так и слабыми сторонами. Но ещё нет такого фреймворка, который бы мог попробовать объединить их лучшие решения и отбросить недостатки, оставаясь доступным для изучения и удобным в использовании.
Цель работы - создание декларативного JS-фреймворка, реализующего алгоритм эффективной синхронизации состояний интерфейса веб-приложения.
Задачи работы:
• Обеспечить возможность использовать декларативный подход фрон- тенд-разработки
• Реализовать встроенную систему реактивности для мгновенного изменения состояния компонента
• Обеспечить поддержку реализации динамического пользовательского интерфейса
• Соединить в одном решении наиболее эффективные и востребованные современные подходы в разработке клиентской части веб-приложения.
Фронтенд-разработка пережила огромный подъем в последние несколько лет. Сегодня все её составляющие динамично развиваются. JavaScript растёт, как самый используемый язык. Синтаксические дополнения языка и новые функциональные возможности выпускаются ежегодно, начиная с 2015 года.
Сталкиваясь с новым фреймворком или библиотекой, часто возникает потребность переучиваться, чтобы перейти на новое решение, а они появляются довольно часто и большая часть полученного ранее опыта утрачивается. Если изучить принципы работы - опыт и навыки останутся.
С увеличением уровня абстракции сложность использования должна оставаться прежней, но могут возникать трудности в понимании, это объясняется тем, что, используя крупные конструкции, которые хранят сложные механизмы внутри и предоставляют простые способы их использования снаружи, разработчик может не знать их внутренне устройство и это в дальнейшем может привести к негативным последствиям. Негативные последствия могут возникать, потому что, скрывая сложный механизм, они не освобождают от него.
Таким образом, лучший способ освоить любую технологию - это понять её архитектуру, внутреннее устройство. А если понимаешь, значит, можешь сделать сам.
Для корректного отображения интерфейса необходимо определить внутреннее состояние программы и отобразить его как что-то видимое на экране в браузере. Для этого мы передаем набор массивов, чисел, строк, объектов, а в результате получаем дерево текстовых абзацев, форм, ссылок, кнопок и изображений и т.д. Переданный набор, как правило, представлен структурами JavaScript, а полученное дерево - Document Object Model(DOM).
Такой процесс передачи набора данных и их дальнейшая обработка и вывод на экран называется рендерингом. Рендеринг это не что иное, как проекция нашей модели данных на пользовательский интерфейс. При отображении данных мы получаем их DOM (или HTML) представление.
DOM - объектная модель документа. Эта модель является основным инструментом работы и динамических изменений на странице. Согласно DOM модели, документ - это иерархия, дерево. Узел дерева с типом элемент образуется каждым HTML-тегом. Вложенные в него теги становятся дочерними узлами.
Мы можем взаимодействовать с составляющими DOM-дерева (изменять их данные, вставлять новые узлы и удалять) с использованием JavaScript и CSS.
Состояние веб-приложения - это центральное понятие в его архитектуре. Там находится все, от чего могут зависеть остальные компоненты. Обычно состояние приложения представляет собой большую иерархическую структуру, которая в движении, она живая, она постоянно меняется. Обнаружение изменений является наиболее важной частью архитектуры, поскольку оно отвечает за видимую часть, такую как обновления DOM.
На данный момент наиболее востребованные практики отслеживания изменений состояния приложения: алгоритм VirtualDOM - для изменений в отображении интерфейса, transparent functional reactive programming - для синхронизации состояния приложения.
Отслеживание изменений - это механизм, предназначенный для обнаружения изменений в состоянии приложения и отображения обновленного состояния на экране, что гарантирует всегда синхронизированный с внутренним состоянием программы пользовательский интерфейс.
Из этого определения можно сделать вывод, что отслеживание изменений состоит из двух основных частей: обнаружение изменений и рендеринг.
В любом приложении процесс рендеринга получает внутреннее состояние программы и преобразует его в то, что мы видим на экране. Логика выполнения рендеринга не всегда тривиальна, она все же довольно проста.
Все становится намного сложнее, когда мы смешиваем данные, которые со временем меняются. Веб-приложения сегодня являются интерактивными. Это означает, что состояние приложения может измениться в любое время в результате взаимодействия с пользователем или что-то еще происходит в его окружении, это обновляет данные сервера, затем клиент получает обновление.

Возникли сложности?

Нужна качественная помощь преподавателя?

👨‍🎓 Помощь в написании

✅ Заключение

В результате работы создан декларативный JS-фреймворк, реализующий алгоритм эффективной синхронизации состояний интерфейса вебприложения. С итоговым кодом реализации можно ознакомиться по ссылке: https://github.com/hactrz/nereact.
Изучен опыт существующих решений и установлены их характерные особенности, преимущества и недостатки.
Реализованы основные концепции, отвечающие требованиям современной веб-разработки. Код покрыт автоматическими тестами и частично задокументирован. Таким образом, цель работы достигнута, поставленные задачи - решены.
Выполненная работа имеет практическую и теоретическую ценность. Полученный рабочий прототип может использоваться в небольших проектах, а так же для изучения внутренней архитектуры и устройства алгоритмов эффективной работы с DOM и реактивным состоянием, приобретения навыков в декларативном программировании и компонентном подходе.

Нужна своя уникальная работа?
Срочная разработка под ваши требования
Рассчитать стоимость
ИЛИ

📕 Список литературы

1. Star History. [Электронный ресурс] URL: https://star-history.t9t.io/ (дата обращения: 01.02.2019)
2. npm-stat. [Электронный ресурс] URL: https://npm-stat.com (дата обращения: 01.02.2019)
3. The State of JavaScript 2018. [Электронный ресурс] URL: https://stateofjs.com/ (дата обращения: 02.02.2019)
4. Алекс Бэнкс, Ева Порселло, React и Redux: функциональная вебразработка. - СПб.: Питер, 2018. - 336 с.
5. Vue.js. [Электронный ресурс] URL: https://ru.vuejs.org/ (дата обращения: 07.02.2019)
6. Хэнчетт Эрик , Листуон Бенджамин, Vue.js в действии. - СПб.: Питер, 2019. - 304 с.
7. AngularJS. [Электронный ресурс] URL: https://angularjs.org/ (дата обращения: 07.02.2019)
8. Angular. [Электронный ресурс] URL: https://angular.io/ (дата обращения: 07.02.2019)
9. $mol. [Электронный ресурс] URL: http://mol.js.org/app/demo/-/ (дата обращения: 08.02.2019)
10. Идеальный UI фреймворк. [Электронный ресурс]
URL: https://habr.com/ru/post/276747/ (дата обращения: 08.02.2019)
11. eigenmethod/mol. [Электронный ресурс]
URL: https://github.com/eigenmethod/mol (дата обращения: 08.02.2019)
12. Основные принципы программирования: императивное и декларативное программирование. [Электронный ресурс]
URL: https://tproger.ru/translations/imperative-declarative-programming- concepts/ (дата обращения: 20.02.2019)
13. Справочник современных концепций JavaScript. [Электронный ресурс]
URL: https: //medium.com/devschacht/glossary-of-modern-j avascript-concepts- 1198b24e8f56 (дата обращения: 20.02.2019)
14. Pavan Podila, Michel Weststrate, MobX Quick Start Guide. - Birmingham.: Packt, 2018. - 214p.
15. Кент Бек, Экстремальное программирование. Разработка через тестирование. - СПб.: Питер, 2017. - 224с...19

🖼 Скриншоты

🛒 Оформить заказ

Работу высылаем в течении 5 минут после оплаты.

©2026 Cервис помощи студентам в выполнении работ