technologie front

Transkrypt

technologie front
WYKŁAD 1
TECHNOLOGIE FRONT-END
CZĘŚĆ 1
TROCHĘ HISTORII
strona internetowa
Webmaster - grafika, baza, programowanie, layout
(Photoshop, MySQL, PHP, HTML, CSS, JS)
Grafik - grafika
(Photoshop, Adobe Illustrator)
strona internetowa
Webmaster - baza, programowanie, layout
(MySQL, PHP, HTML, CSS, JS)
TROCHĘ HISTORII
Webdesigner, grafik - grafika
(Photoshop, Adobe Illustrator)
UX – prototyp interfejsu aplikacji
aplikacja
internetowa
(HTML, CSS, narzędzia UX)
Front-end developer –
kodowanie interfejsu aplikacji
(HTML, CSS, LESS, SASS, JS, frameworki JS, Karma, Node.js)
Back-end developer – kodowanie logiki aplikacji
(języki programowania, bazy danych)
TECHNOLOGIE FRONT-END’OWE
Technologie pozwalające na tworzenie interfejsu użytkownika
w aplikacjach internetowych.
Wraz z rozwojem aplikacji webowych, praca nad interfejsem
użytkownika ewoluowała z tworzenia statycznych, generowanych po
stronie serwera widoków w kierunku dynamicznych interfejsów,
reagujących na działania użytkownika z jednoczesnym ograniczeniem
odwołań do serwera.
CO NA TO PRACODAWCY?
TECHNOLOGIE FRONT-END’OWE
Obejmują:
 Język znaczników HTML;
 Kaskadowe arkusze styli CSS:
o preprocesory CSS: Less, Sass (SCSS), Stylus, CSS-Crush;
o frameworki CSS: Twitter Bootstrap, Materialize, Foundation;
o Responsive Web Design: media queries;
TECHNOLOGIE FRONT-END’OWE
 JavaScript:
o Biblioteki JS: jQuery, jQuery Mobile, Vanilla JS;
o MV* Frameworki JavaScript: AngularJS, Backbone.js, Ember.js,
React.js, Knockout.js, itd…
o Testy jednostkowe: Karma, Jasmine;
 Narzędzia:
o Node.js;
o Bower;
o Grunt;
o Gulp;
o I wiele innych…….
TECHNOLOGIE FRONT-END’OWE
BASIC FRONT-END
Podstawowe umiejętności:
 HTML 5;
 Kaskadowe Arkusze Styli CSS;
 Język JavaScript;
FRONT-END DEVELOPER
Umiejętności front-end developera:
 Preprocesory i frameworki CSS;
 MV* frameworki JavaScript;
 Narzędzia do budowania front-end’u;
FRAMEWORKI CSS
Frameworki oparte o język HTML, kaskadowe arkusze stylów
CSS oraz język skryptowy JavaScript. To zestaw gotowych
rozwiązań, bibliotek i narzędzi, które można wykorzystać przy
tworzeniu stron internetowych albo ich prototypów.
Obsługują media queries, są oparte o siatkę grid, oferują własny
system kontrolek i przycisków.
 Twitter Bootstrap,
 Foundation (Zurb),
 Material Design (Google).
BOOTSTRAP (TWITTER, SIERPIEŃ 2011)
(Twitter, sierpień 2011, v.4)
Twitter Bootstrap to jeden z najbardziej popularnych framework’ów
do tworzenia responsywnych i przyjaznych urządzeniom mobilnym
stron internetowych.
BOOTSTRAP
(Twitter, sierpień 2011, v.4)
• Oparty o siatkę 12 kolumn;
• 4 punkty przełamania dla urządzeń mobilnych;
• Współpracuje z preprocesorami SCSS i Less;
FOUNDATION
(Zurb, październik 2011, v.6)
Również w pełni konfigurowalny, dzięki użyciu preprocesora SASS.
Posiada 12-kolumnową płynną siatkę, którą można łatwo zagnieżdżać.
Warto dodać, iż jest to pierwszy duży framework wykonany zgodnie z
regułą mobile first, co sprawia iż tworzenie mobilnych wersji stron jest
bardzo szybkie i proste. Zawiera pełen zestaw elementów UI i
skryptów JS.
FOUNDATION
(Zurb, październik 2011, v.6)
• Oparty o siatkę 12 kolumn;
• 6 punktów przełamania dla urządzeń mobilnych;
• Współpracuje z preprocesorem SASS;
• Trzy rodzaje: dla serwisów, newsletterów, aplikacji webowych (w pakiecie
pełna integracja z AngularJS).
MATERIAL DESIGN
(Google, lipiec 2014)
Opracowany dla Androida zestaw reguł i styli dotyczących interfejsu.
Na tej podstawie powstało wiele framework’ów oferujących
komponenty tworzone według wytycznych Google, np. Materialize.
Google oferuje też własny framework: Material Design Lite.
PREPROCESORY CSS
Preprocesory CSS to narzędzia, które pozwalają pisać kod CSS z
wykorzystaniem bardziej zaawansowanych możliwości, takich
jak zmienne, operatory, funkcje czy bloki danych.
Po zapisaniu, pliki preprocesorów są kompilowane do zwykłych plików
CSS i mogą być swobodnie wykorzystywane w aplikacjach webowych.
Plik wejściowy
(.less, .scss, .styl)
Kompilator
Plik wyjściowy
(.css)
PREPROCESORY CSS - ZALETY
 Możliwość ustawiania zmiennych i parametrów, dzięki czemu
