Из всех основных веб-технологий нет никаких других технологий, как виноваты для Cross Browser Совместимость как JavaScript. Но даже после успешных условий в чистом HTML и CSS Вы, это правда, что вы не можете легко создавать WebApps или веб-сайты без него.
В нашем предыдущем посту на прошлой неделе мы подробно рассмотрены на Проблемы совместимости браузера, столкнувшись в HTML и CSS Отказ До сих пор мы смотрели основы совместимости браузера и как вы можете гарантировать, что ваш веб-сайт/веб-приложение является Crossiver Browser совместимым.
Расширение одного и того же поста на прошлой неделе, в этой статье мы рассмотрим общие процедуры для совместимости в браузере Web Developer в использовании JavaScript. Мы также будем изучить методологии для решения вопросов.
Но прежде чем мы начнем с фактической темой обсуждения, важно, чтобы мы смотрим в основы и эволюцию JavaScript.
До сих пор мы рассмотрели основы совместимости Crosser Browser и как вы можете убедиться, что ваш веб-сайт/веб-приложение совместимо в браузере. Мы также изучили некоторые механизмы фиксации CSS и проблем с перекрестной совместимостью HTML.
В этой статье мы рассматриваем вопросы совместимости кросс-браузера с JavaScript и методологиями для решения вопросов. Прежде чем мы начнем с фактической темой обсуждения, важно, чтобы мы смотрим в основы и эволюцию JavaScript.
Глубокое дайвинг в JavaScript
После последнего десятилетия были быстрые изменения в веб-разработке веб-разработки и наряду с появлением различных видов устройств – рабочего стола, мобильных, планшетов и т. Д. Также было увеличение количества веб-браузеров, используемых для серфинга в Интернете. Это создает различные задачи для дизайнеров и разработчиков, поскольку разные браузеры могут интерпретировать CSS и HTML-код другим способом. Причина в том, что каждый браузер имеет уникальный двигатель рендеринга, отвечающий за рендеринг веб-элементов таким образом, что отличается от других. CSS HTML и JavaScript – 3 слоя прогрессивного улучшения. Прогрессивное улучшение Это методика создания Brose Browser, совместимого веб-дизайна, в котором максимальный приоритет при разработке является сохранение основного содержимого веб-страницы, в то время как другие сложные надстройки и функции остаются вторичными. Когда JavaScript был введен в 1990-х годах, в 1990-х годах было серьезные проблемы совместимости кросс-браузера, поскольку каждый разрабатывающий компании в браузере имел свой способ реализации сценариев, и это в первую очередь сделано, чтобы получить доминирование на рынке. Хотя такие проблемы не происходят сейчас, обрабатывающие поперечные браузерные проблемы совместимости с JavaScript могут вызвать кошмар для разработчиков.
Проблемы с кодом JavaScript Meaure возникают, когда разработчики поставляются с функциями на веб-страницах, которые не поддерживают старые браузеры, использование неверных дочинков или неполной/неправильной реализации браузера inniffing код. Если не будет реализован стандартный механизм обработки JavaScript (или других языков сценариев), поперечные браузерные совместимые проблемы с JavaScript будут продолжать сохраняться. Давайте посмотрим на эти проблемы совместимости кросс-браузера с JavaScript и узнайте немного о механизмах для исправления их.
Общие проблемы с JavaScript
Прежде чем мы рассмотрим проблемы совместимости кросс-браузера с JavaScript, важно рассмотреть некоторые общие проблемы с JavaScript. Предполагается, что вы уже знаете о JavaScript и имеете предварительный опыт реализации с JavaScript.
- Утечки памяти является одной из распространенных проблем, с которыми сталкиваются разработчики. Утечка памяти просто означает, что память, которая ранее использовалась приложением, больше не используется. Однако из-за какой-то причины (например, неверное обращение с глобальными переменными, из-за DOM-ссылок и т. Д.); Выделенная память не возвращается обратно в «бесплатный» пул памяти. Некоторые из распространенных причин утечек памяти неверные обращения с глобальными переменными и из-за ссылок DOM. « Инструменты профилирования для Chrome ‘могут быть использованы для профилирования памяти, а также определения утечек памяти. Ниже приведен образцовый снимок профилирования памяти Chrome в действии.
- JavaScript выполняет код в порядке, в котором оно появляется в документе. Следовательно, становится важно для справочник только когда он загружен . Если вы ссылаетесь на код, прежде чем он загружен, код приведет к ошибке.
- В отличие от других языков, ошибка не бросается в том случае, если вы проходите «Неверное количество параметров» на функцию в JavaScript. Если эти параметры необязательны, ваш код будет выполнен без проблем. Это может привести к проблемам, когда эти параметры используются в функции и не используют их, могут изменить функциональность. Рекомендуется иметь однообразные соглашения об именах, чтобы идентифицировать такие проблемы, становится легким.
- Операторы равенства являются основными в JavaScript, но они должны использоваться с точностью. Существует разница между «оператором задания/равна» (==) и «STRITTHERAL OPERALIC» (===). Они в основном используются в условных утверждениях и счастно с использованием (==) вместо (===) могут вызывать проблемы с функциональными возможностями. Тщательный код-прохождение необходимо выполнить, чтобы посмотреть в такие глупые, но дорогие ошибки.
- Переменные используются в соответствии с их объемом (местным и глобальным). Убедитесь, что вы используете согласованные конвенции именования для разных типов переменных, так что легче поддерживать код. Убедитесь, что ваш исходный код не имеет Синтаксисные проблемы Отказ
- Добавление элемента DOM В JavaScript считается дорогостоящей операцией. Основная причина, по которой он используется, это потому, что JavaScript позволяет легко реализовать DOM. В некоторых случаях вам нужно будет добавить DOM-элементы последовательно, но это не очень хорошая практика. В таком сценарии вы можете вместо этого использовать фрагменты документов, поскольку он имеет превосходную эффективность и производительность.
- Начальный индекс в Массивы JavaScript 0 и не 1. Если вы намереваетесь создать массив из 10 элементов, вы должны объявить массив с индексом как 9 (элементы массива 0..9), а не 10 (элементы массива 0..10). Приведенные ссылки на связанные элементы массива приведут к ошибкам.
- Реализация трудоемкой задачи в синхронной работе может замедлить производительность вашей веб-страницы/веб-приложения. Убедитесь, что вы перемещаете эту логику в асинхронную операцию, чтобы она не поддерживала процессор. Поскольку операция асинхронная по своей природе, вы должны быть осторожны, используя переменные, используемые в этой операции, поскольку они могут не отражать последнее значение (поскольку выполнение операции Async может все еще может быть выполнено). Разработчики рекомендуются использовать объект обещания, который возвращает статус (успех/отказ) завершения асинхронизации операции. Образец с обещанием показан ниже.
- Неправильное использование ‘ Функции внутри петель Таким образом, приводит к поломке функциональности.
Общие поперечные браузерные проблемы с JavaScript
До сих пор мы посмотрели некоторые из основных проблем с JavaScript; Давайте посмотрим на некоторые механизмы для решения этих проблем:
Использование библиотеки
Подобно библиотеке JQuery, о которой мы обсуждали ранее, есть много библиотек (родных и сторонних), которые могут не поддерживаться на многих версиях браузеров. Перед использованием библиотеки рекомендуется сделать тщательный анализ об библиотеке (с точки зрения поддержки браузера, поддержки функций и т. Д.). Вы также должны проверить «историю развития» библиотеки, так как этого не следует случиться, что в библиотеке очень мало обновлений, и как только вы используете библиотеку, нет никаких обновлений для него!
Использование пользовательских агентов и браузера нюхает
У каждого браузера есть строка пользователей-агента, которая идентифицирует браузер, который пользователь использовал для доступа к вашему веб-сервису/веб-приложению. Разработчики используют Rusive Rebiffing код, чтобы настроить UI/UX/функциональные возможности на основе браузера, используемого пользователем. Некоторые из общих строк пользовательского агента упоминаются ниже.
Разработчик может использовать Navigator.UserAgent.indexof («user-agent»), где пользовательский агент является строкой пользовательского агента (упомянутая в таблице выше). Ниже приведен снимок кода, в котором разработчик может придумать функциональные возможности на основе типа браузера.
Обнаружение функций для современных функций JavaScript
JavaScript не считается допустимым как HTML и CSS, когда речь идет о ошибках обработки и неузнаваемых функций. JavaScript определенно сигнализирует о ошибке, когда она поставляется с ошибочно используемым синтаксисом/отсутствующей сколью/точкой с запятой/другой другой проблемой.
Существует множество новых функций, которые реализуются под ECMASSCSCS 6 (ES6)/Ecmascript следующие стандарты, и многие старые браузеры не будут поддерживать эти функции. Например, «Объект обещания», который мы обсуждали ранее, не будут работать над старой версией браузеров. « Напечатанные массивы ‘это еще один пример. « Функции стрелки »была очень полезной функцией, которая была введена в ES6, и она обеспечивает краткую способ записи функций в JavaScript. Он не связан с собственным этим объектом I.E. Контекст внутри функции стрелки статически определен. Современные разработчики JavaScript используют эту функцию сильно, но он также не поддерживается на старых браузерах/старых версиях браузеров, таких как IE, Firefox, Chrome и т. Д. Браузер Safari не поддерживает «функции стрелки».
Итак, как вы избегаете функции JavaScript, а также на более старых браузерах? Решение состоит в том, чтобы проверить, поддерживается ли используемая функция на старых браузерах. Вы можете проверить то же самое, используя онлайн-ресурс, такой как Caniuse; Просто ключ – в названии функции, и он укажет версию браузеров, где поддерживается функция. Например, ниже в этом случае для «функций стрелки». Записи в красном цвете подразумевают, что функция не поддерживается.
Основываясь на целевой аудитории, вы должны предоставить поддержку всем последним браузерам и некоторые более старые версии браузеров (в зависимости от вашего первоначального изучения рынка). Вы можете проверить эти веб-аналитики, который поможет вам лучше понять ваших клиентов. Вы также можете выбрать «Условное выполнение», чтобы всегда всегда есть «Завернутый механизм», если пользователь использует старый браузер. Есть много старых версий браузеров, которые не поддерживают WEBRTC (видеоконференция), карты API и т. Д. В нижеприведении мы используем API геолокации; Свойство геолокации объекта навигатора используется для этой цели. Если браузер не поддерживает MAPS API, пользователю дан возможность использовать статические карты (как опция Foxback).
Есть много библиотек JavaScript, что разработчик должен просто импортировать, чтобы использовать его функциональные возможности. Хорошей частью использования является то, что разработчик больше не должен кодировать все с нуля, поскольку библиотека уже поддерживает эти функции.
JavaScript транспилинг
Если вы хотите обеспечить поддержку старых браузеров, но не хочу использовать браузер нюхать, обнаружение функций и т. Д.; Доступен удобный вариант, называется «транспилинг». Простые термины транспионки помогают преобразовать код JavaScript, который может использовать последние функции ES6/ECMAScript в код JavaScript, который может работать на более старых браузерах.
Вы можете использовать популярный JavaScript Трансуальный инструмент, как Бабел Где вы просто вводите последний код JavaScript на «влево», и он выводит трантпитанный код в «правильном».
Полифилл
Подобно сторонним библиотекам, которые усиливают функциональные возможности и снижают время разработки, Polyfills также состоят из сторонних файлов JavaScript, которые вы можете использовать в вашем проекте. Однако то, что делает Polyfills, отличными от библиотек, заключается в том, что полифилки способны обеспечить функциональные возможности, которые вообще не существуют. Например, вы можете использовать полифилл для поддержки WEBRTC/Обещание/Другие функции на основе ES6, просто используя эквивалентный полифимбил для этой функции.
Вы можете посмотреть на этот список, который имеет подробную информацию о полифилл эквивалента для функций JavaScript. Давайте посмотрим на пример. Ниже показано, что фрагмент кода, где мы использовали полифилл для поддержки функции StartShith, которая была введена в ES6.
Решение общих проблем с JavaScript
JavaScript отладчик
Точки останова обычно используются для назначения отладки, и когда «точка останова» поражен, выполнение остановлено, а разработчик может взглянуть на различные детали, такие как стек вызова, переменные часы, информация о памяти и т. Д. JavaScript имеет ключевое слово «Отладчик» и когда встречается ключевое слово; Выполнение кода JavaScript останавливается. Это похоже на вставку точки останова в коде.
var x = 6 * 5; debugger; /* Logic here */
Альтернативно, вы также можете использовать традиционный метод отладки с использованием «JavaScript Console» в Chrome для отладки кода. Консоль JavaScript может быть загружена с помощью параметра Tools-> JavaScript Console.
Инструменты разработчика браузера
Инструменты разработчика браузера могут использоваться для удаления предупреждений и ошибок в коде JavaScript. Это также полезно для отладки кода, поскольку разработчики могут вставлять точки останова в определенные места в коде.
Если вы используете Chrome или Firefox, просто щелкните правой кнопкой мыши в окне после «Загрузки кода» и нажмите « ». Проверять элемент ‘. Инструмент разработчика браузера также имеет « Вкладка отладчика «Если разработчик может вставить точки останова, проверять CALLSTACK, добавить переменные для просмотра окна и т. Д.
Ниже приведен снимок разработчика инструмента браузера Firefox.
Разработчики также могут использовать консоль API для печати журналов на этапе разработки. Рекомендуется, чтобы различные виды консольных журналов используются для разных целей. Например, Console.log () может использоваться для отладки, Console.assert () в случае, если вы хотите выдать Assert и Console.Error () Может использоваться в сценариях ошибок.
Плагины редактора кода
Есть много редакторов, которые имеют встроенные, а также загружаемые плагины Linter, которые могут использоваться для исправления предупреждений и ошибок в вашем коде JavaScript. Atom – популярный IDE с открытым исходным кодом, который имеет плагины для подцинкового кода. Разработчики могут устанавливать плагины lint, jslint и linter-jshint к исходному коду lint. Они выдают предупреждения и ошибки, которые присутствуют в коде в отдельной панели в нижней части окна разработки. Ниже приведен снимок IDE Atom, где он отображает предупреждения в исходном коде. Atom Ide можно скачать из здесь Отказ
Летание
ЛИНТЕРЫ Используются для обеспечения лучшего качества кода, правильно выровнены, и в коде нет ошибок. Также как Linters, используемые для HTML & CSS-кода, Linters для JavaScript также важны для обслуживания качества кода, независимо от размера вашего кода JavaScript. ЛИНТЕРЫ могут быть настроены на разные уровни отчетности об ошибке/предупреждения. Некоторые из широко используемых связей для JavaScript являются Jshint и Eslint Отказ
Решение общих проблем JavaScript
Помимо проблем JavaScript, которые мы обсудили до сих пор, есть много общих вопросов, которые должны решать разработчики. Некоторые из общих общих проблем являются:
- Неправильный корпус/правописание, используемые для переменных, имен функций, и Т. Д. Многие опытные разработчики, случайно использующие встроенные функции с неправильным корпусом/правописанием. Например, вы можете использовать GetElementByClassname () вместо GetElementsByClassname ().
- При выполнении кодового обзора, рецензент должен сделать, что нет кода после оператора возврата, поскольку этот код не является избыточным (или не доступным).
- Объектная обозначение отличается от обычного назначения, и вам необходимо проверить, отделены ли названия элементов объекта запятыми (,) и именами элементов отделены от их значений Colon (:).
- Хотя это очень базовая практика, проверьте, используется ли запястья (;) в нужном месте.
Лучшие практики для JavaScript
Некоторые из лучших практик для JavaScript ниже:
- Всегда имейте декларации на вершине.
- Следуйте надменными конвенциями именования для переменных, функций и т. Д.
- Используйте «Комментарии» последовательно по всему коду.
- Объявите локальные переменные, используя ключевое слово var.
- Всегда инициализируйте переменные.
- Не объявляйте строку, номер или логические объекты.
- Всегда имейте «случай по умолчанию» в коммутаторе .. Чексы.
- Есть близкий взгляд на использование. Убедитесь, что они используются в нужном месте.
- Поместите скрипты в нижней части страницы.
JavaScript Framework для преодоления поперечных проблем совместимости браузера
Известен тем, что для вашего веб-приложения или веб-сайта можно было бы известен проблемы совместимости браузера, независимо от размера или сложности приложения/веб-сайта. Как мы видели из упомянутых выше точек, проблема совместимости кросс-браузера увеличивает при использовании JavaScript. Но это не значит, что вы можете избежать использования JavaScript!
Существует несколько JS Frameworks, которые облегчают разработку Brosser Browser, совместимых на веб-сайтах. Некоторые из самых известных:
- Реагировать js.
- Угловые js.
- Vue js.
- Ионическое
- Эмбер Дж
Эти рамки помогают решить проблему совместимости кросс-браузера для JavaScript. Они также помогают разработчикам создать одностраничное приложение, которое совместимо в разных браузерах (Google Chrome, Mozilla Firefox, Safari и т. Д.).
Оригинальный источник: lambdatest.com
Похожие сообщения:
Написать браузер, совместимый код JavaScript с использованием Babeljs.
Прогрессивное улучшение и совместная совместимость в браузере.
Инструменты Web Analytics, чтобы помочь вам понять своих пользователей.
Оригинал: “https://dev.to/lambdatesting/fixing-javascript-cross-browser-compatibility-issues-51pl”