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

Podobne dokumenty
Kompresja stron internetowych

Paweł Rajba,

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

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?

REACT NATIVE. Anna Maziejuk Kamil Jankowski

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

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

JavaScript : programowanie zaawansowane / Tomasz "Comandeer" Jakut. Gliwice, cop Spis treści

Szybko, prosto i tanio - ale czy na pewno?

JavaScript funkcyjność

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

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

Aplikacje Internetowe

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Aplikacje webowe z wykorzystaniem Node.js oraz Express

WebAii Automation Framework

ROZSZERZENIA BIBLIOTEKI

O sobie. Adam Kowalski. Absolwent informatyki Uniwersytetu Wrocławskiego Full-stack Developer w firmie Synergy Codes.

Dostosowywanie wyglądu aplikacji czytelnika w oparciu o oprogramowanie dlibra 5.0

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

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

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

Podstawy programowania w języku JavaScript

Liczba godzin. N (nauczyciel) studia niestacjonarne

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

Automatyzacja Testowania w WEB 2.0

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

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

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

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

ZAKŁADOWY: ZŁ WPŁACONY KRS REGON: NIP

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

Nowoczesne Technologie WWW

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

JavaScript - korzenie

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

Wybrane działy Informatyki Stosowanej

Zajęcia 4 - Wprowadzenie do Javascript

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Google Web Toolkit Michał Węgorek ZPO 2009

Google Web Toolkit. Piotr Findeisen

Aplikacje Internetowe

Wybrane działy Informatyki Stosowanej

PRZEWODNIK PO PRZEDMIOCIE

WYKŁAD 3 XML DOM XML DOCUMENT OBJECT MODEL CZĘŚĆ 1

Program szkolenia: JavaScript Craftsmanship

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

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

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

XML extensible Markup Language. część 5

Szczegółowy opis zamówienia:

Flex 3. Piotr Strzelczyk Wydział EAIiE Katedra Automatyki. Kraków, 2008

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

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

Rys.2.1. Drzewo modelu DOM [1]

Wybrane działy Informatyki Stosowanej

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Tworzenie Stron Internetowych. odcinek 9

Funkcje i instrukcje języka JavaScript

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

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

Node.js i TypeScript - jak zacz?

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami.

Szablony funkcji i szablony klas

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

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

OpenLaszlo. OpenLaszlo

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Przykład integracji kalkulatora mbank RATY na platformie IAI

Framework Angular4. Alicja Frankowicz Weronika Węglińska

CSS + HTML. Front end publikacji internetowej. Cięcie grafiki i CSS Ćwiczenia z CSS Typografia CSS image sprites

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

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Scala - programowanie obiektowo-funkcyjne

Przekształcenie danych przestrzennych w interaktywne mapy dostępne na stronach www (WARSZTATY, poziom zaawansowany)

Wykrywanie i analiza złośliwych stron WWW. Łukasz Juszczyk CERT Polska/NASK lukasz.juszczyk@cert.pl

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

Webowy generator wykresów wykorzystujący program gnuplot

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Dokumentacja Skryptu Mapy ver.1.1

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

To sposób w jaki użytkownik wchodzi w interakcje z systemem. Środowisko graficzne używa kombinacji graficznych elementów(przyciski, okna, menu) i

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

Nadzorowanie stanu serwerów i ich wykorzystania przez użytkowników

CMS, CRM, sklepy internetowe, aplikacje Web

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński

Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

W tej części dowiemy się, jak rozszerzyć WordPress za pomocą JSON-API. Oto kilka rzeczy, które będziemy robić z wtyczką JSON-API:

VALIO Sp. z o.o. Załącznik nr 1 do Zapytania ofertowego dotyczącego zakupu licencji części systemu B2B oraz wykonania Warstwy Prezentacyjnej.

Nowocześnie zaprojektowana e-usługa - studium przypadku

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

Transkrypt:

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

O mnie Patryk yarpo Jar Programista JavaScript (nor-sta.eu) yarpo.pl 2

Agenda Chaos Obiekty Biblioteki AMD Podsumowanie Pytania 3

Dawno, dawno temu źródło grafiki: gadzetomania.pl 4

Początki JavaScript Brak dobrych praktyk dla modułów Traktowany jako banalny dodatek do HTML Słabe wsparcie ze strony przeglądarek Rozbieżności Wolne silniki Ni to Java, ni to Script D. Crockford: The World's Most Misunderstood Programming Language 5

Chaos function dodaj(a, b) { return a+b; } function odejmij (a, b) { return a-b; } <script src='obliczenia.js'></script> 6

Obiekty 1. function Obliczenia() { 2. this.dodaj = function(a, b) { return a+b; }; 3. this.odejmij = function(a, b) { return a-b; }; 4. }; 5. var obl = new Obliczenia(); 6. console.log(obl.dodaj(2,2)); // = 4 Zobacz: tnij.org/obiekty-js 7

Problemy integracji kodu Różne źródła różne koncepcje programistyczne Konflikty nazw zmiennych globalnych Global namespace pollution 8

