Complementing the @Danguilherme response follows some important details:
Benefits
There are many benefits of Polymer where we can highlight:
Declarative Programming
Lets you implement Domain Specific Language - DSL using powerful, intuitive, meaningful and expressive Markup.
Composition from Smaller Components
Building blocks using composition
Maintainability
When you read the code you understand immediately decreasing the maintenance cost. Encapsulation allows to develop components with specific function restricting scope and facilitating maintenance.
Real Reusability on the Web
Encapsulation values reusability and tool support like Bower allows use by any developer
Extensibility
Implements standard form to extend native elements and custom elements as in the example:
We can implement inheritance in Polymer using:
<polymer-element name="my-car" extends="my-vehicle">
We have the option to override the methods of the Polymer elements and, if necessary, we can use this.super() to call the function of the inherited element.
Separation of Scope
Allows differentiated scope for CSS, DOM and Apis
Interoperability
The integration is done at low level in the DOM so interoperability is complete. No need to use other Javascript libraries such as jQuery as we can directly use querySelector, querySelectorAll, getElementById, etc since IE 9 and all other browsers already support this.
Accessibility
Implemented by default.
Productivity
It is obvious when we use due to these advantages mentioned above.
Testability
The testability of the components is provided by WCT - Web Component Tester
https://github.com/Polymer/web-component-tester
Mixins
Mixins serve to add object behavior to others. It is a Javascript Feature. Polymer has a utility method to support this Feature in the Framework.
Grammar:
Polymer.mixin(target, obj1 [, obj2, ..., objN ])
Exemplo:
var myMixin = {
sharedMethod: function() {
// ...
}
}
<polymer-element name="my-element">
<script>
Polymer(Polymer.mixin({
// my-element prototype
}, myMixin));
</script>
</polymer-element>
Fonts on Github
Sources hosted on github can be accessed via Bower
bower install --save Polymer/core-elements
Layout Containers
Several elements to support Layout eliminates the need to use Bootstrap or similar. Allied to Layout Attributes
that works for native elements such as or we have a full feature set for dynamic Layout management.
Support for Themes
use to implement Themes for the application
Support for Transitions
Tags as can be used to define transitions between content in a declarative form
Design Tool
Visual tool available working as a playground for dialogue development and application pages using drag-and-drop.
Article for an introduction. It’s worth it. http://blog.dtisistemas.com.br/web-components-e-polymer-porque-ele-vai-facilitar-life/
– Vinícius Matos Paiva
Related: What is Web Components
– Wallace Maxters