Top Banner
Coveted Th e Universa L Web Component Format June 16th, 2015 - Wicked good Ember Conf
59

Graffiti: The Coveted Universal Web Component Format

Aug 07, 2015

Download

Technology

Jay Phelps
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Graffiti: The Coveted Universal Web Component Format

CovetedThe

UniversaLWeb Component

Format

June 16th, 2015 - Wicked good Ember Conf

Page 2: Graffiti: The Coveted Universal Web Component Format

“Component” is a super Ambiguous word these days.

Ember, React, Angular, etc all have concepts of “Components”

Page 3: Graffiti: The Coveted Universal Web Component Format

UNIVERSAL u·ni·ver·sal [ yoo-nuh-vur-suh l ]

adjective

1. Used or understood by all

Page 4: Graffiti: The Coveted Universal Web Component Format
Page 5: Graffiti: The Coveted Universal Web Component Format

I am declaring war On all framework view layers

Page 6: Graffiti: The Coveted Universal Web Component Format

Jay PhelpsSenior Front end engineer | Netflix Twitter: @_jayphelps

Page 7: Graffiti: The Coveted Universal Web Component Format

W3c - Web Components Create custom, reusable HTML elements which allow

encapsulation and interoperability.

Page 8: Graffiti: The Coveted Universal Web Component Format

The Real world

Page 9: Graffiti: The Coveted Universal Web Component Format

What’s missing?

Page 10: Graffiti: The Coveted Universal Web Component Format

<div>{{value}}</div>

Page 11: Graffiti: The Coveted Universal Web Component Format

No Interpolation

Page 12: Graffiti: The Coveted Universal Web Component Format
Page 13: Graffiti: The Coveted Universal Web Component Format

No bindings

Page 14: Graffiti: The Coveted Universal Web Component Format
Page 15: Graffiti: The Coveted Universal Web Component Format

No Helpers/directives

{{#if foo}}

<div ng-repeat="(key, value) in myObj">

{{#each items as |item|}}

<input ng-model="value" />

Page 16: Graffiti: The Coveted Universal Web Component Format

No computed properties, Observers etc

Page 17: Graffiti: The Coveted Universal Web Component Format
Page 18: Graffiti: The Coveted Universal Web Component Format

What do we do?

Page 19: Graffiti: The Coveted Universal Web Component Format

Filling in the gaps

Page 20: Graffiti: The Coveted Universal Web Component Format

X-tags

Page 21: Graffiti: The Coveted Universal Web Component Format
Page 22: Graffiti: The Coveted Universal Web Component Format

MOAR

Page 23: Graffiti: The Coveted Universal Web Component Format

polymer

Page 24: Graffiti: The Coveted Universal Web Component Format

It’s awesome.

Page 25: Graffiti: The Coveted Universal Web Component Format

element properties can be bound in the templateDeclarative data binding

Page 26: Graffiti: The Coveted Universal Web Component Format
Page 27: Graffiti: The Coveted Universal Web Component Format

Computed Properties

Page 28: Graffiti: The Coveted Universal Web Component Format

Observers

Page 29: Graffiti: The Coveted Universal Web Component Format
Page 30: Graffiti: The Coveted Universal Web Component Format

Polymer 0.5 “alpha”

Page 31: Graffiti: The Coveted Universal Web Component Format

Complex lists, charts, etc.Bindings/renders can be slow

Page 32: Graffiti: The Coveted Universal Web Component Format

Shadow DOM “shady DOM”Polymer 1.0

Page 33: Graffiti: The Coveted Universal Web Component Format

Quite literally a ground up rewrite from 0.5So much faster

Page 34: Graffiti: The Coveted Universal Web Component Format

But…Not fast enough…For me…

Page 35: Graffiti: The Coveted Universal Web Component Format

reinventing the virtual dom wheel

Page 36: Graffiti: The Coveted Universal Web Component Format

via BabelEs6/7++ ???

Page 37: Graffiti: The Coveted Universal Web Component Format

¯\_(ツ)_/¯

Page 38: Graffiti: The Coveted Universal Web Component Format

what now?

Page 39: Graffiti: The Coveted Universal Web Component Format

*Ember 2.0 with Glimmer rendering engine

React & ember* are super fast

Page 40: Graffiti: The Coveted Universal Web Component Format

tl;dr

ember fast ≈ htmlbars/glimmer

Page 41: Graffiti: The Coveted Universal Web Component Format

With sugar, glue, and some duct tape

Can we use it?

Page 42: Graffiti: The Coveted Universal Web Component Format

yep.

Page 43: Graffiti: The Coveted Universal Web Component Format

Introducing…

Page 44: Graffiti: The Coveted Universal Web Component Format
Page 45: Graffiti: The Coveted Universal Web Component Format

es6/7++

Page 46: Graffiti: The Coveted Universal Web Component Format

They both use Es6/7++ with decorators

Yes, it looks a bit like angular 2.0

Page 47: Graffiti: The Coveted Universal Web Component Format
Page 48: Graffiti: The Coveted Universal Web Component Format

How bout bindings?

Page 49: Graffiti: The Coveted Universal Web Component Format
Page 50: Graffiti: The Coveted Universal Web Component Format
Page 51: Graffiti: The Coveted Universal Web Component Format
Page 52: Graffiti: The Coveted Universal Web Component Format
Page 53: Graffiti: The Coveted Universal Web Component Format
Page 54: Graffiti: The Coveted Universal Web Component Format

Like ember, will get even faster as more hybrid approach is taken

FAST!

Page 55: Graffiti: The Coveted Universal Web Component Format
Page 56: Graffiti: The Coveted Universal Web Component Format

github.com/jayphelps/graffiti

Open source

Page 57: Graffiti: The Coveted Universal Web Component Format

Even if it’s you telling me how crazy I am

Contributions extremely welcome

Page 58: Graffiti: The Coveted Universal Web Component Format

HUGE Thank you to ember core team

Particularly those who let me bug them about htmlbars/glimmer

Page 59: Graffiti: The Coveted Universal Web Component Format

Q/aTwitter: @_jayphelps