2012-03-21 5 views
1

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

  • ECMA является органом официальных стандартов, что «поддерживает» JavaScript
  • Любой браузер, который хочет поддерживать JavaScript (который все/большинство из них), должна включать в себя какой-то интерпретатор (что это?) двигатель глубоко внутри кода браузера
  • Когда кто-то указывает браузер с поддержкой JavaScript на URI, содержащий код JavaScript, этот браузер загружает файлы JS, а также HTML, CSS и т. Д., Запускает JS через этот интерпретатор, и полученный результат влияет на то, как страница в конечном итоге отображается

В дополнение к этим элементам я также слышал такие термины, как «плагины» для JavaScript или модули, которые могут иметь браузеры. Что это за плагины/модули и зачем им нужен браузер, если они совместимы с ECMA и уже содержат JS-интерпретатор?

Заранее благодарен!

+0

Не вопрос, связанный с кодом, должен быть перемещен? –

+0

http://www.mozilla.org/rhino/ – RTulley

+0

@RTulley 'rhino' о' javascript', но не о браузерах. – kirilloid

ответ

2
  • ECMA является органом официальных стандартов, которые устанавливают стандарт ECMAScript, который реализует JavaScript. Так же ActionScript. ECMAScript охватывает все необходимые для программирования и базовую структуру языка.

  • Спецификация ECMA НЕ покрывает ориентированные на браузер API, такие как DOM. Это покрывается стандартом W3C DOM, который предназначен для определения языка, нейтрального API. IE поддерживал спецификацию ECMA довольно религиозно с IE 6, почти полностью игнорируя материал DOM в пользу собственной собственной BS вплоть до IE9.

  • Сама спецификация - это всего лишь куча правил, согласно которым язык должен работать. Пока вы пишете одни и те же вещи, и интерпретатор данного браузера дает ожидаемый результат, определенный спецификацией, он соответствует ECMA любой рассматриваемой версии.

  • Интерпретатор анализирует и маркирует фактический текст, который вы написали, и превращает его в инструкции, которые должны быть прочитаны средой выполнения браузера. Современные браузеры занимаются реализацией JIT-компиляторов, которые фактически конвертируют ваш JS в байт-код по мере его выполнения, так что сама среда выполнения браузеров не должна переводиться.

  • Большинство браузеров кэшируют фактический двоичный файл js. Таким образом, страницы в том же домене, которые ссылаются на одно и то же расположение сервера, не будут загружать один и тот же файл дважды, когда к нему будет привязана новая страница. Это то же самое, что и с любым ресурсом (изображениями, css-файлами и т. Д.). Я не думаю, что они кэшируют результаты любой интерпретации, которая идет вниз, но я думаю, что в случае JITs результаты определенного предварительного исполнения подпрограммы (в основном, JIT prework) могут храниться в памяти (чистая спекуляция с моей стороны - но это похоже на duh).

  • Мы были немного быстры и свободны с языком в отношении использования таких слов, как плагины, фреймворки, инструменты, библиотеки и т. Д. Это обычно просто JavaScript. Вы «подключаете их», связывая файл или разрезая и вставляя в существующий, как и любой другой JS. Однако по плагину люди обычно подразумевают, что он работает с некоторыми существующими предварительными JS, такими как JQuery, которые, как правило, расширяются путем добавления методов к возвращаемому объекту (JQuery - это просто большая причудливая функция, которая строит и возвращает то же самое объект каждый раз, когда вы запускаете его в основном). Библиотека, как правило, представляет собой большую коллекцию предопределенных методов для выполнения всех видов вещей. Как склад, который вы можете использовать. Я считаю JQuery больше инструментом, чем библиотекой, потому что основное внимание уделяется сокращению крутизны и нормализации различий браузера. JQ сам по себе не делает ничего, что далеко от основных JS-методов. Это просто упрощает/ускоряет их выполнение. Он имеет библиотеку пользовательского интерфейса, которая представляет собой в основном большой набор плагинов, которые на самом деле выплевывают элементы интерфейса UI, HTML, CSS и все. Рамка, как правило, представляет собой большую систему для построения крупномасштабных структур типа приложения на передней панели. Это не просто куча методов для вызова, это способ создания вещей, направленных на упрощение создания целых структур приложений, а также пропуская большую часть более детализированной работы, которую обычно нужно делать, чтобы сохранить гибкость (в результате , рамки обычно не являются особенно гибкими, но это не значит, что они не могут быть).

+0

Удивительный ответ - именно то, что я искал - спасибо @Erik! – IAmYourFaja

4
  • ECMA - это орган стандартов, который обеспечивает соблюдение «стандартов» JS. Они сохраняют язык согласованным и документированным (хотя, зная его историю, они не справились с этой работой как «орган по стандартизации»)

  • Механизм JavaScript - это часть программного обеспечения, встроенного в браузер, для анализа источника JavaScript код. Это превращает ваш JavaScript в действия на экране (и вне экрана). В качестве примера можно привести V8 (Chrome), TraceMonkey (Firefox), Chakra (IE), Carakan (Opera) и Nitro/SquirrelFish (сафари)

  • Прежде чем это произойдет, необходимо ввести код JavaScript в браузер (обычно с использованием <script> тегов)

  • JavaScript-плагины/наборы инструментов - это всего лишь код, разработанный программистами, чтобы легко делать вещи. они просто делают то, что обычно вы бы написали 1000 строк. этот код также «улучшает» программирование, предоставляя согласованность кросс-браузера. Примерами плагинов/наборов инструментов являются jQuery (и это UI plug jQueryUI), YUI, Dojo и т. Д.

  • Расширения браузера/плагины с другой стороны «расширяют» функциональность браузера. Примерами являются ADBlock (рекламные объявления с битыми блоками), FlashGet (загружает файлы флэш-памяти на странице). Эти ребята запрограммированы в браузере, а не на странице. Тем не менее, в последнее время, эти расширения работает на JavaScript по той причине, что это легко программировать

+0

Спасибо, Джозеф! Отличный ответ! В материалах плагинов - можете ли вы привести пример конкретного JS-плагина и объяснить, что он делает и почему это необходимо (а не просто писать JS-файл)? Благодаря! – IAmYourFaja

+0

Как в плагинах Firefox, так и в Chrome Все плагины написаны в Javascript (у плагинов Firefox также есть этот специальный HTML-материал, который называется XUL, но это не важно). Javascript в плагинах имеет доступ к MUCH больше, чем Javascript на странице. Например, нет Javascript, который вы можете написать для веб-страницы, которая заставит его автоматически добавлять себя в качестве закладки, потому что разработчики браузеров никогда не позволят этого (что, если плохой сайт добавил 100 закладок, когда вы его посещали?). Тем не менее, подключаемый модуль браузера может добавлять закладки на каждую страницу, которую вы посещаете, если захотите. – machineghost

+0

@machineghost, что вы имеете в виду расширения браузера, я прав? хорошо, я забыл об этом. Я, хотя OP подразумевал плагины, которые улучшают эффекты страницы, такие как плагины jQuery. Расширения браузера - это программное обеспечение, которое «подключено» или «расширяет» функциональность браузера.Большинство расширений сегодня запрограммированы с использованием самого JavaScript (поскольку JS - широко известная программа, которую легко понять, по сравнению с такими вещами, как C++ и др.) – Joseph

Смежные вопросы