Professional Documents
Culture Documents
Изработил: Ментор:
Андреја Јовановски 141143 д-р Иван Чорбев
2
Содржина
Апстракт ................................................................................................................................................. 5
Вовед ...................................................................................................................................................... 6
Користени технологии .......................................................................................................................... 7
JavaScript ............................................................................................................................................ 7
Карактеристики ............................................................................................................................. 7
JavaScript & ECMAScript ................................................................................................................. 7
Карактеристики ............................................................................................................................. 7
React ................................................................................................................................................... 8
Хронологија на React .................................................................................................................... 9
Карактеристики ........................................................................................................................... 10
Споредба со Angular и Vue ......................................................................................................... 10
JSX – JavaScript XML ..................................................................................................................... 11
Компоненти ................................................................................................................................. 12
React Router ..................................................................................................................................... 15
CSS..................................................................................................................................................... 15
Styled Components ........................................................................................................................... 16
React Transition Group ..................................................................................................................... 17
Transition Group & CSSTransition................................................................................................. 17
EmailJS .............................................................................................................................................. 17
CMS ................................................................................................................................................... 17
Headless CMS .................................................................................................................................... 18
Prismic ........................................................................................................................................... 18
Bitbucket ........................................................................................................................................... 20
Техничко Решение............................................................................................................................... 20
Опис .................................................................................................................................................. 20
Структура на проектот и веб страната ........................................................................................... 20
Влечење на податоци од Prismic ................................................................................................... 22
Изглед на веб страната ................................................................................................................... 23
Навигирање низ апликацијата ....................................................................................................... 24
Анимации ......................................................................................................................................... 24
Страница со настани ....................................................................................................................... 25
Контакт страна ................................................................................................................................. 25
Блог ................................................................................................................................................... 26
Позадинска музика ......................................................................................................................... 27
CMS и содржина .............................................................................................................................. 27
Создавање типови ....................................................................................................................... 27
3
Пополнување со содржина ........................................................................................................ 28
Додавање на мултимедија ......................................................................................................... 29
Заклучок ............................................................................................................................................... 30
Користени ресурси .............................................................................................................................. 31
4
Апстракт
Во рамките на оваа дипломска работа беше изработена веб апликација која претставува
портфолио на музичкиот колектив Oubli. Главна цел на апликацијата е да се создаде платформа
на која колективот ќе прави промоција на нивните настани, нова издадена музика, како и блог
каде ќе се објавува содржина поврзана со самиот колектив, членовите и новостите од музичката
индустрија.
Главната технологија со која е развиена веб апликацијата е Javascript, поточно
библиотеката React. Како помошни библиотеки беа употребени, поточно Styled Components
заедно со CSS концептот за распоредување на елементите, flexbox и Prismic.io за менаџирање
со содржината на веб страната. Во текот на градењето на апликацијата е користен BitBucket –
систем за контрола на верзии.
5
Вовед
Музиката игра клучна улога во нашиот секојдневниот живот. Луѓето голем дел од
времето го поминуваат слушајќи музика.
Но, зошто е таа потребна и им е толку важна на луѓето?
Според една анкета која е спроведена во рамките на истражувањето наречено “Разоткривањето
на музичкиот мит”, музиката е третопласирана во однос на работи без кои човекот не би можел
да опстои ниту еден ден. Пред музиката се наоѓаат само интернетот и мобилниот телефон кои
во денешно време ни овозможуваат да ја слушаме каде и да сакаме. Со ваквите истражувања
се укажува дека музиката може да има значителни ефекти врз свеста, емоциите и однесувањето
на луѓето. Исто така се укажува дека луѓето ја користат за извршување различни работи, од
регулирање на емоциите до самоизразување или социјално вмрежување.
Со развојот на социјалните мрежи тие стануваат се по општи, односно нивната намена
најмногу е фокусирана на поставување фотографии, лични мислења и тие стануваат повеќе
наменски, а со тоа се губи и шансата да одредени категории ги искористат мрежите за некаква
промоција. Ваков пример е и музиката, како и социјалната мрежа myspace која пред појавата на
гигантите Facebook и Instagram беше прва по бројот на корисници. Таа овозможуваше
стилизирање на таканаречениот личен простор што денешните социјални мрежи не го
дозволуваат. Поради ваквата ограниченост се јавува потребата од создавање на веб страни во
денешно време за да музичарите имаат некакво сопствено стилизирано портфолио каде покрај
музиката ќе можат да споделат вести, информации и директен контакт до нив.
6
Користени технологии
JavaScript
JavaScript како програмски јазик првпат се појавил во Мај 1995 година, а дури во 1997 се
појавил првиот стандард за јазикот кој бил поставен од страна на ECMA International. Една
година подоцна објавена е неговата следна верзија, ECMAScript 2, за да по скоро една година е
објавена верзијата која што ќе е основа на денешната верзија на јазикот, а тоа е верзијата
ECMAScript 3. Во овој период Microsoft ја прекинува поддршката за јазикот а и соработката со
другите компании околу овој јазик, за да се посветат повеќе на нивниот пребарувач Internet
Explorer.
Карактеристики
Карактеристики
7
- Има корисни алатки кои се пригодни за динамично генерирање на HTML содржина. Ни
овозможува да правиме секакви промени на екранот преку управување на различни
настани кои може да се појават на екранот (пр. клик со глувче на одредена површина)
React
Слика 1 React
8
Хронологија на React
Година Новости
9
Карактеристики
Поранешен вработен
Основач Facebook Google
во Google
Официјален веб сајт reactjs.org angular.io vuejs.org
MVC (Model View
Модел Виртуелен DOM Виртуелен DOM
Controller)
Напишан во JavaScript TypeScript JavaScript
TypeScript HTML темплејти и
Преферира JSX (JavaScript XML)
(препорачливо) JavaScript
Големина 100 KB 500 KB 80 KB
10
Слика 2 Статистика од број на пребарувања на Google
JSX или JavaScript XML е продолжување на синтаксата на JavaScript јазикот. Налик HTML
и XML, JSX обезбедува начин да се структурира рендерирање на компонентите користејќи
синтакса позната за многу програмери. React компонентите во најголем дел од случаите се
пишувани во JSX, иако тие можат и да бидат чист JavaScript код.
JSX овозможува во него да содржи вредност на било каква React променлива, својство
или некој валиден JavaScript израз. If-else изразите не смеат да се користат, но е дозволено
користење на релациски и тернарнен оператор.
11
Слика 5 JSX пример
Сите JSX елементи мораат да содржат и таг за затварање, но постојат и елементи кои што
се само затварачки.
Компоненти
Типови на компоненти
Props
12
дадената компонента се предизвикува ререндирање, бидејќи целиот концепт на React се
заснова на ова. Постојат случаеви кога некои од props-от сакаме да имаат предефинирана
вредност, а тоа се прави преку следната команда:
State
State-от е уникатен за секоја компонента. Секоја компонента има свој state каде
зачувуваме податоци кои и се потребни на компонента во нејзиниот животен циклус. Тој се
иницијализира во конструкторот на компонентата со директна референца до state-ot:
13
Состојбата на state-от може да се менува со повикување на методот setState() во било
кој дел на компонентата. Тој има неограничена големина, а до него може да се пристапи со
кодот this.state.imeNaPromenliva
Секоја компонента има свој животен циклус кој опфаќа три фази и свои методи кои се
повикуваат во даден момент:
- 3-те фази на една компонента со методите кои се повикуваат во нив:
- Прикачување (Mounting)
- constructor()
- getDerivedStateFromProps()
- render()
- componentDidMount()
- Ажурирање (Updating)
- getDerivedStateFromProps()
- shouldComponentUpdate()
- render()
- getSnapshotBeforeUpdate()
- componentDidUpdate()
- Отстранување (Unmounting)
- componentWillUnmount()
- constructor():
Првиот метод што се повикува пред да се закачи компонентата. Служи за
иницијализирање на локалниот state и доколку има потреба од прислушување за некакви
настани.
- getDerivedStateFromProps():
Овој метод истотака се повикува пред компонентата да се закачи, но се користи само
доколку сакаме да направиме промена во локалната состојба на компонентата ако
претходно сме имале промена на props-от.
- render():
Овој метод мора да го содржи секоја компонента бидејќи ги содржи елементите кои што
сакаме да ги прикажеме на екранот. Овој метод нема да се повика само во случај доколку
shouldComponentUpdate врати false.
- componentDidMount():
Се повикува кога компонентата ќе се закачи на DOM дрвото. Обично се користи за да се
направат дополнителни промени кои не сме ги направиле при иницијализирање на
компонентата односно constructor() методот.
- shouldComponentUpdate():
Метод со кои што можеме да и укажеме компонентата доколку има промена да не се
ререндерира. Стандардно однесување и е да се ререндерира.
14
- getSnapshotBeforeUpdate():
Се повикува веднаш после ререндирањето и се користи доколку сакаме да задржиме
некоја состојба од DOM дрвото и секоја промена ќе биде препратена на
componentDidUpdate() методот.
- componentDidUpdate():
Се повикува одма после ререндерирањето и се користи доколку настанала некаква си
промена додека траело ререндирањето за да се направи промена во локалниот state.
- componentWillUnmount():
Се повикува пред компонентата да се тргне од DOM дрвото. Се користи за да се исклучат
тајмери, мрежни поврзувања или слушање на некакви настани.
React Router
CSS
CSS се залага за Cascading Style Sheets со акцент поставен на „Стил“. Додека HTML се
користи за структурирање на веб-документ (дефинирање на работи како наслови и ставови и
овозможувајќи ви да вградите слики, видео и други медиуми), CSS доаѓа преку и ги наведува
15
распоредот, боите и фонтовите на страницата на вашиот документ. CSS носи стил на веб-
страниците преку интеракција со HTML елементи.
CSS нуди повеќе можности за распоредување на елементите во DOM дрвото. Во
апликацијата е искористен концептот на flexbox кој по природа е еднодимензионален, односно
можеме да одредиме дали елементите на страната ќе бидат поставени вертикално или
хоризонтално. По самото име елементите се флексибилни, тие или се растегнуваат да зафатат
екстра простор или се намалуваат за да зафатат помалку место кога се поставени во flexbox
контејнер. Flexbox со следните карактеристики се издвојува од другите техники за
распоредување на елементите:
- Вертикално (хоризонтално) центрирање на елемент во споредба со родителот
- Сите деца елементи на контејнерот зафаќаат ист простор од достапната
висина/ширина
- Во распоред со колони, ги прави сите со еднаква висина без разлика на
големината на содржината
Styled Components
16
React Transition Group
EmailJS
CMS
17
Headless CMS
Headless CMS е систем кој се основа само на back-end страната на една веб апликација,
а и поради тоа го добива името “headless”. Овој тип на CMS функционира со едноставен
интерфејс за додавање содржина, а пристапот до него е преку RESTful API (JSON, XML) за да
придобиеме информации од него. Поради овој пристап CMS системот е потполно независен од
тоа како ние ќе ги прикажеме информациите, туку само да прими REST повик, и потребните
информации да ги спакува и да ги прати назад.
Prismic
Prismic претставува CMS односно систем за менаџмент на содржина. Тој е headless CMS
систем што значи дека е целосно независен од каде е поставена front-end апликацијата.
Неговото менаџирање и менување на содржина, автоматски се изразува на веб страната.
Идејата позади ваквото решение е да се поедностави работата пред се на уредниците на
содржината за да не се меша со работата на девелоперите. Овозможува да се користи со било
каква front-end технологија со едноставни повици до Prismic API-то преку нивниот клиент.
Слика 14 Prismic
Prismic CMS е SaaS back-end API со сопствена база кој е едноставен за користење. Самиот
CMS има поддршка за повеќето front-end технологии меѓу кои React, Vue, Gatsby, Next и др. За
скоро секој од наведените постои соодветна имплементација која уште толку го олеснува
неговото користење.
Карактеристики
18
Слика 15 Дијаграм за работата на headless CMS
Prismic обезбедува едноставно API, преку кое со HTTP GET побарување, можеме да
повлечеме податоци од нашата база. Тој одговорот го враќа во JSON формат, што е предност за
полесна обработка на податоците на вебсајтот кој што го користи. Еден ваков повик има три
задолжителни параметри:
19
Параметар Опис
Bitbucket
Техничко Решение
Опис
20
Слика 16 assets
- components – Тука се сместени функционалните компонентите од понизок ред, кои
служат само за приказ на податоците
Слика 17 components
- content – Тука се сместени страните кои ги примаат податоците и потоа ги предаваат на
горенаведените функционалните компоненти
Слика 18 содржина
21
Слика 19 структура на компонентите
22
Слика 21 AppContainer почетна состојба и животен циклус
Слика 22 Homepage
Првичниот екран ги покажува последните три објавени содржини. На клик на било која
од трите новости ќе бидете одведени до местото каде што е објавена информацијата. Доколку
е настан, таа ќе води до официјалната страна на настанот (пр. Facebook, Resident Advisor), а за
останатите објави тие ќе бидат пренасочени до блогот каде целосно ќе може да се прочита
објавата.
23
Навигирање низ апликацијата
Анимации
24
Слика 25 Класите со стилови анимација
Страница со настани
Слика 25 Настани
Контакт страна
25
пораката и самиот тој ќе испрати барање до неговото API, кое што ќе ја пренасочи пораката до
колективот, во случајот “info@oubli.com”.
Блог
Слика 27 Блог
26
Позадинска музика
CMS и содржина
Создавање типови
27
некаква промена, тоа може да го сториме со лебдење преку полето и од таму да ја кликнеме
иконата за поставки.
Пополнување со содржина
28
Додавање на мултимедија
Бидејќи страната исто така покрај текст содржи и мултимедија, Prismic АPI-то овие
податоци ги чува на посебно место, во Media делот. Поддржува слики, видеа, музика, pdf
документи и др. Додавањето на мултимедија е едноставно, преку Media волшебникот. Тие се
додаваат со повлекување и директно спуштање врз волшебникот или со клик на копчето
“Upload media” во горниот десен агол.
29
Заклучок
Во рамките на оваа дипломска работа е изработена веб апликација за музичкиот
колектив Oubli како своевидно портфолио. Главниот мотив беше недостатокот на стилизирање
на социјалните мрежи каде самиот колектив се промовира. Апликацијата може да се подобри
од аспект на кориснички искуство со следните функционалности:
- Да се овозможи претплата за заинтересираната публика да добива тековни
информации по емаил порака
- Да се имплементира онлајн видео стриминг и радио станица која ќе функционира
преку вебсајтот кога колективот ќе има некаков настан
- Да се додаде електронска продавница преку која заинтересирани ќе можат да купат
билет за настаните на колективот или брендиран материјал
- Да се додаде опција за коментирање на блогот
30
Користени ресурси
http://www.soundslikebranding.com/myth/Uncovering_a_musical_myth.pdf
https://exploringjs.com/impatient-js/ch_history.html#standardizing-javascript
https://en.wikipedia.org/wiki/ECMAScript
https://en.wikipedia.org/wiki/React_(web_framework)
https://reactjs.org
https://styled-components.com/docs
https://www.emailjs.com/docs/
https://www.prismic.io
31