zachowuje się spójność w stylach, np. można zdefiniować główny
kolor lub obramowanie współdzielone w całej aplikacji.
 Zmniejszenie kodu CSS przez eliminację powtórzeń tych samych
bloków kodu.
 Zagnieżdżanie reguł, dzięki czemu łatwiej zarządzać selektorami.
 Łatwość zarządzania kodem CSS i przenoszenia go między
aplikacjami z jednoczesnym wyborem, które moduły css będą
potrzebne.
 Możliwość wykorzystywania matematyki i funkcji logicznych.
PREPROCESORY CSS - PRZYKŁAD
.wrapper {
max-width: 960px;
padding-top: 30px;
}
.wrapper p {
font-size: 12px;
}
.wrapper a {
text-decoration: none;
color: red;
}
.wrapper p a {
font-weight:bold;
color: blue;
}
.wrapper p a:hover {
color: green;
}
css
.wrapper {
max-width: 960px;
padding-top: 30px;
a{
text-decoration: none;
color: red;
}
p{
font-size: 12px;
a{
font-weight:bold;
color: blue;
&:hover {
color: green;
}
}
}
}
less
PREPROCESORY CSS
Do najbardziej znanych preprocesorów CSS zaliczają się:
 Sass (Syntactically Awesome Style Sheets) - najbardziej
dojrzały ze wszystkich preprocessorów. Swoimi początkami sięga
2006 roku.
 Less (Leaner CSS) - został stworzony w odpowiedzi na język Sass
w roku 2009. W odpowiedzi Sass wprowadził nową składnię scss. \
 Stylus - najmłodszy z całej trójki, swoimi początkami sięga 2011
roku.
SASS (SCSS)
Oficjalna wersja Sass jest wersją open-source
opartą o język Ruby. Istnieją jednak rozszerzenia
oparte o inne języki, w tym np. PHP czy Java.
Sass umożliwia pisanie kodu w dwóch składniach –
sass lub scss.
 Składnia sass zamiast nawiasów klamrowych do definiowania
bloków wykorzystuje wcięcia, natomiast reguły oddziela od siebie
znak nowej linii (podobne do kodu napisanego w YAML lub Haml).
 Składnia scss wraca swoimi założeniami do klasycznego
formatowania kodu CSS. Do definiowania bloków wykorzystujemy
nawiasy klamrowe, z kolei średniki oddzielają reguły od siebie.
SASS (SCSS) - PRZYKŁAD
scss
sass
=border-radius($radius)
-webkit-border-radius: $radius
@mixin border-radius($radius) {
-moz-border-radius:
$radius
-webkit-border-radius: $radius;
-ms-border-radius:
$radius
-moz-border-radius: $radius;
border-radius:
$radius
-ms-border-radius: $radius;
border-radius: $radius;
.box
}
+border-radius(10px)
.box {
.box {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
}
@include border-radius(10px);
css
}
LESS
Dynamiczny język arkuszy stylów stworzony
przez Alexis Selliera. Pierwsza implementacja
napisana była w Ruby, późnej została zastąpiona wersją napisaną w
JavaScript.
Less jest zagnieżdżonym metajęzykiem - poprawny kod CSS jest
również poprawnym kodem Less. Główną różnicą pomiędzy Less i
innymi prekompilatorami CSS jest możliwość kompilacji w czasie
rzeczywistym kodu przez przeglądarkę.
LESS - PRZYKŁAD
less
.size(@width; @height: 100px) {
width: @width;
css
img {
width: 50px;
height: @height;
height: 100px;
}
.color() {
color: red;
}
img {
.size(50px);
.color;
}
color: red;
}
STYLUS
Stosunkowo nowy preprocesor wzorowany na
obu poprzednich. Został stworzony przez TJ
Holowaychuk’a, byłego programistę Node.js i
twórcę języka Luna. Napisany w JADE i Node.js.
To, co odróżnia go od pozostałych to fakt, że można w nim korzystać z
dowolnego zapisu reguł – zarówno używając klamer i średników (SCSS i
LESS) jak i ignorując je (SASS). Można też mieszać zapisy w jednym
pliku.
PORÓWNANIE PREPROCESORÓW 2015
Preprocesor
Sass
Less
Stylus
Inny
Żaden
Razem
Ilość głosów
1297
308
76
42
305
2028
Procentowo
63.95%
15.19%
3.75%
2.07%
15.04%
100%
Wyniki ankiety z 2015 roku, http://ashleynolan.co.uk/blog/frontend-tooling-survey-2015-results
PORÓWNANIE PREPROCESORÓW 2015
Wyniki ankiety z 2015 roku, http://ashleynolan.co.uk/blog/frontend-tooling-survey-2015-results
MVC – MODEL-VIEW-CONTROLLER
Model-View-Controller (pol. Model-Widok-Kontroler) – wzorzec
architektoniczny służący do organizowania struktury aplikacji
posiadających graficzne interfejsy użytkownika.
Klasyczny MVC zakłada podział aplikacji na trzy główne części:
 Model – jest pewną reprezentacją problemu bądź logiki aplikacji.
 Widok – opisuje, jak wyświetlić pewną część modelu w ramach
