Jak okiełznać frontend w Django? Piotr Maliński www.python.rk.edu.pl



Podobne dokumenty
TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

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

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

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

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

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

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

Kompresja stron internetowych

Backend Administratora

Programowanie obiektowe

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

W celu uruchomienia kontrolera należy w katalogu głównym kontrolera z wiersza poleceń wydać następujące polecenie: $ java -jar target/floodlight.

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

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

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

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

Wątki w Android OS. Matt Rutkowski. GynSoft sp. z o.o. matt@gynsoft.net

OpenLaszlo. OpenLaszlo

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

Szybko, prosto i tanio - ale czy na pewno?

Program szkolenia: REST i Microservices w PHP

Kurs rozszerzony języka Python

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

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

Szczegółowy opis zamówienia:

JAX-RS czyli REST w Javie. Adam Kędziora

Wykład 12. Programowanie serwera MS SQL 2005 w C#

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

JavaScript i jquery : nieoficjalny podręcznik / David Sawyer McFarland. Rozdział 1. Pierwszy program w języku JavaScript 35

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

Kurs rozszerzony języka Python

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

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

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

Fragmenty są wspierane od Androida 1.6

JAVA NA SERWERZE SPRING. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

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

Konspekt pracy inżynierskiej

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

Podstawy programowania w języku JavaScript

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Szkolenie wycofane z oferty. Programowanie w JavaScript (zawiera jquery)

TDD w Django South Sorl Haystack + Whoosh Małe, a cieszy Deployment Koniec. Wspomagacze Django. Jan Filipowski. 25 maja 2010

Funkcje dodatkowe. Wersja 1.2.1

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

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

Programowanie telefonów z Windows Phone 7, cz. 4

CZYM JEST JAVASCRIPT?

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Tworzenie i wykorzystanie usług

Programowanie wielowarstwowe i komponentowe

PHP: bloki kodu, tablice, obiekty i formularze

PHP: bazy danych, SQL, AJAX i JSON

Specyfikacja implementacyjna aplikacji mobilnej

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Google Web Toolkit. Piotr Findeisen

Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne:

Frameworki IOS. Wykład 14. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

HttpRequest Aplikacja Czat

Zaawansowane aplikacje WWW - laboratorium

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński

REFERAT O PRACY DYPLOMOWEJ

Aktualizacja SMSFall v Data publikacji:

Instalujemy środowisko. Hello World! Odczyt/zapis informacji do komponentów na formie. onclick()

Spring, Maven, Postman, Debugger

Funkcje dodatkowe. Wersja 1.2.1

JavaScript - korzenie

Laboratorium 7 Blog: dodawanie i edycja wpisów

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

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

Dokumentacja techniczna API systemu SimPay.pl

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Laboratorium Kierunki Rozwoju oprogramowania REST, Django

HTTP W 5-CIU PYTANIACH MICHAŁ KOPACZ

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Specyfikacja techniczna. mprofi Interfejs API

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Spis treści CZĘŚĆ I JĘZYK SIECI 17. Wstęp 13. Rozdział 1 Wprowadzenie do HTML5 19. Rozdział 2 Znajomość znaczników HTML5 37

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

akademia androida Składowanie danych część VI

Quiz Aplikacja internetowa

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

Aplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014

CouchDB. Michał Nowikowski

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Specyfikacja implementacyjna aplikacji serwerowej

Programowanie obiektowe

Należy ściągnąć oprogramowanie Apache na platformę

Transkrypt:

Jak okiełznać frontend w Django? Piotr Maliński www.python.rk.edu.pl

Problemy frontendu Trudne testowanie i debugowanie Różne przeglądarki Różne ustawienia przeglądarek Urządzenia dotykowe Przekazywanie danych z i do backendu Ustawienia i konfiguracja Dane dynamiczne Synchronizacja danych backend-js-dom Duża ilość plików Liczne żądania HTTP Keszowanie i wersjonowanie plików

settingsy dla JavaScriptu

django-javascript-settings http://pypi.python.org/pypi/django-javascript-settings/ System przekazywania ustawień z Django (urls.py) do JavaScriptu. Tworzy JavaScriptową tablicę zawierającą dane ze słowników Pythona w urls.py poszczególnych aplikacji. Można go użyć do przekazywania adresów URL widoków (np. na potrzeby żądań AJAX), ustawień, czy szablonów używanych przez widżety JS. W szablonie: {% load javascript_settings_tags %} <script type="text/javascript">{% javascript_settings %}</script> W urls.py aplikacji jsdemo : def javascript_settings(): js_conf = { 'page_title': 'Home', } return js_conf Rezultat: <script type="text/javascript">var configuration = {"jsdemo": {"page_title": "Home"}};</script> Można też wygenerować konfigurację do pliku poprzez dostarczony STATICFILES FINDER.

