ВВЕДЕНИЕ
Создание сайтов и веб-приложений является неотъемлемой частью жизни общества в интернете. Сайт является визитной карточкой любой компании или фирмы, на которую может посмотреть любой интересующийся человек и понять по стилизации, дизайну степень вклада в развитие и процветание компании.
На сайтах многих школ есть ссылка на их расписание. Чаще всего это расписание в файле, который очень долго загружается, но это всего лишь основное расписание. В нашей школе нет своего сайта с расписанием. Приходится или смотреть расписание в печатном виде, либо ждать информацию от одноклассников. Исходя из этого определяется актуальность данной работы.
Объект исследования: проектная деятельность по созданию веб-приложения.
Предмет исследования: создание веб - приложения.
Цель - создание веб-приложения на основе серверного языка NODEJS. Считывание файла excel формата и вывод данных на фронтенд.
Задачи:
Изучение фреймворка javascript – NODEJS
Изучение основных языков: разметка(html), таблица стилей(css),
язык программирования(javascript)
Обработка excel файла
Вывод данных на фронтенд
Размещение сервера на хостинге
Гипотеза: персональное веб-приложение школы с актуальным расписанием – это удобная система для обучающихся и их родителей, педагогов.
Методы исследования: изучение и анализ информационных источников, обобщение и систематизация, подведение итогов.
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ СОЗДАНИЯ САЙТОВ И ВЕБ-ПРИЛОЖЕНИЙ.
1.1 Конструктор
Конструктор – программное решение, позволяющее построить сайт по модульному принципу, когда разработчик собирает всю конструкцию с помощью готовых «кубиков», которые предоставляет конструктор. Такой подход позволяет создать сайт вообще без знаний о веб-разработке и сопутствующих навыков. Больше всего подойдет тем, кто хочет сделать простенький сайт о себе или своей компании, без претензий на качество программного кода и скорость работы сайта.
Плюсы:
Низкая цена. Почти все конструкторы изначально бесплатны, а стоимость подключаемых модулей очень низкая;
Простота использования. Для того, чтобы создать свой сайт, достаточно уметь пользоваться браузером компьютера и иметь чувство вкуса;
Большие программные скрипты, подключение модулей, размещение на хостинге и другие скрытые процессы осуществляются через понятную панель управления несколькими кликами по кнопкам.
Минусы:
За первичной дешевизной часто скрываются дополнительные, порой значительные, траты: размещение на хостинге, домен второго уровня (по типу example.ru), электронная почта с именем домена и др.;
Тяжеловесность сайта. Сайт, сделанный на конструкторе всегда будет загружаться дольше аналогичного сайта, сделанного на CMS или разработанного самостоятельно. Объясняется это тем, что конструктор содержит в себе огромное количество программного кода, который не относится к Вашему сайту, но необходим для построения его итогового внешнего вида.
1.2 CMS
В данном случае рассмотрим самую популярную CMS – WordPress.
CMS – это комплекс программных инструментов для управления веб-контентом. Это базовый каркас и набор дополнительных инструментов и надстроек, который позволяет не только создать веб-сайт или веб-приложение, но и поддерживать его работу, обновлять контент и взаимодействовать с пользователями. Все CMS имеют панель управления с относительно дружелюбным интерфейсом. Основной язык программирования – PHP. Любая CMS может позволить создать даже очень сложные решения, такие как интернет-магазины или большие корпоративные сайты с глубокой вложенностью страниц, но и у них есть свои особенности.
Плюсы:
Бесплатный доступ. Почти все CMS (кроме 1С-Битрикс) изначально бесплатны, а кроме того, в сети существует множество готовых шаблонов сайтов под них (особенно под WordPress). Берете любой понравившийся, меняете дизайн под себя и сайт готов;
Удобное управление контентом. С помощью панели управления управлять сайтом легко и просто. При использовании CMS не требуется особых навыков для управления контентом;
Множество готовых решений. В сети существует масса модулей, плагинов, дополнений для различных задач (от слайдеров для картинок до систем seo-оптимизации и сопровождения пользователя).
Минусы:
Уязвимость сайта. Самый важный минус любой широко распространенной CMS. Даже сайты, сделанные на конструкторах порой лучше защищены от взлома, чем те, которые находятся под управлением WordPress и других CMS. Даже платная 1С-Битрикс признана далеко не самой надежной и защищенной от атак и проникновения;
Затраты на дополнительный контент. Как и в случае с конструкторами, дополнительные модули и расширения сайта для CMS стоят денег, и в данном случае, уже больших, чем для конструкторов. Почти любой модуль, который относится к постоянно используемым, потребует либо приличных затрат в начале, либо платной ежемесячной подписки.
1.3 Самостоятельная разработка
Самый творческий и свободный, но и самый трудоемкий процесс, сравнимый с пошивом костюма по фигуре. Написание сайта или веб-приложения требует серьезных знаний не только по самим языкам программирования, но и пониманию архитектуры (php, java, nodejs, python, ruby, golang). При этом, создавая сайт с нуля, клиент получит уникальный и персонифицированный продукт, который будет решать его задачи и не тратить время на лишние процессы. Самостоятельная разработка позволяет создавать проекты любой сложности и по любым пожеланиям клиента.
Плюсы:
Свобода выбора. Вы можете заказать все, что необходимо для эффективного решения бизнес-задач. При этом, весь функционал будет написан именно под Ваши нужды, а не адаптирован из какого-либо шаблона;
Широкие возможности продвижения. В отличие от CMS и конструкторов, продвинуть в естественном поиске самостоятельно разработанный сайт намного легче. Кроме того, в нашей студии, при заказе корпоративного сайта или интернет-магазина, подготовительный этап к seo-продвижению входит в стоимость разработки;
Индивидуальный дизайн. Только чистый код позволит Вам создать тот продукт, который Вы видите и хотите получить. Отдельно можно отметить, что грамотный подход к UI/UX может быть только при использовании чистого кода, так как при использовании CMS, клиент вынужден обращаться к готовым решениям, которые могут не отвечать всем его потребностям.
Минусы:
Временные затраты. Как ни крути, но использование CMS и конструкторов позволяет сделать простой сайт быстрее, чем при разработке без них. В ситуациях, когда время играет большую роль, обращение к чистому коду становится бессмысленным.
Выводы по главе 1:Проанализировав данные о создании сайта самым оптимальным решением стала самостоятельная разработка. Так как для разработки приложения с логикой и анализом каких-то входных данных (файл excel) нужны определенные библиотеки и самостоятельная логика вывода для подходящего оформления и дизайна. Изучаемыми языками для самостоятельной разработки стали: html, css, javascript и фреймворк nodejs.
ГЛАВА 2. РАЗРАБОТКА ВЕБ-ПРИЛОЖЕНИЯ
2.1 Создание html-страниц с расписанием
В ходе задумки автоматизированного сайта была написана первая версия приложения. Для данной версии неавтоматизированного приложения были написано несколько html страниц.
Две основные таблицы – это таблицы с расписанием классов на текущую половину года (рис.1). Таблицы заполнялись вручную и в самом коде, что неудобно и неправильно.
Рис.1. Нtml страница основного расписания
Следующими были написаны две html страницы – актуальные изменения для 1 и 2 смены (рис.2). Таблицы заполнялись вручную в самом коде каждый день. Данные заполнения показали, что неавтоматизированное приложение содержит множество минусов. Самым главным из них стало время заполнения и невозможность в некоторые дни заполнить изменения.
Рис.2. Нtml страница с изменениями
Затем была сделана кнопка переключения по дням недели. Кнопка содержала в себе 6 дней недели и представляла собой выпадающий список (рис. 3).
Рис.3. Кнопка с днями недели
Следующим был написан header (верхняя панель управления приложением, рис.4). Он облегчил перемещение между разными разделами (html страницами). Также было создано выделение того раздела, на котором сейчас находится пользователь. Теперь пользователь не будет путать, на которую из таблиц он смотрит.
Рис.4. Header (верхняя панель управления сайтом)
В завершении был сделан footer (нижняя панель управления приложением, рис.5). В нём мы поместили ссылки на таблицы с расписанием и написали авторов веб-приложения.
Рис.5. Окончательный вид с footer (нижней панелью управления приложением)
Также в течение всей работы над написанием первой версии подобрали наиболее спокойные цвета, чтобы приложение было в одной цветовой гамме и при просмотре не резал глаз.
Новинкой для приложения стала страница с объявлениями (рис.6).
Здесь можно посмотреть дополнительную информацию по уроку или консультации выбрав в списке свой класс. Страница тоже заполнялась вручную каждый день, что занимало много времени.
Рис.6. Нtml страница с объявлениями
Первая версия была протестирована на разных устройствах. Как и на мобильных, так и на стационарных устройствах открывалось правильно, без ошибок. Пользоваться веб-приложением можно онлайн без регистрации и без других защитных систем для удобства пользователям разных возрастов.
Ссылка на веб-приложение первой версии: https://raspisaniye-17-gimnaziya.github.io/2_Smena/.
Приведём посещаемость 1 версии веб-приложения в течении ноября 2021 года (рис. 7). Отметим высокую степень посещаемости, учитывая, что проект был запущен в тестовом режиме для обучающихся 7 классов.
Рис. 7. Количество просмотров в ноябре 2021 года
Таблица 1. Обновления и количество просмотров сайта
Дата |
Изменения, корректировка |
Количество просмотров |
8.11.2021 |
Внесены актуальные изменения в расписании, раздали qr-коды ученикам 7 классов |
419 |
9.11.2021 |
Расклеены qr-коды в четырёх кабинетах |
320 |
10.11.2021 |
Внесены актуальные изменения в расписании |
42 |
11.11.2021 |
Загружено объявление |
83 |
12.11.2021 |
Изменений в расписании нет |
7 |
13.11.2021 |
Изменений в расписании нет |
26 |
14.11.2021 |
Изменений в расписании нет |
17 |
15.11.2021 |
Добавлены номера кабинетов для основного расписания 2 смены |
24 |
16.11.2021 |
Загружено объявление |
26 |
17.11.2021 |
Изменений в расписании нет |
19 |
18.11.2021 |
Внесены актуальные изменения в расписании, переход школы на дистанционное обучение |
36 |
19.11.2021 |
Загружено объявление |
42 |
20.11.2021 |
Изменений в расписании нет |
38 |
21.11.2021 |
Внесены актуальные изменения в расписании |
51 |
22.11.2021 |
Внесены актуальные изменения в расписании |
67 |
23.11.2021 |
Внесены актуальные изменения в расписании |
99 |
24.11.2021 |
Внесены актуальные изменения в расписании |
101 |
25.11.2021 |
Изменений в расписании нет |
96 |
26.11.2021 |
Изменений в расписании нет |
92 |
27.11.2021 |
Внесены актуальные изменения в расписании |
90 |
28.11.2021 |
Внесены актуальные изменения в расписании |
87 |
29.11.2021 |
Внесены актуальные изменения в расписании |
95 |
30.11.2021 |
Внесены актуальные изменения в расписании |
98 |
Анализ диаграммы и таблицы 1 показали, что рост посещений зависит от внесения актуальных изменений, добавления новых функций на страницы.
Одним из качественных изменений было создание QR-код табличек для быстрого доступа к веб-приложению. Учитывая, что каждый школьник или учитель имеет у себя мобильный телефон с доступом в интернет, мы предположили, что QR-код для посещения приложения будет востребованным.
Нами был разработан яркий заметный дизайн (рис.8). 9 ноября 2021 года qr-коды расклеены в четырёх кабинетах и выданы каждому обучающемуся 7 классов.
Рис.8 Табличка QR-кода с расписанием
Первый этап – инициализация проекта:
Для этого просто напишем в терминал (находясь в папке проекта)
команду npm init –y
Рис. 9. Инициализация проекта
Для создания сервера используется модуль http.
Рис.10. Подключение модуля http
Обработка запросов и ответов сервера осуществляет метод createServer. Передаваемыми параметрами будут: request(запрос) и response(ответ).
Рис. 11. Добавление метода createServer()
Обработка excel файла
Для считывание файла формата excel существует библиотека exceljs
Рис.12. Подключение библиотеки excel
Выделение нужных модулей для считывания.
Рис. 13. Определение пути до нужного файла excel
Создание функции считывания и получение рабочего листа:
Рис.14. Получение рабочего листа
(для считывания классов использовались регулярные выражения)
Создание цикла считывания таблицы (столбцы и строки)
Рис.15 Цикл обработки файла excel (приведена часть кода)
Для удобства удалим из массива со считанными данными значения null
Рис.16 Функция удаление элементов из объекта (приведена часть кода)
Фронтенд (англ. front-end) — клиентская сторона пользовательского интерфейса к программно-аппаратной части сервиса.
Создание верстки.
Скелет приложения был написан на html и стилизован с помощью css внутри сервера nodejs (response).
В полноценном автоматизированном приложении следует передать количество выполненной работы через правильно оформленный дизайн. Нашей задачей было сделать интерфейс более удобным и привлекательным.
Для удобности была создана боковая панель, содержащая кнопки выбора дня недели. (При нажатии на кнопку срабатывала функция считывания нового файла excel относительно выбранного дня недели).
На заднем плане можно увидеть фотографию нового здания школы.
На переднем плане было создано поле для размещения таблицы. Используемыми столбцами таблицы стали: номер урока (от одного до шести), время (считывается в файле и заполняется через цикл), предмет (считывается в файле) и кабинет (тоже считывается в файле).
Можно вспомнить объявления из первой неавтоматизированной версии приложения. В новой автоматизированной версии идея усовершенствуется. Теперь дополнительная информация размещается чуть ниже таблицы, основываясь на нажатой кнопке класса.
Рис.17. Html структура автоматизированного приложения
Выделение элементов таблицы с помощью javascript внутри сервера nodejs(response).
Рис. 18. Выделение элементов автоматизированной структуры (часть кода)
Вывод классов в виде кнопок.
Рис.19 Пример кнопок (пример вывода классов)
Рис. 20. Вывод кнопок (приведена часть кода)
Вывод уроков с кабинетами в выделенные ячейки относительно нажатой кнопки класса.
Рис.21 Вывод уроков и кабинетов (приведена часть кода для одной кнопки)
ЗАКЛЮЧЕНИЕ
В ходе разработки нами были изучены такие языки программирования как: html, css, javascript, фреймворк nodejs. Было создано автоматизированное веб-приложение на основе серверного языка NODEJS, со считыванием файла excel формата и вывод данных на фронтенд основываясь на нажатую кнопку класса пользователем. Процесс создания автоматизированного приложения был увлекательный и захватывающий.
Поставленная цель – создание веб-приложения на основе серверного языка NODEJS и считывание файла excel формата и вывод данных на фронтенд достигнута.
В ходе выполнения проекта научились оценивать свою деятельность, включенность в групповую работу, в процессе решения исследовательской задачи, совершенствовали умения работы за компьютером.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
https://www.sololearn.com/
https://www.udemy.com/
https://metanit.com/
https://learn.javascript.ru/