Внимательные декораторы и удобные прокси — метапрограммирование для всех.

Ссылка на мероприятие:

Виртуальная встреча CinciJS — 10 марта 2021 г. (ЗАВЕРШЕНО)

Презентация Google слайдов

GitHub Repo for Decorators Playground (включает Babel Legacy, Babel TC39, Typescript)

Обзор:

Метапрограммирование — это магия. Возможность устранить избыточность, обеспечить согласованность и беспрепятственно интегрировать шаблоны проектирования — мечта каждого разработчика. Метапрограммирование, выполненное хорошо, является воплощением 10-кратной инженерии, это код, который вам никогда не нужно писать, но который всегда можно использовать, это код, который делает вашу работу за вас, это лучший тип кода. По мере развития языков программирования метапрограммирование стало основным направлением деятельности разработчиков. Эта презентация направлена ​​на то, чтобы осветить несколько методов метапрограммирования с помощью декораторов Javascript и прокси-серверов, чтобы еще больше улучшить опыт разработчиков.

Введение в презентацию:

Метапрограммирование — это магия. Возможность устранить избыточность, обеспечить согласованность и беспрепятственно интегрировать шаблоны проектирования — мечта каждого разработчика. Метапрограммирование, выполненное хорошо, является воплощением 10-кратной инженерии, это код, который вам никогда не нужно писать, но который всегда можно использовать, это код, который делает вашу работу за вас, это лучший тип кода. По мере развития языков программирования метапрограммирование стало основным направлением деятельности разработчиков.

Как современный веб-разработчик и автор фреймворков, я очень рад видеть не только огромную эволюцию спецификации Javascript, но и стремительное внедрение Typescript. На этой волне языковой зрелости для меня было ясно одно: акцент на опыте разработчиков посредством реализации функций метапрограммирования был в основе этих впечатляющих технологических достижений.

С завершением спецификации ES6 несколько лет назад разработчики Javascript получили несколько ключевых инструментов метапрограммирования. В дополнение к классическим функциям Call, Bind и Apply новая спецификация представила анонимные/стрелочные функции, классы и модули, стандартизацию импорта и прокси. Кроме того, за это время сообщество Javascript также стало свидетелем широкого внедрения очень полезной, но нестандартной функции — декораторов.

От библиотек, таких как LitElement и NgXS, до фреймворков/инструментальных цепочек, таких как Angular и Stencil, до синтаксических расширений, таких как Typescript и Babel, декораторы просто используются повсюду.

Декораторы оказались настолько полезными, что стали основным механизмом метапрограммирования. С помощью компиляторов/транспиляторов, таких как Typescript и Babel, разработчики теперь могут дополнять методы, классы и свойства в Javascript абстрактными функциями с элегантной и бесшовной точки зрения.

Такое распространение декораторов оказало огромное влияние на опыт разработчиков; однако его ускорение за пределами стандартизированной спецификации со временем усложнило жизнь авторам таких декораторов. Растет проблема поддержки декораторов в существующем коде и планирования перехода к будущему стандарту.

Заглядывая вперед в долгожданное предложение TC39, мы видим зрелую спецификацию декораторов Stage 2, завершающую стандартизированный типичный набор инструментов для метапрограммирования. Хотя будущее уже близко, предстоит еще много работы.

При этом следующая презентация направлена ​​на то, чтобы осветить несколько методов метапрограммирования с декораторами и прокси, которые разработчики могут использовать сегодня независимо от быстро меняющейся среды. Кроме того, я расскажу, как мы можем безопасно раздвинуть границы нашего опыта разработки с помощью этих двух взаимодополняющих возможностей Javascript.

О спикере:

Цаво ван ден Берг, Нотт — местный предприниматель, создатель и компьютерный ученый в Цинциннати, штат Огайо. Цаво является соучредителем Pieces.app, будущего продукта, ориентированного на облачное хранилище атомарного уровня и совместную работу для профессиональных создателей. Цаво также является изобретателем Runtime.dev, изоморфной среды Javascript, предназначенной для решения проблем с большими объемами данных и скоростью, которые обычно встречаются в сложных веб-приложениях. У него обширный опыт работы с низкоуровневыми технологиями Javascript/клиентской стороны, включая веб-компоненты, веб-сервисные рабочие, виртуализацию DOM и управление задачами/исполнениями. Сегодня Цаво проводит большую часть своей повседневной работы, поддерживая свою команду в разработке ориентированных на продукт технологий, таких как Typescript, Angular, Web Assembly, Google Cloud/Firebase и инструменты разработки/системы объединения.