39
ADVANCED JAVASCRIPT KEYHOLE SOFTWARE LLC 1 1 Friday, December 21, 12

ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

ADVANCED JAVASCRIPT KEYHOLE SOFTWARE LLC

11Friday, December 21, 12

Page 2: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHY JS?

ABILITY TO CREATE RICH-CLIENT USER INTERFACE

CLEAR SEPARATION OF APPLICATION RESPONSIBILITIES

PROLIFERATION OF “LIBRARIES” MAKING IT A VIABLE PLATFORM FOR ENTERPRISE DEVELOPMENT

SUPPORT “MOBILE” APPLICATIONS WITH A CONSISTENT DEVELOPMENT APPROACH

HTML5 ADDS FEATURES TO SUPPORT RICH-CLIENT INTERFACES AND MOBILE SUPPORT

ELIMINATES NEED FOR BROWSER PLUGINS (FLASH/FLEX, SILVERLIGHT, APPLETS, ETC)

22Friday, December 21, 12

Page 3: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

FRAMEWORKS

REQUIRE.JS

UNDERSCORE.JS

BACKBONE.JS

BOOTSTRAP

MOCKJAX

33Friday, December 21, 12

Page 4: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

4

REQUIRE.JS

4Friday, December 21, 12

Page 5: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHAT IS REQUIRE.JS ?

JAVASCRIPT MODULE LOADER

ENCOURAGES MODULAR CODE

IMPLEMENTS THE AMD SPECIFICATION

ALLOWS FOR MODULE AND DEPENDENCIES TO BE ASYNCHRONOUSLY LOADED

LOAD SCRIPTS VIA “MODULES” USING “DEFINE” SYNTAX

55Friday, December 21, 12

Page 6: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHY REQUIRE.JS ?

ENCOURAGES MODULAR DEVELOPMENT

AS SUCH, USES MODULE IDS RATHER THAN URLS

IMPROVES SPEED

IMPROVES ORGANIZATION

PROVIDES RUNTIME OPTIMIZATION

66Friday, December 21, 12

Page 7: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHAT IS A MODULE?

A JAVASCRIPT FILE, BUT...

DEFINES A WELL-SCOPED OBJECT

AVOIDS POLLUTING THE GLOBAL NAMESPACE

EXPLICITLY LISTS ITS DEPENDENCIES

EXTENSION OF “MODULE PATTERN”

77Friday, December 21, 12

Page 8: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

MODULE DEFINITIONSIMPLE NAME/VALUE PAIRS

8

define({! isbn: "9780261102217",! title: "The Hobbit",! author: "J.R.R. Tolkien"});

BOOK.JS

8Friday, December 21, 12

Page 9: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

MODULE DEFINITIONFUNCTION

9

BOOK.JS

define(function() { console.log('defining book'); return { isbn: "9780261102217", title: "The Hobbit", author: "J.R.R. Tolkien" }});

9Friday, December 21, 12

Page 10: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

MODULE DEFINITIONFUNCTION W/ DEPENDENCIES

10

define('backbone', './book', function(Backbone, Book) {

return Backbone.Collection.extend({model: Book

});});

LIBRARY.JS

10Friday, December 21, 12

Page 11: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WALKTHROUGH

QUICK DEMO OF BASIC REQUIRE.JS FUNCTIONALITY

1111Friday, December 21, 12

Page 12: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

12

UNDERSCORE.JS

12Friday, December 21, 12

Page 13: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHAT IS UNDERSCORE.JS ?

UTILITY BELT LIBRARY OF JAVASCRIPT

DEFINES~80 FUNCTIONS THAT PROVIDE

FUNCTIONAL PROGRAMMING

COLLECTION, ARRAY, UTILITY APIS

JAVASCRIPT TEMPLATING, CHAINING, ETC.

DELEGATES TO NATIVE BROWSER IMPLEMENTATIONS WHERE POSSIBLE (TO INSURE BEST POSSIBLE PERFORMANCE)

1313Friday, December 21, 12

Page 14: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHY UNDERSCORE.JS ?

PROVIDES A PLETHORA OF USEFUL UTILITY FUNCTIONS

FUNCTIONS ARE CROSS-BROWSER COMPATIBLE

OPTIMIZED FOR PERFORMANCE

1414Friday, December 21, 12

Page 15: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WALKTHROUGH

QUICK DEMO OF BASIC UNDERSCORE.JS FUNCTIONALITY

1515Friday, December 21, 12

Page 16: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

16

BACKBONE.JS

16Friday, December 21, 12

Page 17: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHAT IS BACKBONE.JS ?

JAVASCRIPT LIBRARY FOR BUILDING STRUCTURED WEB APPLICATIONS

ADDS “STRUCTURE” TO THE CLIENT SIDE JS

