3. What is polymer
Polymer is a new type of library for
the web, built on top of Web
Components, and designed to
leverage the evolving web platform
on modern browsers.
4. Web Components
● Custom elements: <my-element></my-element>
● Shadow dom: (better <iframe>)
● HTML Imports: <link rel="import" href="my-element.
html">
● Templates: <template></template>
Polymer:
● Data binding: <div>{{model}}</div>
8. Why you should be excited
Developer productivity
● DOM + JS + CSS → no new APIs to learn!
● say what you mean → readability
Re-usability
● don't reinvent the wheel
● easy interop with other frameworks
● CSS isolation
Good software engineering paradigms on web (OOP)
9. Import Custom Element
<!-- Polyfill Web Components support for older browsers -->
<script src="components/platform/platform.js"></script>
<!-- Import element -->
<link rel="import" href="google-map.html">
<!-- Use element -->
<google-map lat="37.790" long="-122.390"></google-map>
11. Custom element dart code
import 'package:polymer/polymer.dart' ;
import 'dart:html' ;
@CustomTag('my-counter' )
class MyCounter extends PolymerElement {
@observable int counter = 0;
MyCounter. created() : super. created();
void increment(Event e, var detail, Node target) {
counter += 1;
}
}
12. Custom attributes
<my-volume volume="11"></my-volume>
@CustomTag('my-volume')
class MyVolume extends PolymerElement {
@published int volume = 0;
MyVolume.created() : super.created();
}
13. Templates
<template>
<template if="{{count <= 0}}">
<p>Click the button. It is fun!</p>
</template>
<template repeat="{{fruit in fruits}}">
<li>I like {{ fruit }}.</li>
</template>
</template>
14. Extending DOM elements
<button is="fancy-button" >Click me</button>
import 'package:polymer/polymer.dart' ;
import 'dart:html' show ButtonElement ;
@CustomTag( 'fancy-button' )
class FancyButton extends ButtonElement with Polymer, Observable {
FancyButton. created() : super. created() {
polymerCreated();
}
}