interfejsu użytkownika.
 Kontroler – przyjmuje dane wejściowe od użytkownika i reaguje na
jego poczynania, zarządzając aktualizacje modelu.
Wszystkie trzy części są ze sobą wzajemnie połączone.
MVC – MODEL-VIEW-CONTROLLER
 Kontroler wybiera model oraz widok i przekazuje temu widokowi,
z którego modelu ma skorzystać.
 Widok wysyła zapytanie do modelu, który zwraca odpowiednie
dane.
2
CONTROLLER
5
1
3
VIEW
MODEL
4
MVP – MODEL-VIEW-PRESENTER
 Widok przesyła do prezentera żądanie użytkownika.
 Prezenter wysyła do modelu prośbę o konkretne dane.
 Model odsyła dane, na których prezenter może dokonać jeszcze
manipulacji i dopiero przesyła je do widoku.
1
PRESENTER
4
VIEW
3
2
MODEL
MVVM – MODEL-VIEW-VIEWMODEL
 Model zawiera tylko dane.
 View odpowiada za wyświetlanie danych i przekazywanie zdarzeń.
 ViewModel opiera się o dwustronne wiązanie: zawiera logikę
biznesową, odpowiada za modyfikacje modelu oraz obsługuje
widoki, dzięki czemu możliwe jest automatyczne wprowadzanie
zmian.
FRAMEWORKI JS
Możemy wyszczególnić kilka głównych cech/narzędzi, które powinien
dostarczać dobry framework MVC JavaScript:
 binding danych pomiędzy HTML’em, a obiektem modelu po
stronie klienta (w tym aktualizacja danych w obie strony);
 szablony widoków, w które wstrzykiwane są dane z modelu ;
 routing URL czyli „udawanie” przed przeglądarką, że aplikacja ma
więcej niż jedną stronę;
 składowanie danych rozumiane zwykle jako narzędzia do
zapisywania zmian do serwera.
FRAMEWORKI JS
Użycie JS w projektach
Vanilla JS
jQuery
AngularJS
React
Backbone
Ember
Knockout
Underscore
Głosy
120
799
253
124
42
34
21
18
Procentowo
8.48%
56.47%
17.88%
8.76%
2.97%
2.40%
1.48%
1.27%
Wyniki ankiety z 2015 roku, http://ashleynolan.co.uk/blog/frontend-tooling-survey-2015-results
Framework
AngularJS 1.2.22
Backbone.js 1.1.2
Ember.js 1.6.1
Rozmiar
Rozmiar z bibliotekami
39.5kb
6.5kb
90kb
39.5kb
43.5kb (jQuery + Underscore)
20.6kb (Zepto + Underscore)
136.2kb (jQuery + Handlebars)
BACKBONE.JS
(Jeremy Ashkenas , 2010 r.)
Backbone.js - biblioteka programistyczna napisana w języku JavaScript
wykorzystywana do tworzenia aplikacji internetowych typu Single
Page.
Biblioteka została zbudowana z użyciem interfejsu RESTful JSON i
bazuje na wzorcu MVP.
Backbone.js jest lekką biblioteką wymagającą do działania tylko
Underscore.js oraz jQuery.js. Twórcą biblioteki jest Jeremy Ashkenas,
znany jako twórca języka CoffeeScript.
BACKBONE.JS
W backbone.js dane reprezentowane są jako Model, który może być
tworzony, walidowany, usuwany oraz zapisywany na serwerze.
Za każdym razem, gdy akcja UI wywoła zmianę w Modelu zostaje
wywołane zdarzenie „change”, które informuje Widok o potrzebie
ponownego wyrenderowania z wprowadzoną zmianą.
Nie trzeba szukać elementu po ID i wymuszać zmiany w HTML – jeśli
model się zmieni, zmieni się też widok.
CECHY BACKBONE.JS
 Najstarszy framework
 Małe rozmiary
 Wbudowana obsługa routingu
 Polega na innych bibliotekach – underscore.js, jQuery.js
 Brak wbudowanego two way data-binding – podwójnego wiązania
 Bezpośrednia manipulacja drzewem DOM.
 Nie zapewnia żadnej struktury, a raczej narzędzia do jej