ESSENTIALLY MVC FOR THE CLIENT

UTILIZES RESTFUL API FOR BACKEND COMMUNICATION

LARGE AND REPUTABLE USER BASE

WALMART, USA TODAY, HULU, WORDPRESS, MANY MORE...

1717Friday, December 21, 12

Page 18: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHY BACKBONE.JS ?

FLEXIBILITY

SUPPLIES LIBRARY OF USEFUL OBJECTS, BUT NO “WIDGETS”

DOESN’T REINVENT JAVASCRIPT OBJECT MODEL

DOES NOT FORCE YOU TO A PARTICULAR TEMPLATE ENGINE

SMALL/LIGHTWEIGHT

NO BUILT-IN PERFORMANCE PENALTY FOR USING IT

SCALES WELL

CAN BE USED FOR LARGE-SCALE APPLICATIONS OR SIMPLE

1818Friday, December 21, 12

Page 19: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

BACKBONE. JS FUNDAMENTALS

MODEL* :: A “BUSINESS” OBJECT W/ INCLUDED LOGIC

PROVIDES KEY-BINDING AND CUSTOM EVENTS

COLLECTION* :: A “GROUP” OF MODEL OBJECTS

WITH FUNCTIONAL APIS FOR SORTING/FILTERING/AGGREGATION, ETC.

VIEW :: A LOGICAL “PIECE” OF THE UI

DECLARATIVE EVENT HANDLING

AGNOSTIC TO VIEW CREATION APPROACH

ROUTER :: MAPS URLS TO FUNCTIONAL CLOSURE

KEY TO “DEEP” LINKING INTO APPLICATION

19

* RESTFUL JSON API CONNECTS TO ‘BACKEND’

19Friday, December 21, 12

Page 20: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHAT IS A BACKBONE MODEL?

JUST LIKE TRADITIONAL OO, THE “MODEL” IS THE CORE OF THE APPLICATION BUSINESS DOMAIN

CONTAINS STRUCTURED DATA, AND METHODS TO MANIPULATE IT

EXTENSION OF BACKBONE.MODEL

WITH MODEL SPECIFIC PROPERTIES AND FUNCTIONS

PROTOTYPE PROVIDES BASIC FUNCTIONALITY FOR MANAGING CHANGES

PROVIDES RESTFUL JSON INTERFACE TO SERVER (VIA BACKBONE.SYNC)

2020Friday, December 21, 12

Page 21: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

BACKBONE.MODEL

21

define('backbone', function(Backbone) { return Backbone.Model.extend({

defaults: { isbn: undefined, title: undefined, author: undefined

}, validate: function(attrs) { if (!attrs.isbn

|| !attrs.title || !attrs.author) {

return 'Not valid sucker!'; } }

});});

BOOK.MODEL.JS

21Friday, December 21, 12

Page 22: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHAT IS A BACKBONE COLLECTION?

ORDERED SETS OF “MODELS”

CAN BIND “CHANGE”, “ADD”, “REMOVE”, ETC.

EVENTS TRIGGERED ON MODEL ALSO TRIGGERED ON THE COLLECTION DIRECTLY

ALLOWS FOR LISTENING FOR CHANGES TO SPECIFIC ATTRIBUTES ON ANY MODEL IN THE COLLECTION

EXTENSION OF BACKBONE.COLLECTION

WITH COLLECTION SPECIFIC PROPERTIES AND FUNCTIONS

PROTOTYPE PROVIDES BASIC FUNCTIONALITY FOR MANAGING CHANGES

PROVIDES RESTFUL JSON INTERFACE TO SERVER (VIA BACKBONE.SYNC)

2222Friday, December 21, 12

Page 23: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

BACKBONE.COLLECTION

23

define('backbone', './book.model', function(Backbone, BookModel) {

return Backbone.Collection.extend({ ! model: BookModel, ! url: '/sherpa/book' });});

BOOK.COLLECTION.JS

23Friday, December 21, 12

Page 24: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHAT IS A BACKBONE VIEW ?

LOGICAL REPRESENTATION OF A “PIECE” OF YOUR HTML

ALLOWS FOR ANY TEMPLATING LIBRARY

MAINLY ORGANIZATIONAL!

BACKED BY MODEL (OR COLLECTION OF MODEL)

UPDATED VIA MODEL/COLLECTION EVENTS TIED TO “RENDER” METHOD

2424Friday, December 21, 12

Page 25: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

BACKBONE.VIEW

25

define(['jquery', 'underscore', 'backbone', './book.collection', 'text!./book-list.html'], function($, _, Backbone, books, template) {

return Backbone.View.extend( {el: 'div.books',collection: books,initialize: function() {

this.render();},render: function() {

this.$el.empty();var _html = _.template(template, this.collection, { variable: 'books' } );this.$el.append(_html);

}});

})

