Web Components. Reactive Architecture for the Front End. Steven Skelton. Reactive Programming Toronto December 3, 2014

Similar documents
AngularJS Fundamentals

High Performance Single Page Application with Vue.js

Platform-Independent UI Models: Extraction from UI Prototypes and rendering as W3C Web Components

Full Stack Developer with Java

WeCode. Brought to you by CitrixNChill

Simple AngularJS thanks to Best Practices

,

a Very Short Introduction to AngularJS

International Research Journal of Engineering and Technology (IRJET) e-issn: Volume: 05 Issue: 06 June p-issn:

Financial. AngularJS. AngularJS. Download Full Version :

Advance Mobile& Web Application development using Angular and Native Script

Financial. AngularJS. AngularJS.

Founder & CEO

Full Stack boot camp

"Charting the Course... Comprehensive Angular. Course Summary

Angular 4 Syllabus. Module 1: Introduction. Module 2: AngularJS to Angular 4. Module 3: Introduction to Typescript

Siteforce Pilot: Best Practices

A Guide to Liv-ex Software Development Kit (SDK)

Intro Winter Semester 2016/17

Web Development IB PRECISION EXAMS

Stencil: The Time for Vanilla Web Components has Arrived

CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application

Ten interesting features of Google s Angular Project

Building mobile app using Cordova and AngularJS, common practices. Goran Kopevski

Design and Implementation of Single Page Application Based on AngularJS

Single Page Applications using AngularJS

TechWatch Report Javascript Libraries and Frameworks

PWA-ifying Santa Tracker. Sam

Trusted Types - W3C TPAC

Treating Framework Fatigue With JavaScript

UI Course HTML: (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) Introduction. The World Wide Web (WWW) and history of HTML

Vue.js Framework. Internet Engineering. Spring Pooya Parsa Professor: Bahador Bakhshi CE & IT Department, Amirkabir University of Technology

Client Side MVC with Backbone & Rails. Tom

Cloud Native Architecture 300. Copyright 2014 Pivotal. All rights reserved.

Accessible Rendered Item (ARI) Technical Specifications. Prepared by: Ali Abedi, UCLA/CRESST Last updated: 4/11/2016

MASTERS COURSE IN FULL STACK WEB APPLICATION DEVELOPMENT W W W. W E B S T A C K A C A D E M Y. C O M

Front End Programming

Templates and Databinding. SWE 432, Fall 2017 Design and Implementation of Software for the Web

Creating an Online Catalogue Search for CD Collection with AJAX, XML, and PHP Using a Relational Database Server on WAMP/LAMP Server

August, HPE Propel Microservices & Jumpstart

We will show you how we bypassed every XSS mitigation we tested. Mitigation bypass-ability via script gadget chains in 16 popular libraries

STARCOUNTER. Technical Overview

Qiufeng Zhu Advanced User Interface Spring 2017

React Not Just Hype!

The paper shows how to realize write-once-run-anywhere for such apps, and what are important lessons learned from our experience.

PHP WITH ANGULAR CURRICULUM. What you will Be Able to Achieve During This Course

Reactive Systems. Dave Farley.

OpenMRS 2.0 User Interface Redesign. Darius Jazayeri

Software LEIC/LETI. Lecture 18

Introduction to Azure DocumentDB. Jeff Renz, BI Architect RevGen Partners

Web Performance in

ANGULAR2 OVERVIEW. The Big Picture. Getting Started. Modules and Components. Declarative Template Syntax. Forms

Jquery Manually Set Checkbox Checked Or Not

D3 + Angular JS = Visual Awesomesauce

Building an OpenLayers 3 map viewer with React

Case Study: Dodging the Pitfalls of Enterprise Ajax Applications

Design Document V2 ThingLink Startup

Learning DHTMLX Suite UI

FRONT END DEVELOPER CAREER BLUEPRINT

The Multi-Principal OS Construction of the Gazelle Web Browser. Helen J. Wang, Chris Grier, Alex Moshchuk, Sam King, Piali Choudhury, Herman Venter

Progressive Web Apps & Polymer. Wendy Ginsberg Product Manager,

Building modern enterprise applications from scratch: lessons learned DOAG 2014 Dr. Clemens Wrzodek

eclipse rich ajax platform (rap)

Front End Nanodegree Syllabus

ES6 Modules...& Polymer

P a g e 1. Danish Technological Institute. Scripting and Web Languages Online Course k Scripting and Web Languages

Etanova Enterprise Solutions

