ECMA является официальным органом по стандартизации, который устанавливает стандарт для ECMAScript, который реализует JavaScript. Как и ActionScript. ECMAScript охватывает все основы программирования и базовую структуру языка.
Спецификация ECMA НЕ охватывает API-интерфейсы, ориентированные на браузер, такие как DOM. Это охватывается стандартом W3C DOM, который предназначен для определения языка, независимого от API. IE поддерживал спецификацию ECMA довольно религиозно начиная с IE 6, почти полностью игнорируя материал DOM в пользу собственной проприетарной BS вплоть до IE9.
Сама спецификация - это просто набор правил для работы языка. Пока вы пишете то же самое, а интерпретатор данного браузера дает ожидаемый результат, определенный спецификацией, он совместим с ECMA для любой рассматриваемой версии.
Интерпретатор анализирует и маркирует фактический текст, который вы написали, и превращает его в инструкции для чтения в среде выполнения браузера. В современных браузерах используются настоящие JIT-компиляторы, которые фактически преобразуют ваш JS в байт-код по мере его выполнения, так что сама среда выполнения браузера не должна переводиться.
Большинство браузеров кэшируют фактический двоичный файл js-файла. Таким образом, страницы в одном домене, которые ссылаются на одно и то же расположение сервера, не должны загружать один и тот же файл дважды, когда новая страница ссылается на него. Это то же самое, что и с любым ресурсом (изображения, файлы CSS и т. Д.). Я не верю, что они кэшируют результаты какой-либо интерпретации, которая идет вниз, но я думаю, что в случае JIT - результаты определенного предварительного исполнения подпрограммы (в основном подготовительные работы JIT) могут быть сохранены в памяти (чистые предположения с моей стороны - но, похоже, это не так).
Мы немного поторопились с языком в отношении использования таких слов, как плагины, фреймворки, инструменты, библиотеки и т. Д. Обычно это всего лишь JavaScript, как правило. Вы «подключаете их», связывая файл или вырезая и вставляя в существующий, как и любой другой JS. Однако под плагином люди обычно подразумевают, что он работает с некоторыми существующими предварительно созданными JS, такими как JQuery, который, как правило, расширяется путем добавления методов к объекту, который он возвращает (JQuery - просто большая необычная функция, которая создает и возвращает то же самое объект каждый раз, когда вы запускаете его в принципе). Библиотека, как правило, представляет собой большую коллекцию предопределенных методов для выполнения самых разных задач. Как склад, о вещи, которые вы можете использовать. Я считаю, что JQuery - это больше инструмент, чем библиотека, потому что он больше сосредоточен на уменьшении затрат и нормализации различий в браузерах. JQ сам по себе не делает ничего, что далеко отошло от основных методов JS. Это делает их намного проще / быстрее. Он имеет библиотеку пользовательского интерфейса, которая представляет собой большой набор плагинов, которые фактически выплевывают готовые элементы пользовательского интерфейса, HTML, CSS и все. Фреймворк, как правило, представляет собой скорее систему для построения крупномасштабных структур типа приложения на внешнем интерфейсе. Это не просто набор методов для вызова, это способ построения вещей, нацеленных на то, чтобы упростить создание целых структур приложений, пропуская при этом большую часть более детальной работы, которую обычно необходимо выполнять для обеспечения гибкости (в результате рамки обычно не особенно гибки, но это не значит, что они не могут быть такими.)