@arturparkhisenko
Год вместе
Мы обеспечиваем онлайн-трансляции
Мы сближаем тебя с окружающими, превращая каждое событие в бесценный опыт
Часть Livestream Studio, позволяющая управлять приложением с помощью веб-браузера из любой точки мира
Это возможность создавать пользовательские, инкапсулируемые, переиспользуемые компоненты, использующие веб-платформу.
webcomponents.js
для: IE 11+, Safari 9+
Проект Polymer - это набор библиотек и утилит для
веб-разработчиков.
Библиотека Polymer создана для того, чтобы упростить работу с нативными API веб-платформы.
Polymer App Toolbox - это коллекция готовых веб-компонентов, утилит и шаблонов для создания
Прогрессивных Веб Приложений с библиотекой Polymer
(роутинг, локализация, хранилище, лэйауты, polygit-cdn).
Отдельные утилиты: polymer-analyzer/build/linter/project-config/bundler, polyserve, Web Component Tester.
Polymer-cli - консольная утилита, которая включает в себя инструменты сборки, генерации, линтер, сервер для разработки и платформу для тестирования.
Polymer v1 (53kb min+gzip) больше всех по размеру, v2 (10kb)
SkateJS
Incremental DOM (from Google), JS импорт вместо HTML импорта, живой проект (5kb), (есть SSR)
X-tag и Bosonic - Являются заброшенными :/
и т.д. не используют Web Components APIs,
но можно использовать компоненты в них и их внутри компонентов.
undefined
на начальноеdom-if
, dom-repeat
created / constructor (native)
ready
attached / connectedCallback (native)
detached / disconnectedCallback (native)
attributeChanged / attributeChangedCallback (native)
adoptedCallback
Много примеров для Polymer 1.X<dom-module id="element-name">
<template>
<style>/* CSS rules for your element */</style>
<!-- local DOM for your element -->
</template>
<script> Polymer({ is: "element-name" }); </script>
</dom-module>
<dom-module id="element-name">
<template><style></style>/* same as v1 */</template>
<script>
class MyPolymerElement extends Polymer.Element {// ...}
customElements.define('element-name', MyPolymerElement);
</script>
</dom-module>
<wsd-logo color="dark" width="128px"></wsd-logo>
<wsd-logo color="light" width="128px"></wsd-logo>
<wsd-logo color="mono" width="128px"></wsd-logo>
<template>
<!-- Атрибуты -->
<my-element selected $= "[[value]]"></my-element>
<!-- Свойства -->
<my-element selected = "{{value}}"></my-element>
</template>
<style>
:host {} /* Текущий элемент */
:host() {} /* Текущий элемент, соответствие селектору */
:host-context() {} /* Родитель, соответствие селектору */
::slotted() {} /* Вставленный контент, старый ::content */
>>> {} /* Игнорирует границы Shadow Dom,
старые /deep/ и ::shadow */
</style>
CSS свойство, позволяющее разработчикам ограничить область применения стилей, компоновок и отрисовок для браузера.
Влияет на производительность, используйте аккуратно.
habr пост о CSS Containmentcontain: strict; /* === layout style paint size */
contain: content; /* === layout style paint */
При создании компонентов не забывайте про эти 5 пунктов:
Artur Parkhisenko
site arturparkhisenko.github.io
twitter @lifeasecond