Wzorzec modułu 1. var app = { 2. utils : { 3. CONST: 42 // to nadal tylko zmienna 4. }, 5. ajax : { 6. get : function(id) { }, 7. add : function() { } 8. } 9. }; 10. app.ajax.get(app.utils.const); 9

Biblioteki 10

jquery: $( future ) $('div').hide().parent().css('color', 'red'); jquery.ajax({ }); // $ === jquery + Nie zanieczyszczamy przestrzeni globalnej + Tworzymy wtyczki (moduły) - Nadal globalnie załączamy pliki z kodem - $ namespace pollution (jquery.noconflict()) - Programista jquery często nie zna JavaScript 11

Dotychczasowy kod HTML <html> <head> <title>robisz to źle</title> <script src="jquery/1.7.1/jquery.min.js"></script> <script src="plugina.jquery.js"></script> <script src="pluginb.jquery.js"></script> <script src="logic.js"></script> <script src="dojo.js"></script> <link rel="stylesheet" type="text/css" href="all.css"> <script src="stillnotenoughjsfiles.js"></script> <link rel="stylesheet" type="text/css" href="style.css">... 12

Trochę lepszy kod <html> <head> <title>robisz to trochę lepiej;)</title> <script src="all.compressed.js"></script> <link rel="stylesheet" type="text/css" href="all-styles.merged.css"> 13

dojo.declare: klasy w JS?! 1. // plik `yarpo/myfirstclass.js 2. dojo.provide("yarpo.myfirstclass"); 3. dojo.require("yarpo.xyz"); // pobiera yarpo/xyz.js 4. dojo.require("yarpo.abc"); // pobiera yarpo/abc.js 5. dojo.declare("yarpo.myfirstclass", [yarpo.xyz], { 6. constructor : function(a, b) { 7. console.log("działam", a, b); 8. var abc = new yarpo.abc(); 9. //this.inherited(arguments); 10. } 11. }); 12. var obj = new yarpo.myfirstclass(1, 2); // działam 1 2 14

dojo.declare + Czytelne i podobne do znanych rozwiązań + Prawie samowystarczalne (CSS) + Przyjemne i kompletne - Uzależnienie od Dojo Toolkit 15

Użyjmy niezależnego API! 16

Nowe sposoby na moduły AMD Asynchronous Module Definition Dojo 1.7+ jquery 1.7+ Mootools 2.0+ Node.js CommonJS Node.js Zobacz: RequireJS.org 17

AMD przykład: quick start 1. // plik moduly/obliczenia.js 2. define('moduly/obliczenia', function() { 3. return function() { 4. this.dodaj = function(a, b) { return a + b; }; 5. this.odejmij = function(a, b) { return a - b; }; 6. }; 7. }); 8. require(['moduly/obliczenia'], function(obliczenia) { 9. var obliczenia = new Obliczenia(); 10. console.log(obliczenia.dodaj(2,2)); // 4 11. }); 18

AMD przykład 2: zależności 1. define('moduly/obliczenia', ['mat/dodaj', 'mat/odejmij'], 2. function(dodaj, odejmij) { 3. return function() { 4. this.dodaj = function(a, b) { return dodaj(a, b); } 5. this.odejmij = function(a,b){ return odejmij(a, b); } 6. }; 7. }); 1. // plik mat/dodaj.js 2. define('mat/dodaj', function() { 3. return function(a, b) { return a+b; }; 4. }); 19

AMD wtyczki Szablony widgetów, pliki txt dojo/text!sciezka/do/pliku Pliki językowe dojo/i18n!nls/nazwamodului18n Język ustalony per aplikacja Style CSS xstyle!./sciekza/do/pliku.css github.com/kriszyp/xstyle Zobacz: requirejs.org/docs/plugins.html 20

AMD wady: kolejność 1. define('tct/detailspanel', [ 2. "dojo/_base/declare", 3. "dijit/_templatedmixin", 4. "dojo/i18n!./nls/detailspanel"], 5. function( 6. declare, 7. template, 8. _TemplatedMixin) { 9. return declare("tct.detailspanel", [_TemplatedMixin], 10. function() {... }); 21

AMD wady: nazwy 1. define('tct/detailspanel', [ 2. "dojo/_base/declare", 3. "dijit/_templatedmixin", 4. "dojo/i18n!./nls/detailspanel", 5. "dojo/text!./templates/detailspanel.html"], 6. function( 7. deklarowanie, 8. templejt, 9. a, 10. template) { 11. return deklarowanie("tct.detailspanel", [templejt], fun... }); 22

AMD zalety Lokalny (nie brudzimy globalnej przestrzeni) Samowystarczalny (sam definiuje, jakie moduły muszą być pobrane) Szablony widgetów, pliki txt (np. `dojo/text!`) Pliki językowe (np. `dojo/i18n!`) Pliki stylów CSS! (github.com/kriszyp/xstyle) Uniwersalny (define.amd == true) Dobrze się kompresuje (np. Shrinksafe) 23

AMD zalety: kompresja define("dojo/cookie",["./_base/kernel","./regexp "],function(_1,_2){_1.cookie=function(_3,_4,_ 5){var c=document.cookie,_6;if(arguments.length= =1){var _7=c.match(new RegExp("(?:^ ; )"+_2.escapeString(_3)+"=([^;]*)"));_6=_7?de codeuricomponent(_7[1]):undefined;}else{_ 5=_5 {};var _8=_5.expires;if(typeof _8=="number"){... Zobacz: shrinksafe.dojotoolkit.org 24

Podsumowanie Aktualny kierunek: uniwersalne API modułów Moduł vs. Biblioteka Przyszłość: ECMAScript Harmony Alternatywa: Asemblaryzacja JavaScript Google Web Toolkit Cappucino (cappuccino-project.org) CoffeScript (coffeescript.org) TypeScript (typescriptlang.org) Poniekąd jquery 25

Pytania 26

Dziękuję za uwagę yarpo.pl Jar.Patryk@gmail.com 27