Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski



Podobne dokumenty
Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

JavaScript obiektowość

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Zdarzenia w JavaScript (Zajęcia r.)

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

PHP: bazy danych, SQL, AJAX i JSON

Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski

MVVM Light Toolkit. Julita Borkowska

JavaScript - wykład 4. Zdarzenia i formularze. Obsługa zdarzeń. Zdarzenia. Mysz. Logiczne. Klawiatura. Beata Pańczyk

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Programowanie obiektowe

Wzorce architektoniczne

1. Wybierz File New Application. Pojawi się nowa aplikacja w Delphi.

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Ruby i Ruby on Rails. Mateusz Drożdżyński

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

AJAX. Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5.

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

OpenLaszlo. OpenLaszlo

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Serwery aplikacji. dr Radosław Matusik. radmat

MVC w praktyce tworzymy system artykułów. cz. 1

Backend Administratora

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Laboratorium 7 Blog: dodawanie i edycja wpisów

MVC w PHP od zera. Napisz własny framework MVC w PHP zupełnie od zera. Marcin Wesel kursphp.com. Wydanie drugie, uzupełnione

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Kurs języka Ruby. Ruby on Rails ActionPack

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Podstawy programowania w Qt4

MVC w praktyce tworzymy system artykułów. cz. 2

Pogadanka o czymś, co niektórzy nazywają AJAX

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Laboratorium 6 Tworzenie bloga w Zend Framework

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js

PHP: bloki kodu, tablice, obiekty i formularze

Programowanie w Ruby

Kurs WWW. Paweł Rajba.