samodzielnego określenia przez dewelopera.
ANGULAR.JS
(Google, rok 2009)
AngularJS - otwarta biblioteka języka JavaScript, wspierana i
firmowana przez Google, wspomagająca tworzenie i rozwój aplikacji
internetowych na pojedynczej stronie.
Zadaniem biblioteki jest wdrożenie wzorca Model-View-Controller
(MVC) do aplikacji internetowych, aby ułatwić ich rozwój i testowanie.
Podwójne wiązanie pozwala na automatyczną synchronizację danych,
które mamy po stronie widoku, a naszym kontrolerem / modelem
danych po stronie JavaScript.
ANGULAR.JS
 Niezależny od innych bibliotek, jQLite
 Podwójne wiązania (two way data-binding)
 Wstrzykiwanie zależności
 Wbudowane szablony widoków
 Dyrektywy rozszerzające działanie HTML
 Szablony deklaratywne i tekstowe
 Synchronizacja z danymi serwera
 Wbudowana obsługa routingu
 Duży rozmiar całego środowiska, jednak zapewnia on pełne
środowisko do tworzenia aplikacji.
EMBER.JS
(Yehuda Katz oraz Tom Dale, 2011 r)
Ember.js - otwarta biblioteka języka JavaScript, ułatwiająca pisanie
aplikacji internetowych po stronie klienta z użyciem wzorca ModelView-Controller (MVC).
Framework zawiera ułatwienia związane z pisaniem aplikacji na
pojedynczej stronie internetowej, między innymi router oraz
automatyczną aktualizację szablonu strony (template) z pomocą
biblioteki Handlebars.js.
EMBER.JS
 Zależny od innych bibliotek: jQuery oraz Handlebars.js
 Podwójne wiązania (two way data-binding)
 Szablony tekstowe dołączane zewnętrznie przez Handlebars.js
 Bezpośrednia manipulacja drzewem DOM
 Synchronizacja z serwerem przez RESTAdapter (wymaga serwisu
REST-owego)
 Wbudowana obsługa routingu
NARZĘDZIA JS
Narzędzie
NPM
Używam często
Używam czasem
68.39% (1,387)
19.63% (398)
Słyszałem
Nie znam
6.76% (137)
5.23% (106)
Bower
45.36% (920)
28.06% (569) 23.27% (472)
3.30% (67)
Yeoman
19.97% (405)
30.57% (620) 37.13% (753)
12.33% (250)
Ender
0.54% (11)
1.43% (29) 28.55% (579) 69.48% (1,409)
Wyniki ankiety z 2015 roku, http://ashleynolan.co.uk/blog/frontend-tooling-survey-2015-results
NODE.JS
(Ryana Dahl, 2009 r.)
Środowisko programistyczne zaprojektowane do tworzenia wysoce
skalowalnych aplikacji internetowych, szczególnie serwerów www
napisanych w języku JavaScript. Umożliwia tworzenie aplikacji
sterowanych zdarzeniami wykorzystujących asynchroniczny system
wejścia-wyjścia. Jest aplikacją open source.
NODE PACKAGED MODULE (NPM)
NPM to powiązany z Node.js program do zarządzania modułami
Node.js. Dzięki niemu w prosty sposób można rozszerzać możliwości
Node.
BOWER
Bower jest to narzędzie wykorzystywane do zarządzania bibliotekami,
które są dołączane do projektów webowych. To znaczy, za pomocą
tego narzędzia, z wykorzystaniem linii komend, można dołączyć
najnowszą wersję bibliotek, takich jak: jQuery czy Backbone.js, do
projektu. Dzięki niemu nie trzeba się martwić o kilka rzeczy:
 Skąd pobrać daną bibliotekę czy rozszerzenie?
 Czy dana biblioteka jest aktualna?
SYSTEMY AUTOMATYZACJI PRACY
System
Ilość głosów
Procentowo
Gulp
888
43.79%
Grunt
559
27.56%
NPM
64
3.16%
Broccoli
22
1.08%
Inny
99
4.88%
Żaden
396
19.53%
Razem
2028
100%
Wyniki ankiety z 2015 roku, http://ashleynolan.co.uk/blog/frontend-tooling-survey-2015-results
SYSTEMY AUTOMATYZACJI PRACY
Wyniki ankiety z 2015 roku, http://ashleynolan.co.uk/blog/frontend-tooling-survey-2015-results
DZIĘKUJĘ ZA UWAGĘ