Новые возможности javascript являются частью спецификации языка?
В общем это вопрос с целью устранения пробелов в моей голове. Никогда не любил фронтенд, но приходится иногда что-то писать и порой работа делается, а почему это работает непонятно.
К примеру, когда-то давно начинал изучать HTML. И, на сколько я тогда понимал, было все строго - у каждого тега был набор атрибутов, которые как-то обрабатывались. И вдруг потом стало возможным писать любые атрибуты в тегах и использовать их в js.
Это было обновление стандарта html-js или все это и раньше было доступно? Т.е. каким образом вдруг javascript стал уметь работать с тем, чего раньше не было? Это были новые возможности движка или это всегда было, но красиво реализовали только в jQuery?
То же самое сейчас с react. Что за jsx-синтаксис? Кто его парсит? Этого же нет в стандарте javascript? Могу только предположить, что jsx-скрипт распарсивается какой-то библиотекой написаной на стандартном javascript и транслирует в него же... Т.е. это уже несколько уровней интерпретации? Что происходит?
что jsx-скрипт распарсивается какой-то библиотекой написаной на стандартном javascript и транслирует в него же...
Абсолютно верно. JSX превращается в обычные js-объекты.
На счет любых атрибутов - сказать точно не могу (angular / vue тоже же используют кастомные атрибуты, но я не знаком с тем, как обрабатываются шаблоны подобные), знаю лишь, что data-* валидны в HTML 5, а если вы про "атрибуты в jsx", то там да... любые, но это уже и не HTML.
что jsx-скрипт распарсивается какой-то библиотекой написаной на стандартном javascript и транслирует в него же...
А что вас так удивляет... Тут их целый зоопарк был еще до JSX: TypeScript, CoffeeScript, Angular, WebAssembly и все они из разных буферов данных формируют объекты Plain Old JavaScript Objects. Каждая либа считается по всем параметрам превосходит до безобразия жуткий JavaScript. Только вот друг с другом они не совместимы. Совместимы они только с JavaScript.
Чуть не забыл clojure
Артём Петренков: почему же? бинарный поток данных чем-то отличается от текстового в данном контексте? в конечном итоге получаем те же объекты, которые можем использовать на JS.
Артём Петренков: Ну, даже не знаю, может утверждение слишком категорично. Не использовал ни TS ни Анжелу. Но использовал Clojure совместно с CoffeeScript. Хоть они не сильно мешают друг другу, но по организации кода это была просто головная боль. Каждый из этих инструментов представляет свою идеологию. когда приходится использовать их совместно, в голове вместо сценария алгоритма одни конфликты интересов... как то так...
Я о том, почему в интерпретируемом php так не делают, а в интерпретируемом js - это обычная практика?
В пхп делают новый фремворк, и ты получаешь кучу функций, но с синтаксисом на php, а не на новом выдуманном языке.
Артём Петренков: вы правы. А тренды летят на все новые и новые инструменты. Не успеваешь охватить вниманием их всех. Мода на анжелу, вуй пошла после того как в моем мировозрении сложилась ситуация, когда я решил тратить силы на избавление от всех зависимостей, а не на стыковании их друг к другу.