web components - rutgers tech meetup fall 2014

61
WARNING this is a tech talk @yaviner

Upload: yair-aviner

Post on 14-Jul-2015

53 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Web Components - Rutgers Tech Meetup Fall 2014

WARNINGthis is a tech talk

@yaviner

Page 2: Web Components - Rutgers Tech Meetup Fall 2014

Building BlocksWeb Components and the Future of HTML

@yaviner

aka cool stuff you should be thinking about

Page 3: Web Components - Rutgers Tech Meetup Fall 2014

Introductions…briefly

Rutgers Alum (’14, RBS)

Some startups, hackathons

UI Developer for iCIMS

Likes geeky things, whiteboards

@yaviner

Page 4: Web Components - Rutgers Tech Meetup Fall 2014

Enough of that.

@yaviner

Page 5: Web Components - Rutgers Tech Meetup Fall 2014

We’re going to talk about web components.

@yaviner

Page 6: Web Components - Rutgers Tech Meetup Fall 2014

SOME WEB HISTORYGive me some context, bro

@yaviner

Page 7: Web Components - Rutgers Tech Meetup Fall 2014

@yaviner

Page 8: Web Components - Rutgers Tech Meetup Fall 2014

The horror!

Bloated HTML

Difficult to read, maintain

Wrong-semantic meaning (without even mentioning accessibility…)

@yaviner

Page 9: Web Components - Rutgers Tech Meetup Fall 2014

But it kind of made sense… at the time

Finicky browsers

Immature standards

We needed predictable results

@yaviner

Page 10: Web Components - Rutgers Tech Meetup Fall 2014

SO WHAT DID WE DO ABOUT IT?

“but I’ve never seen a table based design” – You, 2014

@yaviner

Page 11: Web Components - Rutgers Tech Meetup Fall 2014

<div>

@yaviner

Page 12: Web Components - Rutgers Tech Meetup Fall 2014

<span>

@yaviner

Page 13: Web Components - Rutgers Tech Meetup Fall 2014

CSS

@yaviner

Page 14: Web Components - Rutgers Tech Meetup Fall 2014

CSS3

@yaviner

Page 15: Web Components - Rutgers Tech Meetup Fall 2014

@yaviner

Page 16: Web Components - Rutgers Tech Meetup Fall 2014

But that was like a decade of tables, what gives?

Page 17: Web Components - Rutgers Tech Meetup Fall 2014

HTML’s authors envisioned an Internet of information, not an Internet of entertainment and interactivity. CSS wasn’t supported in most

browsers until around version 5.

@yaviner

Page 18: Web Components - Rutgers Tech Meetup Fall 2014

We (developers, browsers) realized that content and

presentation were meant to be separate.

@yaviner

Page 19: Web Components - Rutgers Tech Meetup Fall 2014

HTML is most appropriate as a declarative language

@yaviner

Page 20: Web Components - Rutgers Tech Meetup Fall 2014

HTML5 Introduced:

<article> - A block of grouped, related information.

<section> - Logical separation of groups of information.

<video> - A video! This needs playback!

@yaviner

Page 21: Web Components - Rutgers Tech Meetup Fall 2014

If we commoditize this idea and apply it broadly, we can refer to these elements as components.

@yaviner

Page 22: Web Components - Rutgers Tech Meetup Fall 2014

What if I need to build an app?

@yaviner

Page 23: Web Components - Rutgers Tech Meetup Fall 2014

Current HTML for a Hangout(mmm…soupy)

@yaviner

Page 24: Web Components - Rutgers Tech Meetup Fall 2014

<div> is a limited-meaning tag. Without an ID, it’s nothing but a visual separator.

@yaviner

Page 25: Web Components - Rutgers Tech Meetup Fall 2014

What if we could write it like this?

@yaviner@yaviner

Page 26: Web Components - Rutgers Tech Meetup Fall 2014

@yaviner

Page 27: Web Components - Rutgers Tech Meetup Fall 2014

What if our HTML was just a series of components?

@yaviner

Page 28: Web Components - Rutgers Tech Meetup Fall 2014

The idea isn’t new.

@yaviner

Page 29: Web Components - Rutgers Tech Meetup Fall 2014

@yaviner

Page 30: Web Components - Rutgers Tech Meetup Fall 2014

All built on the principles of web components.

