Pull to refresh

Comments 17

learn.javascript отличный сайт, там много хорошего материала.
Я бы хотел написать еще пару статей на эту тему, подскажите что можно было бы улучшить? и что вы имеете ввиду под более детальнее? Больше примеров?

Что-нибудь специфическое в использовании, редкое использование. Хитрости в применении.

загрузка html (нет хука, который бы срабатывал, когда темплейт загружен) серверный рендеринг с деклоративным шадов домом,
Вообще сделать компонент с navigation api, это в любом случае понадобится если компоненты использовать

мне в своё время очень помог freeCodeCamp, мне кажется, что отличное дополнение к базовому learn.javascript

Вэб компоненты слишком громоздки/многословны:

Покажите мне код

Например вот как может выглядеть компонент кастомного счетчика на Фьюзоре:

const ClickCounter = ({count = 0}) => (
  <button click_e_update={() => count++}>Clicked {() => count} times</button>
);

Это разные вещи, и там Вам ответили

Лучше один раз изучить стандарт (W3C), чем для каждого фреймворка запоминать отличия.

Вэб компоненты слишком громоздки/многословны

Потому что веб-компоненты — всего лишь набор стандартов/DOM API/примитивов. Фьюзор, как я понял, это библиотека/фреймворк с дополнительной логикой и, судя по JSX, с компилятором. Поэтому фьюзор (или что-либо ещё) нужно сравнивать не с голыми веб-компонентами, которые работают в браузере как есть без сборщиков, компиляторов и кастомного синтаксиса, а с соответствующими библиотеками/фреймворками, в основе которых веб-компоненты: Lit, Stencil, Symbiote и так далее. Они как раз решают проблему многословности стандартного API.

Вы правильно поняли, Фьюзор это библиотека с одним уровнем абстракции над document.createElement, который помогает декларативно создавать элементы и потом их обновлять с помощью функции update. Компоненты в нем являются простыми функциями возвращающими созданные таким образом элементы. Что в отличии от вэб компонентов гораздо удобнее - функции гибче классов. Компилятор нужен при только использовании JSX, но не нужен при функциональном стиле:

import {button} from '@fusorjs/dom/html';
const ClickCounter = (count = 0) =>
  button({click_e_update: () => count++}, 'Clicked ', () => count, ' times');

Про декларатиынй shadow dom ещё бы написали. Очень важная и определяющая возможность, для самой больной темы серверного рендеринга. С декларативным shadow dom это стало значительно проще.

Очередной некропост о технологии пятнадцатилетней давности. Я это использовал еще до появления всех этих ваших новомодных vue, svelte и т.д.

Я это использовал еще до появления всех этих ваших новомодных vue, svelte и т.д.

Очередной некропост о технологии пятнадцатилетней давности

Раньше 2017 года не могли. Тогда уже vue и react были.

Я как только он появился начал на них писать и это один из агрументов был, что никто не сможет написать, что я это 15 лет уже использую. ))) Раньше меня вы могли начать писать, только если вы являетесь разработчиком этих стандартов.

Сочетание этих технологий стало стандартом к 2018 году. 
Да и тогда это фреймворк полимер был, поддержка очень плохая была.

Стандарту 8 лет максимум


Раньше 2017 года не могли. Тогда уже vue и react были.

shadowDom уже во всю использовался с 2013го, ну ок, не 15, 12 лет. Пара лет погоды не играет. Первый релиз vue был только 2014, а релиз стандарта shadowDOM в 2011

Я наверное немного отстал от жизни) Просто во фронтенде такое многообразие библиотек и фреймворков что все изучить просто нереально (Я до этого писал на React и Vue). Сейчас решил посмотреть на то что есть из коробки и мне это очень понравилось, вот и решил поделится)

В этой статье, как и во многих вводных статьях про веб-компоненты, есть важное допущение. Веб-компоненты сравниваются и напрямую противопоставляются популярным JS-фреймворкам. Если смотреть с такой стороны, то веб-компоненты во многом будут уступать фреймворкам по функциональности и удобству разработки.

Например, нет декларативного синтаксиса шаблонов для привязки данных, циклов и условной отрисовки. Нет реактивных данных. Не хватает многих привычных вещей из фреймворков. С помощью современного JS и Web API всё недостающее можно реализовать, но для многих это будет созданием велосипеда и тратой времени.

Поэтому мне кажется, что правильнее смотреть на веб-компоненты, как на набор низкоуровневых примитивов браузера, расширений DOM API, которые позволяют создавать собственные DOM-элементы с логикой и стилями. Как эти примитивы использовать и что из них можно построить — уже другой вопрос. А создать можно много чего.

Ну и проводить какие-то аналогии и сравнения с тем же React или Vue не голых веб-компонентов, а таких же надстроек над DOM и веб-компонентами, как, например, Lit.

Вообще говоря у меня не было изначально цели сравнивать библиотеки, я считаю веб компоненты могут служить неплохим дополнением для библиотек. Например можно сделать какие-то базовые компоненты а потом использовать их в связке с React, Vue на разных проектах.

Веб компоненты не так удобны в разработке, тут согласен. Но тем не менее ряд преимуществ все таки имеются:
1. не нужно устанавливать доп пакеты/модули (можно даже обойтись без сборки);
2. нет проблем с версионированием;
3. на веб компонентах вы пишите сразу агностик, а значит компонент который вы реализуете один раз могут использоваться и с тем же React, Svelte, Vue и тд.
4. дебажить существенно проще: благодаря небольшому стэк трейсу (в отличии от vue например) и отсутствие computed свойств. Когда в коде появлюятся длинные цепочки computed свойств - это настоящая проблема тк в какой-то момент ты перестаешь понимать что происходит (лично мое мнение, я с этим сталкивался достаточно часто:) )

Sign up to leave a comment.

Articles