в том что то как вам браузер выделит фрейм зависит от погоды, т.е. вы замеряли что-то другое, может общее состояние операционной системы и процесса, прогретость кешей там
чего бы не было)? динамиеческий рендеринг был не работал)? это может быть да конечно… причем тут от*ебись)? это специальная фича, что-бы непрограммисты могли изменять внешний вид и конфигурацию самостоятельно
может справедливости ради еще финальный отсчет перенести сразу за окончанием цикла, а не когда вам браузер выделит квант рендер-цикла?
у меня если по-вашему показывало 0.14-0.17, а когда перенес 0.04-0.07
вот часть кода которая менялась:
for (let i = 0; i < elemetsTotal; i++) {
let tEl = document.createElement('test-element');
document.body.appendChild(tEl);
}
let endTime = (window.performance.now() - startTime) / 1000;
window.requestAnimationFrame(() => {
console.log('Elements total: ' + elemetsTotal + '; Rendering time: ' + endTime + 's');
});
Каком еще обновлении дизайна? Когда у вас произойдет обновление дизайна, а в js коде идет выборка по селектору, которого в шаблоне больше нет, вам не придется ничего делать, не?
на старте многих веб-проектов по ходу разработки выкатывается 4-5 версий дизайна, обычно довольно эволюционно но все же меняющихся, по дизайну делается верстка, вот ее вам каждый раз придется заново интегрировать в свои шаблоны восстанавливая все эти магичные аттрибуты
там можно задать данные, мапинги и шаблоны отображения прямо в админке, все без лазания в код, это такая типа фича, я ведь уже 4 раза повторял, что повторял про назначение этого кода?
К тому же Svelte 3 просто использует CustomEvent с небольшой оберткой над ним, чтобы не писать бойлерплейт код.
бойлерплейт это фреймворки не по стандартам и паттернам, а бинд эвента переделать это не проблема, вы же предлагаете говоря языком аналогий из-за опечатки, использовать китайский. В том коде может не много паттернов, но и антипаттернов не так много
ни с какого бока оно на ванилу не похожа, наоборот — полно казуальщины, например антипатерн export default, причем обжектов, странные аттрибуты у тегов все там странно, как в рякте и вуе, но немного по-другому конечно. В этих кульбитах нет необходимости в разработке.
по стилистике кода колхоз как в свельте, вуе или рякте не проходит сразу, ангуляр чуть пограмотнее, критерии все описаны в любой книжке про паттерны и практики программирования на нормальных языках программирования, например прочитайте про SOLID, они отработаны с годами практики и решения различных задач и проблем, пренебрежение ими всегда чревато проблемами с развитием и поддержкой продукта, а следование с умеренным фанатизмом позволяет получить код, с которым не больно работать и через 10к лет
Лучше уж тогда взять инструмент, где все это уже есть и работает на ура.
когда мы говорим о технологии, работает — значит поддерживает стандарты и реализует паттерны, это ключевой критерий качества технологии как продукта, потому что технология это продукт для инженеров
Ваш компонент на экран не влазит, при том что там даже не весь компонент,
мой компонент не функция, а класс если все правильно попиленно, а не намешанно в вермишель, в этом не трудно ориенироваться в среде разработки или редакторе
И чем это интересно это проще чем во фреймворках? Например, в Svelte точно также события на компонентах и точно
в фреймворках обычно косорылые хранилки написанные школотой криво, так что пользоваться сложно, больше гемора и напрасной траты усилий
То есть все что можно реализовать на веб-компонентах, можно и там и даже больше.
еще один казуальный фреймворк не поддерживающий стандарты и паттерны вобщем-то просто не нужен, если вам удастся изучить технологий 5-10 вы поймете, насколько ценно их качество, а не какие-то особенные штучки
О, видел тут недавно на митапе. Коммуникацию веб-компонентов через ивенты. Там компоненты стреляли ивентами, внутри detail передавая свой собственный инстанс, чтобы компонент-получатель мог через него что-то сделать с компонентом продуцирующим ивент.
инстанс не надо передавать наверное никогда, в path и так есть ссылка на эмитера, хотя такой толкбек наверное нужен не часто, если требуется прямое связывание или расшаренное состояние и поведение, правильнее заинжектить в компоненты сервисы и их дергать как мне кажется
этот код я легко причешу до совсем конфетного состояния, а вы из своей свельты или еще какого казуального ужаса нормального кода не сделаете переписав все с 0
Вопрос, как вы импортируете html шаблон в файл с js классом?
можно реализовать метод лоадер, примерно как импорт в вашем фреймворке или лоадеры systemjs/webpack, до недавнего времени все лоадеры в джаваскрипте были построены либо на заворачивании в анонимки и инлайн в жс либо на script.src = url && document.write
Вы функции таким же принципом пишете? Если функция с одним смыслом, то пусть будет хоть 1000 строк и быть совершенно не читаемой, так?
функция должна влазить в экран, это один из критериев быстрой оценки
Если бы вы сделали ваш код удобным для чтения, разделив его на несколько компонентов то столкнулись бы
я вам 3 раза или более повторил что это непродуктовый код, который пока писался что-бы работало в условиях дефицита времени на это. Проблемы коммуникации решаются гораздо проще чем в популярных и не очень фреймворках, у меня есть код с гораздо большим количеством компонетов и вообще всего, который я вам по NDA показать никак не могу. Коммуникация между веб-компонентами происходит через эвенты и это гораздо понятнее всяких выдуманных стор систем, у меня в том коде кстати есть примеры коммуникации с другим модулем.
странные неочевидные для разработчика решения, какая-то особенная магия
а для сервера в строку.
в строку для сервера как раз будет native template, а большего не надо, сервер лучше загрузит js'ы из отдельных файлов, потому что это будет специальный отдельный сервер на проде
Серьезно? А ShadowDOM мы куда денем? А на сервере у вас document/window есть?
это жи жс — все можно наполифиллить своими нахлобучками, поддержки шедоудом для ие11 нет, а полифилл есть, значит можно сделать свой для рендера в строку
>> А как бы вы его подключили в js файл с описанием компонента?
document.write + getElementById например?
>> 1-2 года это вообще стандарт работы в одной организации
т.е. за 30 лет стажа неофициант должен поменять 15-30 нетеррористов? не удивительно что каждый год все переписывается новыми одаренными
300 строк js кода, без шаблона и стилей — это просто гигансткий компонент
для меня это ориентир просто, я разделял по смыслу, необходимости дробить на компоненты там где смысл не требует что-бы удобнее было тыркать стейты как в рякте тут нет, когда посчитаю нужным вынесу все как надо будет
В Svelte я могу просто взять любой компонент и отрендерить его на сервере в строку, сколь бы сложным он не был и сколько бы компонентов внутри не содержал.
круто, но это не оправдывает казуальщины, кроме того это может означать, что рендерит он все-таки через вставку строк в dom. Что-бы отрендерить веб компонент думаю восновном достаточно вызвать конструктор класса и connectedCallback.
у меня если по-вашему показывало 0.14-0.17, а когда перенес 0.04-0.07
вот часть кода которая менялась:
на старте многих веб-проектов по ходу разработки выкатывается 4-5 версий дизайна, обычно довольно эволюционно но все же меняющихся, по дизайну делается верстка, вот ее вам каждый раз придется заново интегрировать в свои шаблоны восстанавливая все эти магичные аттрибуты
бойлерплейт это фреймворки не по стандартам и паттернам, а бинд эвента переделать это не проблема, вы же предлагаете говоря языком аналогий из-за опечатки, использовать китайский. В том коде может не много паттернов, но и антипаттернов не так много
похоже на перл в тегах
// ладно у нас тут уже ночь, я — спать
когда мы говорим о технологии, работает — значит поддерживает стандарты и реализует паттерны, это ключевой критерий качества технологии как продукта, потому что технология это продукт для инженеров
мой компонент не функция, а класс если все правильно попиленно, а не намешанно в вермишель, в этом не трудно ориенироваться в среде разработки или редакторе
в фреймворках обычно косорылые хранилки написанные школотой криво, так что пользоваться сложно, больше гемора и напрасной траты усилий
еще один казуальный фреймворк не поддерживающий стандарты и паттерны вобщем-то просто не нужен, если вам удастся изучить технологий 5-10 вы поймете, насколько ценно их качество, а не какие-то особенные штучки
инстанс не надо передавать наверное никогда, в path и так есть ссылка на эмитера, хотя такой толкбек наверное нужен не часто, если требуется прямое связывание или расшаренное состояние и поведение, правильнее заинжектить в компоненты сервисы и их дергать как мне кажется
можно реализовать метод лоадер, примерно как импорт в вашем фреймворке или лоадеры systemjs/webpack, до недавнего времени все лоадеры в джаваскрипте были построены либо на заворачивании в анонимки и инлайн в жс либо на script.src = url && document.write
функция должна влазить в экран, это один из критериев быстрой оценки
я вам 3 раза или более повторил что это непродуктовый код, который пока писался что-бы работало в условиях дефицита времени на это. Проблемы коммуникации решаются гораздо проще чем в популярных и не очень фреймворках, у меня есть код с гораздо большим количеством компонетов и вообще всего, который я вам по NDA показать никак не могу. Коммуникация между веб-компонентами происходит через эвенты и это гораздо понятнее всяких выдуманных стор систем, у меня в том коде кстати есть примеры коммуникации с другим модулем.
странные неочевидные для разработчика решения, какая-то особенная магия
в строку для сервера как раз будет native template, а большего не надо, сервер лучше загрузит js'ы из отдельных файлов, потому что это будет специальный отдельный сервер на проде
это жи жс — все можно наполифиллить своими нахлобучками, поддержки шедоудом для ие11 нет, а полифилл есть, значит можно сделать свой для рендера в строку
document.write + getElementById например?
>> 1-2 года это вообще стандарт работы в одной организации
т.е. за 30 лет стажа неофициант должен поменять 15-30 нетеррористов? не удивительно что каждый год все переписывается новыми одаренными
для меня это ориентир просто, я разделял по смыслу, необходимости дробить на компоненты там где смысл не требует что-бы удобнее было тыркать стейты как в рякте тут нет, когда посчитаю нужным вынесу все как надо будет
круто, но это не оправдывает казуальщины, кроме того это может означать, что рендерит он все-таки через вставку строк в dom. Что-бы отрендерить веб компонент думаю восновном достаточно вызвать конструктор класса и connectedCallback.