BOOK.VIEW.JS

25Friday, December 21, 12

Page 26: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHAT IS A BACKBONE ROUTER ?

PROVIDES METHODS FOR ROUTING CLIENT-SIDE REQUESTS

CONNECTING THEM TO ACTIONS AND EVENTS

ALLOWS FOR “DEEP-LINKING” INTO OUR APPLICATIONS

2626Friday, December 21, 12

Page 27: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

BACKBONE.ROUTER

27

define(['backbone'], function(Backbone) {

return Backbone.Router.extend({ routes: { 'search/:query' : 'search', 'book/:id' : 'book' }, search : function(query) { ... }, book : function(id) { ... } });});

ROUTER.JS

27Friday, December 21, 12

Page 28: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WALKTHROUGH

QUICK DEMO OF BASIC BACKBONE.JS USAGE

2828Friday, December 21, 12

Page 29: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

29

BOOTSTRAP

29Friday, December 21, 12

Page 30: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHAT IS BOOTSTRAP ?

FRONT-END WEB DEVELOPMENT FRAMEWORK

BUILT AT TWITTER

DESIGNED TO EASE CROSS DEVICE DEVELOPMENT ...BOTH AESTHETICS AND BEHAVIOR

BROWSER, TABLET, PHONE, ETC.

BASED ON “LESS” (A DYNAMIC CSS EXTENSION)

GOBS OF BUILT IN FEATURES, BUT FULLY EXTENDABLE

3030Friday, December 21, 12

Page 31: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHY BOOTSTRAP ?

DYNAMIC CSS BASED, MINIMIZING JAVASCRIPT NEEDED FOR RICH USER INTERFACE DEVELOPMENT

FOCUSES ON MINIMALISTIC APPROACH TO WEB DESIGN

VERY EFFICIENT USAGE PATTERNS

RESPONSIVE LAYOUT

CHANGING CSS BASED ON DEVICE LAYOUT

3131Friday, December 21, 12

Page 32: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

BOOTSTRAP FEATURES

RESPONSIVE 12 COLUMN GRID SYSTEM

LAYOUT METAPHOR

CUSTOMIZABLE BASE CSS

LARGE COLLECTION OF GUI COMPONENTS

GROWING COLLECTION OF JQUERY PLUGINS

HTML5 BASED DYNAMIC CONTROLS (LESS JS NEEDED FOR UI)

3232Friday, December 21, 12

Page 33: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WALKTHROUGH

QUICK DEMO OF BASIC BOOTSTRAP USAGE

3333Friday, December 21, 12

Page 34: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

34

MOCKJAX

34Friday, December 21, 12

Page 35: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHAT IS MOCKJAX ?

A JQUERY PLUGIN THAT PROVIDES AN INTERFACE FOR SIMULATING AJAX REQUESTS & RESPONSES

3535Friday, December 21, 12

Page 36: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WHY MOCKJAX?

PROVIDES A SOLUTION FOR CLEANLY SEPARATING FRONT-END & BACK-END DEVELOPMENT

EASY TO USE :: JQUERY BASED

FLEXIBLE & POWERFUL FEATURE SET

3636Friday, December 21, 12

Page 37: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

WALKTHROUGH

QUICK DEMO OF BASIC MOCKJAX USAGE

3737Friday, December 21, 12

Page 38: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

API DOCUMENTATION &REFERENCES

HTTP://REQUIREJS.ORG

HTTP://UNDERSCOREJS.ORG

HTTP://UNDERSCOREJS.ORG

HTTP://TWITTER.GITHUB.COM/BOOTSTRAP/

HTTPS://GITHUB.COM/APPENDTO/JQUERY-MOCKJAX

3838Friday, December 21, 12

Page 39: ADVANCED JAVASCRIPT - Keyhole Software · 2017-04-05 · what is backbone.js ? javascript library for building structured web applications adds “structure” to the client side

RECOMMENDED READING

HTTP://WWW.INFOQ.COM/ARTICLES/MOBILE-ARCHITECTURE-HTML5-JAVASCRIPT

HTTP://JAVASCRIPTPLAYGROUND.COM/BLOG/2012/07/REQUIREJS-AMD-TUTORIAL-INTRODUCTION

HTTP://NET.TUTSPLUS.COM/TUTORIALS/JAVASCRIPT-AJAX/GETTING-COZY-WITH-UNDERSCORE-JS/

HTTP://ARTURADIB.COM/HELLO-BACKBONEJS/

HTTP://JA.MESBROWN.COM/2012/04/ADVENTURES-IN-MOCKJAX/

HTTP://WWW.WEBMONKEY.COM/2012/10/BOOTSTRAP-FRAMEWORK-PLANS-TO-GIVE-TWITTER-THE-BOOT/

3939Friday, December 21, 12