@yaviner

Page 31: Web Components - Rutgers Tech Meetup Fall 2014

But frameworks bring costs, and so their plugins are not “free” like “<input type=“date”> is free.

@yaviner

Page 32: Web Components - Rutgers Tech Meetup Fall 2014

The most famous client side projects are fated to die.

- Zeno Rocha

@yaviner

Page 33: Web Components - Rutgers Tech Meetup Fall 2014

Just as CSS heralded in the era of “Web 2.0”, these frameworks have been nudging us toward native

web components for years.

@yaviner

Page 34: Web Components - Rutgers Tech Meetup Fall 2014

So what are web components?

@yaviner

Page 35: Web Components - Rutgers Tech Meetup Fall 2014

They empower us to natively define and extend HTML.

@yaviner

Page 36: Web Components - Rutgers Tech Meetup Fall 2014

And share it with others.

@yaviner

Page 37: Web Components - Rutgers Tech Meetup Fall 2014

HOW?

@yaviner

Page 38: Web Components - Rutgers Tech Meetup Fall 2014

Shadow DOM -> Encapsulation

@yaviner

Page 39: Web Components - Rutgers Tech Meetup Fall 2014

HTML Templates -> Inert, Re-usable DOM.

@yaviner

Page 40: Web Components - Rutgers Tech Meetup Fall 2014

Custom Elements -> Semantics, Extensions

@yaviner

Page 41: Web Components - Rutgers Tech Meetup Fall 2014

HTML Imports -> Import an entire component with one line

@yaviner

Page 42: Web Components - Rutgers Tech Meetup Fall 2014

All of this is regular DOM.

@yaviner

Page 43: Web Components - Rutgers Tech Meetup Fall 2014

SOME EXAMPLES

@yaviner

What you really wanted

Page 44: Web Components - Rutgers Tech Meetup Fall 2014

<video is=“camera”>

eduardolundgren.github.io/video-camera-element@yaviner

Page 45: Web Components - Rutgers Tech Meetup Fall 2014

<table is=“datatable”>

@yaviner

Page 46: Web Components - Rutgers Tech Meetup Fall 2014

<youtube-video id=“dQw4w9WgXcQ”>

@yaviner

Page 47: Web Components - Rutgers Tech Meetup Fall 2014

<google-maps>

eduardolundgren.github.io/google-maps-element@yaviner

Page 48: Web Components - Rutgers Tech Meetup Fall 2014

<twitter-button>

zenorocha.github.io/twitter-button@yaviner

Page 49: Web Components - Rutgers Tech Meetup Fall 2014

I heard you like frameworks

@yaviner

No, I’m not including xzibit here

Page 50: Web Components - Rutgers Tech Meetup Fall 2014

Polymer is an opinionated framework on top of Web Components.It’s backing muscle includes Google and others.

@yaviner

Page 51: Web Components - Rutgers Tech Meetup Fall 2014

X-Tags is another cool one

The brains? Mozilla

@yaviner

Page 52: Web Components - Rutgers Tech Meetup Fall 2014

@yaviner

Page 53: Web Components - Rutgers Tech Meetup Fall 2014

@yaviner

Page 54: Web Components - Rutgers Tech Meetup Fall 2014

But the ultimate goal of these frameworks is to become redundant.

@yaviner

Page 55: Web Components - Rutgers Tech Meetup Fall 2014

The most famous client side projects are fated to die.

- Zeno Rocha

@yaviner

Page 56: Web Components - Rutgers Tech Meetup Fall 2014

What about <insert-existing-JS-framework>?

@yaviner

Page 57: Web Components - Rutgers Tech Meetup Fall 2014

Angular and Ember will both support (and export!) native web components in their next iteration.

@yaviner

Page 58: Web Components - Rutgers Tech Meetup Fall 2014

Where can I learn more?

@yaviner

Page 59: Web Components - Rutgers Tech Meetup Fall 2014

Sites:webcomponents.orgpolymer-project.org

x-tags.orgcustomelements.io

People:Eric Bidelman @ebidel

Zeno Rocha @zenorocha

@yaviner

Page 60: Web Components - Rutgers Tech Meetup Fall 2014

GO FORTH AND BUILD

@yaviner

Page 61: Web Components - Rutgers Tech Meetup Fall 2014

Thank you!Questions?

@yaviner