Wymiana danych dynamicznych

Tastypie https://github.com/toastdriven/django-tastypie Wystawia RESTowe API z danymi ze wskazanego modelu Pobieranie, dodawanie, edycja i usuwanie danych Format JSON przyjemny do wykorzystania w JavaScripcie (np. w odpowiedzi na żądania AJAX class JobOfferResource(ModelResource): class Meta: queryset = models.joboffer.objects.all() allowed_methods = ['get'] fields = ['id', 'position', 'city', 'published_date']

Inne pomoce Klasa widoku (CBS), która ze słownika wygeneruje JSON i zwróci dokument application/json (wcześniej także dekorator ajax_request z django-annoying) do własnych widoków obsługujących żądania AJAX. jquery Cookie lub getcookie z dokumentacji do ustawiania ciasteczka CSRF dla żądań POST wysyłanych z JavaScriptu (AJAX) jquery BBQ do m.in. operacji na query strings w URLach

Kompresja plików statycznych

webassets https://github.com/miracle2k/webassets Aplikacja do kompresji i wersjonowania plików CSS i JS. Potrafi też kompilować LESSa i SASSa do CSSa, przepisywać ścieżki do grafik w CSS. Dla Django i innych frameworków. Podajemy listę plików, wybieramy filtr do kompresji i uzyskujemy jeden wynikowy plik ze skompresowanym kodem. assets.py aplikacji: from django_assets import Bundle, register js = Bundle('vendor/jquery.js', 'vendor/jquery.cookie.js', 'my_scripts.js', filters='jsmin', output='packed.js') register('nazwa_bundla', js) W szablonie: {% load assets %} {% assets "nazwa_bundla" %} <script type="text/javascript" src="{{ ASSET_URL }}"></script> {% endassets %}

webassets LESS i CSS ASSETS_DEBUG = getattr(settings, 'ASSETS_DEBUG', False) less_bundle = Bundle( 'style.less', filters='less', output='style.css', extra={'rel': 'stylesheet/less' if ASSETS_DEBUG else 'stylesheet'}, ) css = Bundle( 'reset.css', 'text.css', less_bundle, filters=('cssmin'), output= 'compressed.css') register('css_asset', css)

Logowanie błędów JavaScript

Sentry + raven-js https://github.com/getsentry/sentry https://github.com/getsentry/raven-js

Sentry + raven-js <script type="text/javascript" src="js/raven.min.js"></script> Raven.config('***twój serwer sentry***'); window.onerror = Raven.process; Logowanie błędów JavaScript Błędy naszego kodu jak i kodu zewnętrznego (np. AdSense, Facebook JS SDK, dodatki do przeglądarek) Stosując kompresję plików JS warto nie kompresować całego kod do jednej linii Dla webassets można użyć filtr closure_js (wymaga Javy, applet) Logowanie własnych komunikatów Poprzez Raven.captureMessage Z konsoli JS każdy może wysłać wiadomość do naszych logów!

O JavaScript słów kilka

Testowanie i profilowanie (Testy Selenium) Testowanie JavaScriptu Różne JavaScriptowe biblioteki do testów Obsługa testów JavaScriptowych w PyCharm/WebStorm Profilowanie W konsolach przeglądarek Pozwala określić wąskie gardła bardziej złożonych skryptów (np. operacje na localstorage w Firefoksie potrafią być bardzo wolne)

http://blog.jetbrains.com/webide/2011/10/javascript-unit-testing-support/

Firebug

Chrome

Debugowanie urządzeń mobilnych Android adb z SDK Androida do debugowania urządzeń i emulowanych systemów Konsola w przeglądarkach ios Xcode z SDK dla ios (tylko na OSX) AppStore: idebug (Firebug lite + GTMetrix + Safari) Konsola w Safari Adobe Edge Inspect do debugowania różnych urządzeń mobilnych wewnątrz danej sieci (usługa płatna)

Debugowanie urządzeń mobilnych function SomeClass() { this.delete = function() { deletesomething(); } } var myobject = new SomeClass(); myobject.delete(); Android 2.3.3./adb logcat E/browser ( 283): Console: SyntaxError: Parse error http://mysite/test.html:51 Reserved Keyword break do instanceof case else new catch finally return continue for switch debugger function this default if throw delete in try typeof var void while with http://www.ecma-international.org/ecma-262/5.1/#sec-7.6.1

Synchronizacja danych Backend-JS-DOM Frameworki JavaScript Backbone.js Ember.js Angular.js Zamiast pisać straszny kod wykonujący liczne operacje na DOMie i podpinający się pod masę eventów jquery można pisać bardziej uporządkowany kod, zbliżony ideą do MVC. Django 1.5 dodaje tag blokowy {% verbatim %} wyłączający parsowanie zawartości. Może to być przydatne dla np. szablonów {{handlebarsjs}}

Koniec