Arjen de Blok. Senior Technical Consultant bij ICT Groep ( sinds 1995 Programmeren sinds 1990 Technologiën. Links

Nevin Dong 董乃文 Principle Technical Evangelist Microsoft Cooperation

Software. Full Stack Web Development Intensive, Fall Lecture Topics. Class Sessions. Grading

Front-End Web Developer Nanodegree Syllabus

Homework 8: Ajax, JSON and Responsive Design Travel and Entertainment Search (Bootstrap/Angular/AJAX/JSON/jQuery /Cloud Exercise)

welcome to BOILERCAMP HOW TO WEB DEV

Server execution of JavaScript: What could possibly go wrong?

Lesson 5: Multimedia on the Web

Future Web App Technologies

Modern Web Application Development. Sam Hogarth

Introduction to reactive programming. Jonas Chapuis, Ph.D.

Embracing HTML5 CSS </> JS javascript AJAX. A Piece of the Document Viewing Puzzle

Developing ASP.NET MVC Web Applications (486)

All India Council For Research & Training

,

תוכנית יומית לכנס התכנסות וארוחת בוקר

Practical Course: Web Development Angular JS Part I Winter Semester 2016/17. Juliane Franze

WEB DEVELOPER BLUEPRINT

ANGULARJS - MOCK TEST ANGULARJS MOCK TEST II

Microservices with Node.js

CompuScholar, Inc. Alignment to Utah's Web Development I Standards

The DOM and jquery functions and selectors. Lesson 3

Part IV: Connecting Your Apps

JavaScript Fundamentals_

CORE PHP CURRICULUM. Introductory Session Web Architecture Overview of PHP Platform Origins of PHP in the open source community

Frontend Frameworks. SWE 432, Fall 2016 Design and Implementation of Software for the Web

Feed Your Inner Data Scientist JAVASCRIPT TOOLS FOR DATA VISUALIZATION AND ANALYSIS

State of jquery Fall John Resig

Master Project Software Engineering: Team-based Development WS 2010/11

Static Webpage Development

Matteo Fogli. Web Performance

FIREFLY ARCHITECTURE: CO-BROWSING AT SCALE FOR THE ENTERPRISE

Angular 2: What s new? Jonas Bandi, IvoryCode GmbH

Transcription:

Web Components Reactive Architecture for the Front End Steven Skelton Reactive Programming Toronto December 3, 2014

Reactive Manifesto Is a pattern for building software capable of handling today's application requirements: Highly responsive to user, Large amounts of data, Grow and adapt to change Sounds like it could also apply to the front-end...

Reactive System Strategy Responsive Elastic Resilient Message Driven

Reactive Analogue Aggregate Single Server Cluster Responsive Elastic Resilient Message Driven Web Page Responsive Consistently Fast UI? Less bugs in SDLC? Rethink Event Bindings?

Elastic Browser Performance Today websites handle more data, with rich interactions, all within a single page. Each page requires: more JS libraries, larger downloads, data-binding, dynamic DOM. Leading to too-many, bizarre, frameworks.

Exponential Problem Today's frameworks bend around browser limitations AngularJS Dirty Checking They work... for small data sets or a limited number of instances.

New JavaScript Features that Scale Native Browser support (No download, No JavaScript engine) DOM Mutation Observers JavaScript Object observers <template> Multi-threading Web workers: Separate computations and UI async loading and parsing

Resilient Webpages Fewer errors by simplifying code HTML is the final product, Impedance mismatch of complex frameworks. Increase composibility, reusability of components Dev teams work more efficiently, Less work required, More cohesive design.

Slimmer Frameworks, Expand HTML Native support for Custom HTML tags Familiar, reusable components, No external dependencies, Built using HTML DOM in a <template>. Replaces frameworks' abstractions: None are framework agnostic, Rely on string, JSON or non-html templates.

Shadow DOM Enforces proper scoping, Segregate HTML along bounded contexts, Encapsulation of internals, Guard against external CSS, Id naming conflicts, Restrict interactions to messages. Ensures Loose-coupling, Reusability Can be pierced unlike an iframe when necessary

Web Components Native Browser Support (polyfilled if not yet supported) Custom HTML Elements <template> Shadow DOM Object.observe HTML Imports

Polymer (active development at Google) Native browser implementations are low-level and un-opinionated, Polymer is the first library to put it all together. Still pre-release, version 1.0 scheduled for Q2 Already used in production at: Salesforce, News Corp, GitHub, YouTube, Google

BE Reactive System Strategy Responsive Elastic Resilient Message Driven

FE Reactive System Strategy Responsive Native Support Elastic (elastic) Expanded HTML Resilient (Resilient) Directed Event Message Driven Bindings? (Message Driven)

Message vs. Event System Message-driven: focus on recipients, Event-driven: focus on sources. Difference very small in a FE context Ideal system: Message-oriented middleware, Event-driven components, Non-blocking execution.

Message Delivery via 2-Way Bindings <h1>welcome back {{account.name}}!</h1> <song-search genres="{{account.genres}}" results="{{playlist}}"> </song-search> <media-player playlist="{{playlist}}"> </media-player> <div class="footer"> <account-profile account="{{account}}"> </account-profile> </div>

observe Data references act as middleware, Location transparency, Components do not require knowledge of external events, maintaining loose coupling. Polymer expressions and filters can be used to transform and combine data outside of components: {{ a + b base16 }} {{ mynumbers gt(3) sort }}

Object.observe(), Array.observe() Events when: the value of a data property is updated, any property is added, any property is deleted, any property is reconfigured. No expensive dirty-checking, no special methods. Plain Old JavaScript Objects.

High level observe libraries observe.js PathObserver, ArrayObserver, ObjectObserver, CompoundObserver, ObserverTransform watchtower.js Angular 2.0's change detection Undocumented, more complex Both can Polyfill with dirty-checking

Reactive Analogue Aggregate Single Server Cluster Responsive Elastic Resilient Message Driven Responsive Web Page Native Support, Multi-threaded Loose Coupling, Encapsulation Event Driven Messages

Strategies for a Reactive FE Aggregate Single Server Cluster Responsive Elastic Resilient Message Driven Responsive Web Page Native Support, Web Workers Shadow DOM, Custom Elements Object.observe

Web Component Resources polymer-project.org HTML5Rocks.com customelements.io component.kitchen W3C Web Components wiki YouTube: - Chrome Dev Summit, Google I/O, JSConf

Thanks for Listening! Questions? Blog: http://stevenskelton.ca https://github.com/stevenrskelton Various Polymer web components