JQuery. $('#pierwszy').css('color','red').hide('slow').show(3000); $(document).ready(function() { //... tutaj nasze skrypty jquery //...

Zaawansowane programowanie w C++ (PCP)

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Programowanie obiektowe

REFERAT PRACY DYPLOMOWEJ

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie

Baza danych sql. 1. Wprowadzenie

CVS system kontroli wersji

Leszek Stasiak Zastosowanie technologii LINQ w

Laboratorium nr 3 Podstawy Ruby on Rails

Jak okiełznać frontend w Django? Piotr Maliński

Java jako język programowania

Ćwiczenie 2. Tworzenie serwisów internetowych. Zapoznanie z pakietem WebRatio

Ruby on Rails. Supersilnik WWW. Łukasz Włodarczyk

Agenda. Wstęp Zmiany Co nowego dla web developerów? Nowości we front-end developingu Czego spodziewać się może końcowy użytkownik?

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Rys.2.1. Drzewo modelu DOM [1]

Spring Web MVC, Spring DI

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS)

Referat Pracy Dyplomowej

KARTA PRZEDMIOTU. Warsztaty z Ruby on Rails. Ruby on Rails Workshop

Patryk Jar Meet.js, Gdańsk 11 marca 2013 r. MODULARNY JAVASCRIPT

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

Google Web Toolkit Michał Węgorek ZPO 2009

Techniki WWW. (HTML, CSS, JavaScript) Dr inż. Marcin Zieliński WYKŁAD 6. Środa 15:30-17:00 sala: A-1-04

Ten krótki poradnik pomoże Ci zainstalować nasz katalog no-name na swojej stronie internetowej.

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Wybrane działy Informatyki Stosowanej

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

Języki i narzędzia programowania III. Łukasz Kamiński Wykład II

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Aplikacje RMI

Wzorce prezentacji internetowych

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Dziedziczenie. Tomasz Borzyszkowski

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

media Blitz wydajne sytemy szablonów

Django : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop Spis treści

Diagram wdrożenia. Rys. 5.1 Diagram wdrożenia.

Zaawansowane aplikacje internetowe - laboratorium


Aplikacje w środowisku Java

Transkrypt:

Uniwersytet Warszawski 6 kwiecień 2009

Spis Treści 1 MVC Jak to wygląda w JavascriptMVC 2 Prawie jak klasy 3 Hierarchia Widoki Kontrolery Modele 4 Struktura katalogów Generatory kodu Generatory dokumentacji Jak to połączyć? 5

MVC MVC Jak to wygląda w JavascriptMVC Wzorzec architektoniczny mający na celu wydzielenie trzech podstawowych części aplikacji: Model - reprezentacja danych. Pozwala abstrahować od sposobu przechowywania i pobierania danych. Widok - interfejs użytkownika, pozwala na komunikację z użytkownikiem. Kontroler - logika aplikacji. Łączy model z widokiem.

MVC w JavascriptMVC MVC Jak to wygląda w JavascriptMVC Javascript jest językiem używanym głównie po stronie klienta w przeglądarkach. Chcąc mieć przyzwoity zrąb część aplikacji musi znajdować się jednak po stronie serwera. Za tę część odpowiedzialny jest Rhino.

Prawie jak klasy Prawie jak klasy W Javascript występują tylko obiekty, bez klas. Klasy są symulowane przez specjalne funkcje. W JavascriptMVC podstawową klasą jest Class: extend - Tworzy nową klasę dziedziczącą po innej klasie. init - Konstruktor, funkcja wywoływana gdy instancja klasy jest tworzona. super - Konstruktor klasy nadrzędnej. classname - Nazwa klasy obiektu.

Przykład Prawie jak klasy Dziedziczenie Monster = MVC. C l a s s. e x t e n d ( monster, /* @static */ { count : 0 }, /* @prototype */ { i n i t : f u n c t i o n ( name ){ t h i s. name = name ; t h i s. C l a s s. count++ } }) hydra = new Monster ( hydra ) dragon = new Monster ( dragon ) hydra. name // -> hydra Monster. count // -> 2 Monster. classname // -> monster

Hierarchia Hierarchia Widoki Kontrolery Modele

Widoki Hierarchia Widoki Kontrolery Modele Pod tym względem JavascriptMVC jest podobny do Django. Widoki to głównie pliki html z dodatkowymi znacznikami. Plik html jest pobierany z serwera, a następnie parsowany. To co znajduje się w specjalnych tagach jest interpretowane jako JavaScript. Pliki html mogą być przechowywane w pamięci podręcznej, i nie muszą być za każdym razem pobierane z serwera.

Przykład Hierarchia Widoki Kontrolery Modele Kod HTML <h1><%= t i t l e %></h1> <u l> <% f o r ( v a r i =0; i <s u p p l i e s. l e n g t h ; i ++) { %> < l i > <%= l i n k t o ( s u p p l i e s [ i ], s u p p l i e s / + s u p p l i e s [ i ] ) %> </ l i > <% } %> </ u l>

Przykład Hierarchia Widoki Kontrolery Modele Kod HTML <h1><%= t i t l e %></h1> <u l> <% f o r ( v a r i =0; i <s u p p l i e s. l e n g t h ; i ++) { %> < l i > <%= l i n k t o ( s u p p l i e s [ i ], s u p p l i e s / + s u p p l i e s [ i ] ) %> </ l i > <% } %> </ u l> Kod Javascript v a r html = new View ({ u r l : views / cleaning. ejs } ). r e n d e r ( data ) ; View ({ u r l : comments. ejs } ). update ( element_id, / comments. json )

Kontrolery Hierarchia Widoki Kontrolery Modele Kontrolery pozwalają przypisać kod Javascript do elementów strony. Elementy mogą być wybierane za pomocą id lub selektorów CSS. Nazwy funkcji to nazwy zdarzeń, którym mają odpowiadać. Rozpoznawane zdarzenia: change, click, contextmenu, dblclick, mousedown, mousemove, mouseout, mouseover, mouseup, reset, resize, select, submit, dblclick, focus, blur, load, unload, keypress

Przykład Hierarchia Widoki Kontrolery Modele Przykład kontrolera T o d o s C o n t r o l l e r = C o n t r o l l e r. e x t e n d ( todos,{ // the onclick event handler c l i c k : f u n c t i o n ( ) { a l e r t ( clicked todo ) ; }, ul.foo click : f u n c t i o n ( params ){ params. e l e m e n t. s t y l e. c l a s s = clicked ; } } ) ;

Modele Hierarchia Widoki Kontrolery Modele Modele dziedziczą po klasie Model udostępniającej kilka podstawowych metod do manipulacji poszczególnymi obiektami. Niestety większość z tych metod należy samemu napisać, jeżeli chcemy przykładowo korzystać z bazy danych znajdującej się na serwerze.

Modele Hierarchia Widoki Kontrolery Modele Modele dziedziczą po klasie Model udostępniającej kilka podstawowych metod do manipulacji poszczególnymi obiektami. Niestety większość z tych metod należy samemu napisać, jeżeli chcemy przykładowo korzystać z bazy danych znajdującej się na serwerze. Trzeba zaimplementować: find one(params, callbacks) find all(params, callbacks) create(attributes, callbacks) update(id, attributes, callbacks) destroy(id, callbacks)

Modele Hierarchia Widoki Kontrolery Modele Modele dziedziczą po klasie Model udostępniającej kilka podstawowych metod do manipulacji poszczególnymi obiektami. Niestety większość z tych metod należy samemu napisać, jeżeli chcemy przykładowo korzystać z bazy danych znajdującej się na serwerze. Trzeba zaimplementować: find one(params, callbacks) find all(params, callbacks) create(attributes, callbacks) update(id, attributes, callbacks) destroy(id, callbacks) Powinniśmy zaimplementować: find publish save

Przykład Hierarchia Widoki Kontrolery Modele Dobre rady // Zamiast : new Ajax ( / tasks. json, { oncomplete : f i n d t a s k s n e x t w e e k }) // powinniśmy pisać : Task. f i n d ( all, f i n d t a s k s n e x t w e e k ) // Zamiast new Ajax ( / tasks / +i d+ / complete. json,{ oncomplete : t a s k c o m p l e t e d }) // powinniśmy pisać : t a s k. c omplete ( t a s k \ c o m p l e t e d )

Struktura katalogów Generatory kodu Generatory dokumentacji Jak to połączyć? Poszczególne typy elementów aplikacji trzymane są w różnych katalogach. Podstawowe katalogi to: apps - katalog aplikacji controllers - katalog kontrolerów docs - katalog docelowy dla dokumentacji. docelowy bo nie ma tutaj żadnej gotowej dokumentacji dla zrębu. Tutaj będzie utworzona dokumentacja na podstawie plików naszej aplikacji. engines - silniki jmvc - Pliki dostarczane przez zrąb, jak biblioteka standardowa, generatory itd. models - modele tests - Testy jednostkowe views - widoki

Generatory kodu Struktura katalogów Generatory kodu Generatory dokumentacji Jak to połączyć? JavascriptMVC podobnie jak Django zawiera generatory kodu dla większości podstawowych elementów aplikacji: app Generator aplikacji page Generator stron controller Generator kontrolerów model Generator modeli są jeszcze inne generatory, niestety mało udokumentowane Przykładowo: js jmvc/generate/app

Dokumentacja Struktura katalogów Generatory kodu Generatory dokumentacji Jak to połączyć? Ciekawy i przydatny dodatek. Automatycznie generowana dokumentacja na podstawie komentarzy (składnia taka sama jak JavaDoc). Generacja dokumentacji odbywa się za pomocą tego samego polecenia co kompresja.

Jak to połączyć? Struktura katalogów Generatory kodu Generatory dokumentacji Jak to połączyć? JavascriptMVC udostępnia funkcję include odpowiedzialną za ładowanie elementów aplikacji. Funkcja automatycznie zajmuje się kolejnością ładowania elementów. Pozwala także na spakowanie wszystkich ładowanych plików w jedną całość, aby przyspieszyć ładowanie strony. Kompresja strony js apps/your application name/compress.js

Kto tego używa Kto tego używa Zalety i Wady Materiały FIT Klient FTP z wbudowanym edytorem tekstu i podświetlaniem składni. DamnIt Serwis wysyłający emaile, gdy użytkownik napotka na błąd Javascript na stronie.

Kto tego używa Kto tego używa Zalety i Wady Materiały FIT Klient FTP z wbudowanym edytorem tekstu i podświetlaniem składni. DamnIt Serwis wysyłający emaile, gdy użytkownik napotka na błąd Javascript na stronie. Trafiik Serwis łączący Google Maps i Calendar - informacje o miejscu i czasie wydarzeń.

Zalety i Wady Kto tego używa Zalety i Wady Materiały Zalety Pełny zrąb dla fanów Javascriptu sprawdzona idea automatyczne pakowanie całej aplikacji do jednego pliku testy jednostkowe generacja dokumentacji

Zalety i Wady Kto tego używa Zalety i Wady Materiały Zalety Wady Pełny zrąb dla fanów Javascriptu sprawdzona idea automatyczne pakowanie całej aplikacji do jednego pliku testy jednostkowe generacja dokumentacji skromna dokumentacja z błędami część aplikacji po stronie serwera musi być samodzielnie napisana bardzo uproszczone modele niewiele przykładów działających aplikacji

Materiały Kto tego używa Zalety i Wady Materiały http://javascriptmvc.com - strona główna projektu http://wikipedia.org http://groups.google.com/group/javascriptmvc - lista dyskusyjna