7 рекомендаций по оформлению кода на JavaScript | by Nikita | WebbDEV
Автор материала говорит, что она прямо-таки одержима написанием чистого кода. Она считает, что код надо писать так, чтобы, во-первых, с ним, в будущем, удобно было бы работать другим программистам, включая его автора, а во-вторых — с учётом возможности расширения этого кода. То есть, нужно стремиться к тому, чтобы в приложение сравнительно просто было бы добавлять новые возможности, и чтобы его кодовую базу было бы удобно сопровождать. Если бы программы писали, учитывая лишь нужды компьютеров, то, вероятно, программисты могли бы выражать свои мысли лишь с помощью нулей и единиц, больше ни о чём не заботясь. В этой статье приводится ряд рекомендаций по написанию качественного кода, проиллюстрированных примерами на JavaScript.
Код гораздо легче читать, когда при его написании используют понятные, описательные имена функций и переменных. Вот не очень понятный код:
Его читабельность значительно улучшится, если использовать в нём понятные имена переменных и функций, отражающие их смысл.
Не стремитесь к минимализму при написании текстов программ. Используйте полные имена переменных, которые тот, кто будет работать с вашим кодом в будущем, легко сможет понять.
Функции легче поддерживать, они становятся гораздо более понятными, читабельными, если они направлены на решение лишь какой-то одной задачи. Если мы сталкиваемся с ошибкой, то, при использовании маленьких функций, найти источник этой ошибки становится гораздо легче. Кроме того, улучшаются возможности по повторному использованию кода. Например, вышеприведённой функции можно было бы дать имя sumAndAverageArray
, так как в ней мы вычисляем сумму значений элементов массива, используя метод reduce
, а затем находим среднее значение, деля полученную сумму на количество элементов массива. Вот эта функция.
Её можно разбить на две функции, тогда роль каждого фрагмента кода станет более понятной. Кроме того, если мы создаём большую программу, наличие функции sumArray
может оказаться очень кстати. Вот код двух новых функций. Одна вычисляет сумму элементов массива, вторая возвращает их среднее значение.
Признаком того, что функцию можно разбить на две, является возможность использования слова «and» в её имени.
Пишите хорошую документацию к своему коду — тогда тот, кто столкнётся с ним в будущем, поймёт, что и почему в этом коде делается. Вот пример неудачной функции. Здесь используются некие «магические числа», их смысл нигде не пояснён.
Сюда можно добавить комментарии для того, чтобы этот код стал бы более понятным для того, кто не знает формулы для вычисления площади круга.
Этот код — всего лишь пример. Вероятно, в подобной ситуации, вместо введения собственной константы, хранящей число Пи, лучше будет воспользоваться стандартным свойством Math.PI
.
Комментарии к коду должны отвечать на вопрос «почему».
Обратите внимание на то, что для целей документирования кода имеет смысл воспользоваться специальными инструментами и соответствующими им правилами комментирования кода. В применении к Python мне нравится Google Style Docstrings, в применении к JavaScript — JSDoc.
Сэнди Метц отлично программирует на Ruby, делает интересные доклады и пишет книги. Она сформулировала четыре правила написания чистого кода в объектно-ориентированных языках. Вот они.
- Классы не должны быть длиннее 100 строк кода.
- Методы и функции не должны быть длиннее 5 строк кода.
- Методам следует передавать не более 4 параметров.
- Контроллеры могут инициализировать лишь один объект.
Рекомендую посмотреть её выступление, касающееся этих правил.
Я следую этим правилам уже примерно два года, и они так основательно закрепились в моём сознании, что я выполняю их, буквально, «на автомате». Мне они нравятся, и я полагаю, что благодаря их использованию повышается удобство сопровождения кода.
Обратите внимание на то, что данные правила — это лишь рекомендации, но их использование позволит сделать ваш код значительно лучше.
Последовательное применение правил написания кода очень важно независимо от того, пишете ли вы код некоего проекта самостоятельно или работаете в команде. В частности, выражается это в том, что тот, кто читает код, являющийся результатом командной разработки, должен воспринимать его как единое целое. При таком подходе авторство отдельных строк кода можно установить, лишь обратившись к Git. Если вы, в JavaScript, используете точку с запятой — ставьте её везде, где это нужно. То же самое касается и кавычек — выберите двойные или одинарные кавычки и, если на то нет веских причин, всегда используйте то, что выбрали.
Рекомендую применять руководство по стилю кода и линтер, который позволяет приводить код к выбранному стандарту. Например, мне, для JavaScript, нравятся правила Standard JS, для Python — правила PEP8.
На самом деле, главное здесь — найти правила оформления кода и их придерживаться.
Одна из первых идей, которую стараются донести до того, кто хочет стать программистом, звучит так: «не повторяйся» (Don’t Repeat Yourself, DRY). Если вы замечаете в своих проектах повторяющиеся фрагменты — используйте такие программные конструкции, которые позволят сократить повторы одного и того же кода. Я часто советую моим ученикам поиграть в игру SET для того, чтобы улучшить их навыки по распознаванию шаблонов.
Однако если вы приметесь фанатично применять принцип DRY или решите абстрагировать неудачно выбранные шаблоны, читаемость кода может серьёзно ухудшиться, и, позже, вам может понадобиться чаще прибегать к созданию копий одних и тех же конструкций. У Сэнди Метц, кстати, есть отличная статья, посвящённая тому, что дублирование кода — это меньшее зло, нежели неудачная абстракция.
В результате, не стоит повторяться, но и не стоит, в борьбе за соблюдение принципа DRY, видоизменять код до такой степени, что он может стать трудным для понимания.
Группируйте связанные переменные и функции для того, чтобы сделать ваш код понятнее и улучшить его с точки зрения его повторного использования. Вот пример не самого удачно организованного кода, в котором сведения о человеке оформлены в виде отдельных переменных.
Если в подобной программе нужно обрабатывать данные многих людей, тогда в ней лучше будет использовать нечто вроде следующей конструкции.
А если в программе надо работать лишь с данными об одном человеке, то их можно оформить так, как показано ниже.
Похожим образом следует подходить к разбиению длинных программ на модули, на отдельные файлы. Это облегчит использование кода, выделенного в отдельные файлы, в разных проектах. В больших файлах с программным кодом часто тяжело ориентироваться, а небольшие понятные модули легко использовать и в том проекте, для которого они созданы, и, при необходимости, в других проектах. Поэтому стремитесь к написанию понятного модульного кода, объединяя логически связанные элементы.
В этом материале мы поделились с вами некоторыми рекомендациями по написанию чистого и понятного кода. Однако, это — лишь рекомендации. Это — советы, способствующие написанию качественных текстов программ. Если систематически применять правила, подобные изложенным здесь, то, в сравнении с кодом, при написании которого нечто подобное не применяется, код, написанный с использованием правил, будет получаться более понятным, его легче будет расширять, сопровождать и использовать повторно.
Получение и анализ кода JavaScript, подключенного на странице сайта
24.08.18 JavaScript 2643Иногда при заходе на сайт может возникнуть потребность посмотреть какой JavaScript-код подключен на странице. Это может понадобится в различных ситуациях, например, необходимо разобраться как работает тот или иной функционал на рассматриваемом сайте.
JavaScript-код может быть внедрен прямо в исходный код страницы сайта, тогда проблем с получением такого кода не возникнет. Но зачастую в добавок к такому коду подключаются и сторонние файлы с кодом, тогда отыскать участок кода, отвечающего за конкретный функционал сложнее. В таком случае необходимо проанализировать, какие файлы подключены на страницу.
Процедура получения кода JavaScript обычно сводится к следующему:
- открыть исходный код страницы сайта и обратить внимание на подключение скриптов. Обычно скрипты подключаются либо в верхней части страницы, либо внизу – делается это при помощи тега script;
- скопировать адрес, указанный в атрибуте src тега script;
- адреса обычно указываются относительные, поэтому далее необходимо подставить в начало к полученному адресу скрипта домен рассматриваемого сайта;
- после этого достаточно подготовленный адрес вставить в строку адреса браузера в новой вкладке, в результате на странице будет выведен весь код из файла;
- скопировать код и вставить в редактор с подсветкой синтаксиса.
Данную процедуру можно повторить для каждого подключенного файла, использовав поиск по исходному коду, достаточно указать ключевое слово script.
Когда исходный код получен, можно сделать анализ кода JavaScript:
- необходимо навести курсор на исследуемый элемент и открыть консоль разработчика при помощи контекстного меню над этим элементом. В консоли следует обратить внимание, какие классы или идентификаторы прописаны у элемента. Получив ключевые слова, можно переходить к следующему пункту;
- воспользоваться поиском в редакторе с полученным исходным кодом для нахождения нужного участка кода по извлеченным ключевым словам;
- когда совпадения найдены, можно приступить к изучению участка кода.
При помощи указанной методики, можно получить JavaScript-код практически любой страницы сайта, после чего выполнить комплексный анализ JavaScript-кода. В некоторых случаях анализ кода может быть усложнен, так как может быть применена защита JavaScript-кода, но зачастую такой код никак не защищен.
Работа с JavaScript кодом в Google Tag Manager
Google Tag Manager
Материал обновлен:12:02:2018
В Google Tag Manager существует несколько возможных вариантов использования собственного кода JavaScript. Поводом для подготовки материала стало очередное обновление Google Tag Manager, но та возможность, которая показалась мне очень удобной, по ходу написания материала оказалась в самом конце, надеюсь вы до нее доберетесь.
Начну с того, что, наверное, чаще всего код JavaScript используется в одном из типов тегов, а именно Пользовательский HTML. В этом теге размещается код сервисов для которых в Google Tag Manager нет шаблонов, например, на момент написания статьи Яндекс Метрики, либо если есть необходимость размещения скриптов, которые могут быть подключены как самостоятельные файлы:
Пользовательский HTML тег
Еще одной возможностью использования собственного JavaScript кода являются пользовательские переменные типа Собственный код JavaScript:
Переменная Собственный код JavaScript
Обязательным условием использования данной переменной является то, что она должна возвращать результат, т.е. завершается переменная конструкцией return():
function(){ // ВАШ КОД return( ЗНАЧЕНИЕ ); } |
Google Tag Manager “умеет” проверять ваш код JavaScript на наличие ошибок. Не все ошибки успешно диагностируются, но явные – находит. Например, я допустил ошибку и не поставил закрывающую скобку и получил сообщение:
Ошибка JavaScript
Удобная возможность Google Tag Manager. Помимо всего сказанного в тех местах, где мы можем использовать JavaScript код используется визуальный редактор, который подсвечивает синтаксис, что облегчает работу и делает ее более приятной. Благодаря этому функционалу можно проверять корректность разметки (использования скобок), парные подсвечиваются:
Подсветка кода в Google Tag Manager
Ну и та возможность, о которой я хотел рассказать больше всего – это появившаяся возможность автодополнения в редакторе кода Google Tag Manager. Теперь когда вы вводите символы {{ выпадает список из переменных, которые вы можете использовать в коде:
Автодополнение кода в Google Tag Manager
В коде JavaScript можно обращаться по именам переменных Google Tag Manager при обрамлении их двойными фигурными скобками {{ИМЯ_ПЕРЕМЕННОЙ}}.
50 советов, которые помогут улучшить код JavaScript
JavaScript — это мощный и гибкий язык программирования. Он позволяет много экспериментировать, однако это может привести к ошибкам в коде. Чтобы этого избежать, обратите внимание на эти 50 моментов.
Всегда используйте ”use strict”
Как правило, если вы используете какую-либо библиотеку, фреймворк или компилятор для JavaScript, то “use strict” по умолчанию включен. Но если это не так, стоит добавить это свойство в программу и функции. Оно гарантирует, что вы получите уведомления об ошибках, которые иначе происходили бы незаметно.
Задействуйте функциональные выражения вместо объявления функций
Если вам не нужно использовать поведение и свойства функций, то лучше применять функциональные выражения (function expressions). Объявления функций (function declaration) автоматически поднимаются в начало кода. Иногда это может быть полезно, но лучше избегать такой практики: она привносит странное поведение в код, которое не всегда очевидно. Чтобы этого избежать, постарайтесь выяснить, где расположены используемые функции, и убедитесь, что они объявлены до того, как были вызваны.
Не используйте “var”
Объявления с помощью “var” также поднимаются вверх. Из-за этого они становятся доступны до того, как произошло объявление. Это довольно странное и неочевидное поведение.
По возможности используйте “const” и принципы неизменяемости
Используйте неизменяемые объекты там, где это возможно. Постоянное изменение и передача данных могут затруднить отслеживание ошибок и даже сами изменения. Работайте с копиями данных и избегайте “побочных эффектов функций”.
Используйте чистые функции
К слову о побочных эффектах: следует убедиться, что функции не изменяют данные, используемые при их вызове, или данные в области, в которой они созданы.
Отдавайте приоритет классам, а не функциям constructor
Да, функция constructor
предлагает много возможностей. Но если вы обращаетесь к ее свойству
, то лучше использовать классы. Они чище и понятнее, а также поддерживаются практически везде.
Применяйте “деструктуризацию”
Деструктуризация — это удобный синтаксис присваивания переменных, который делает содержимое массивов и объектов более понятным. Кроме того, он дает возможность переименовывать элементы, чтобы придать больше смысла коду.
Работайте только с задействованными данными
Деструктуризация — это хороший способ обозначить данные, необходимые для работы программы. Также полезно выработать привычку вызывать методы и функции только с необходимыми им элементами. Это относится и к данным, поступающим из API. Извлекайте и удаляйте только те данные, которые нужны в программе, прежде чем сохранять их или что-либо с ними делать.
Всегда используйте “===”
Тройное равенство проверяет значение и тип. Всегда сравнивайте переменные таким образом, чтобы избежать нежелательного поведения.
Избегайте глобальных переменных
По возможности не создавайте ничего в глобальных объектах, если только вы не пишете библиотеку или фреймворк. Имена глобальных свойств могут конфликтовать со сторонними файлами или с кодом, который написали другие члены команды. И все это очень тяжело исправлять.
Оборачивайте объявления без типизации в блоки
Чтобы избежать конфликта имен переменных и не потерять доступ к временным объявлениям, стоит обернуть их логику в отдельную область видимости.
Структурируйте порядок объявления данных
Придерживайтесь одного способа объявления данных. Размещайте все объявления вверху, начиная с констант и заканчивая переменными. Константы следует выделять заглавными буквами, чтобы другие разработчики не попытались их изменить.
Не инициализируйте переменные значением “
undefined"
Значение undefined
предполагает отсутствие значения, что является довольно странной концепцией. JavaScript устанавливает undefined
по умолчанию. Как же определить, кем оно присвоено: вами или же JavaScript? Это усложняет отладку, поэтому лучше придерживаться значения null
.
Всегда передавайте переменным какое-либо значение
По той же причине не стоит передавать переменным значение
, поскольку оно устанавливается по умолчанию. Лучше задать новой переменной какое-нибудь значение.
Пользуйтесь линтингом и придерживайтесь определенного стиля
Линтинг — это лучший способ привести код к общему виду и убедиться, что другие члены команды не написали в нем нечто непонятное.
Используйте TypeScript
TypeScript помогает писать более эффективный код. Если вы ни разу не работали с типизированными системами, вам потребуется время, чтобы к нему привыкнуть. Но поверьте, оно того стоит.
Функции и методы должны отвечать только за одно действие
В процессе написания функции можно легко увлечься и добавить в нее слишком много лишнего. Чтобы понять, не слишком ли она перегружена, взгляните на ее имя. Оно должно указывать на то, что делает функция, а все остальное следует отбросить.
Давайте переменным правильные имена
Всегда продумывайте имя той или иной функции. Если вы не можете выбрать название, значит она перегружена, или же вы не понимаете, что она делает. Старайтесь давать функциям осмысленные имена, состоящие из минимум трех букв.
Избегайте ненужных объявлений
Некоторых объявлений можно избежать совсем. Используйте их, только когда это точно необходимо. Слишком большое количество объявлений может свидетельствовать об отсутствии структуры кода.
По возможности используйте значения по умолчанию
Значения по умолчанию помогают избегать ошибок, которые возникают при отсутствии значений.
Всегда прописывайте условие “default” в конструкциях switch
Не оставляйте конструкции switch
без значения default
. Если что-то пойдет не так, то вам будет проще обнаружить ошибку.
Никогда не используйте “eval”
Никогда! В этом нет никакой необходимости.
Избегайте ключевого слова “new”
Используйте его, только если создаете экземпляры функций классов или конструктора. В иных случаях лучше обойтись без него. Оно замедляет компилятор.
Добавляйте осмысленные комментарии к неочевидным блокам кода
Пишите комментарии к необычным или требующим пояснений фрагментам кода. Их также стоит добавлять к интересным приемам или моментам, требующим исправления или доработки. Это пригодится другим членам команды. Комментарии также важны в сторонних модулях и модулях в базе данных — с их помощью можно объяснять архитектуру и причины написания того или иного блока кода.
Не усложняйте тернарные операции
Хуже всего, если в тернарный оператор будет вложен еще один тернарный оператор. Все, что сложнее тернарного оператора, должно быть упаковано в оператор if
или switch
для наглядности и простоты отладки.
Упрощайте программу операторами опциональной последовательности
Избавьтесь от вложенных проверок и используйте оператор ?
.
Используйте промисы вместо callback
Промисы просты в использовании. Все, что можно запустить функцией обратного вызова (callback), также можно выполнить с помощью промисов. Callback — это функция, которая вызывается как после синхронных, так и асинхронных действий. С промисами и async…await
можно выполнять код асинхронно. Это позволяет повысить скорость программы, особенно с учетом того, что JavaScript является однопоточным языком. Обойтись одними лишь промисами получится не всегда, но они по крайней мере облегчают читабельность кода.
Отдавайте предпочтение циклу for, а не .forEach
Не превращайте объекты в массивы лишь ради того, чтобы суметь пройтись по ним с помощью .forEach
. Этим вы лишь замедляете и без того не быстрый процесс. Цикл for
работает быстрее, а также позволяет использовать ключевые слова continue
и break
для управления ходом цикла.
Разберитесь с циклами “for…in” и “for…of”
Циклы for-in
и for-of
позволяют удобно настраивать циклы. for-of
может проходиться по значениям массивов, строк, map, сетов и т. д. Не стоит переделывать объекты только ради возможности использовать .forEach
. for-in
является самым медленным из всех видов циклов, потому что он перебирает ключи прототипов.
Не оптимизируйте цикл for
Цикл for
уже и так оптимизирован на уровне компилятора, поэтому в дополнительной оптимизации нет необходимости.
Всегда применяйте конструкцию “try…catch” для методов JSON
Не стоит полагаться на данные, переданные через .stringify
и .parse
. Хорошей практикой будет отлавливать эти данные с помощью try…catch
, чтобы они не сломали весь код.
Используйте форматируемые строки
Форматируемые строки позволяют передавать значение внутрь строки, а также не сбивают форматирование, что бывает очень удобно при оформлении строк.
Избегайте вложенностей и вложенных циклов
Создавая вложенности или вкладывая циклы друг в друга, вы тем самым увеличиваете сложность программы, что в конечном итоге замедляет код, если данных становится все больше. Иногда это необходимо, но стоит обдумывать использование каждого цикла, чтобы не создавать лишнюю нагрузку.
Избегайте нечитабельных приемов
В интернете есть множество приемов, которые нацелены на упрощение работы. Однако если посмотреть на их содержимое, то многие окажутся слишком странными, кривыми и неочевидными. Время от времени стоит сверяться с документацией инструмента, который вы используете, чтобы достичь лучшей производительности. К нестандартным приемам лучше прибегать в последнюю очередь.
Используйте оператор rest вместо arguments
Оператор rest
работает со стрелочными функциями, в которых объект arguments
недоступен. Старайтесь придерживаться одного способа получения аргументов из функций.
Применяйте “globalThis” для глобального доступа
Позвольте JavaScript обработать оставшиеся детали и убедитесь, что код будет работать независимо от того, находится ли он внутри веб-воркера или узла бэкенда.
Учите Vanilla JavaScript, но пишите код с использованием библиотек и фреймворков
Стоит уделить время изучению самого языка JavaScript, но писать код все же лучше с помощью мощных инструментов, таких как React или Angular, чтобы избежать распространенных ошибок. Убедитесь, что следуете руководствам, ведь эти инструменты уже оберегают разработчиков от совершения банальных ошибок и предлагают лучшие практики.
Всегда ставьте точку с запятой
На самом деле точку с запятой в JavaScript ставить совершенно не обязательно. Компилятор делает это сам, однако инструменты вроде Babel могут неправильно понять написанный код и вызвать ошибки. Именно поэтому лучше всегда ставить точку с запятой.
Ставьте читабельность превыше производительности
Существует несколько способов добиться большей производительности, однако они часто снижают читабельность кода. Поэтому, если вам не нужна максимальная производительность (а это бывает крайне редко), старайтесь писать код более понятно.
Будьте осторожны с ключевыми словами “Truthy” и “Falsy”
Не полагайтесь на значения Truthy
и Falsy
при написании кода, так как чаще всего они приводят к ошибкам в коде. Будьте конкретней, когда задаете значение условия, потому что значению Truthy
соответствуют и другие результаты.
Используйте тернарный оператор вместо || или &&
Операторы or
и and
оценивают значения true
и false
для переменных, что может привести к неожиданным результатам. Лучше не использовать их для проверки условий в программе, потому что их сложнее понимать и читать.
Следите за значениями undefined и null при использовании оператора ??
Оператор нулевого слияния ??
помогает вам убедиться в отсутствии значений null
и undefined
. Он идеально подходит для случаев, когда нужно проверить наличие каких-либо значений.
Будьте осторожны с автоматическим преобразованием типов
Это, вероятно, еще одна причина попробовать TypeScript. Дело в том, что JavaScript автоматически преобразовывает типы переменных прямо во время выполнения кода, что может привести к неожиданному поведению. Значение Truthy
становится true
, а Falsy
становится false
. Сложение числа и строки может и вправду сработать или привести к объединению строк. Числа также часто превращают значение Falsy
в 0, а Truthy
в 1.
Не доверяйте данным, которые вы не создавали
Когда вы сталкиваетесь с данными, поступающими от неизвестных пользователей или API, убедитесь, что у них настроен правильный тип и формат, с которым можно безопасно работать, прежде чем выполнять какие-либо операции.
Используйте регулярные выражения для извлечения и поиска данных в строках
Регулярные выражения — это очень интересный и функциональный инструмент. Однако не стоит с их помощью искать индексы или заменять данные. Регулярные выражения позволяют искать полезную информацию благодаря комплексным формулам, что помогает гибко и быстро настраивать и задавать необходимые параметры для поиска.
Применяйте анонимные функции и небольшие библиотеки
Анонимные функции полезны, когда нужно как можно скорее выполнить определенный фрагмент, чтобы иметь возможность настроить что-либо до того, как запустится основная часть кода. Их также можно использовать для запуска маленьких библиотек с простым API.
Создавайте функции с повторяющихся действия
Если вы неоднократно повторяете какое-либо действие, то превратите его в функцию, которую можно будет использовать в дальнейшем. Копирование одних и тех же блоков кода — плохая практика, а использование коротких функций упрощает тестирование и обеспечивает возможность повторного использования.
Не стремитесь использовать все функции JavaScript
Такие действия, как обновление свойств длины массивов, использование ключевых слов with
или void
, изменение поведения базовых типов данных вроде дат, массивов, объектов и прочего, не приведут ни к чему хорошему. Некоторые их них даже могут передавать строку в методы setTimeout
или setInterval
. То, что JS позволяет это делать, не означает, что это обязательно нужно использовать.
Пишите модульные тесты
Модульные тесты — лучший способ убедиться, что код содержит как можно меньше ошибок. Среда тестирования Jest отлично подойдет для начинающих, однако существуют и другие интересные инструменты для поиска ошибок.
Читайте также:
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Before Semicolon: 50 Javascript Best Practice Rules to Write Better Code
JavaScript коды символов (коды клавиш)
Очень часто клиентский JavaScript используется для выполнения простых задач, которые в противном случае потребовалось бы обрабатывать на серверной стороне. Многие из этих простых задач включают обработку текста или символов, введенных в элемент form на веб-странице, для чего бывает необходимо знать код JavaScript, связанный с этим символом.
Нажмите любую клавишу в поле ввода, расположенном ниже, чтобы увидеть, соответствующий этой клавише, код JavaScript. Или прокрутите вниз для просмотра полного списка.
Попробуйте!
|
|
|
Безопасность JavaScript или как написать безопасный код на JS
Разработка безопасных приложений на JavaScript — довольно сложное занятие. Но вполне выполнимое. В сегодняшней статье мы рассмотрим особенности JavaScript, из-за которых проблемы с безопасностью и поговорим про инструменты разработчика, которые помогут их избежать.
Почему сложно писать безопасный код на JS
Итак, вот 5 причин, почему сложно писать безопасный код на JS
Компилятор не поможет
JavaScript — интерпретируемый язык. А это значит, что компилятор не будет все время на что-нибудь жаловаться, отказываясь работать и подталкивая тебя поправить ошибки и оптимизировать код.
Динамическая суть JavaScript
JavaScript динамический, слаботипизированный и асинхронный. А это все признаки того, что попасть в беду легче легкого.
1. Языковые средства вроде eval и включения стороннего кода через script src позволяют исполнять строки прямо в рантайме. Как следствие — сложно дать «статические гарантии» того, что код будет вести себя определенным образом. Динамический анализ это тоже затрудняет (см. научную работу).
Использование eval2. Слабая типизация приводит к тому, что применять устоявшиеся методы статического анализа непросто — по крайней мере в сравнении со статически типизированными языками (например, Java).
3. Асинхронные колбэки, вызовы которых JavaScript допускает через механизмы вроде setTimeout и XMLHttpRequest (тот самый знаменитый AJAX), по статистике прячут в себе больше всего коварных ошибок.
Замысловатые возможности JS
Чего только не притащили в JavaScript с годами! В частности, в нем есть прототипы, функции первого класса и замыкания. Они делают язык еще динамичнее, а написание безопасного кода — сложнее.
1. Прототипы. Смысл их в том, что программы пишутся в духе объектно ориентированного подхода, но без использования классов. При таком подходе объекты наследуют необходимые им свойства напрямую от других объектов (прототипов). При этом в JS прототипы могут быть переопределены прямо в рантайме. И если это переопределение случилось, то эффект сразу же распространяется на все объекты, которые наследуют свойства переопределяемого прототипа.
Как обрабатываются прототипыСправедливости ради надо сказать, что в новых спецификациях ECMAScript классы тоже присутствуют.
2. Функции первого класса. У JS очень гибкая модель объектов и функций. Свойства объектов и их значения могут быть созданы, изменены или удалены прямо в рантайме, и ко всем есть доступ через функции первого класса.
3. Замыкания. Если объявить функцию внутри другой функции, то первая получает доступ к переменным и аргументам последней. Причем эти переменные продолжают существовать и остаются доступными внутренней функции — даже после того, как внешняя функция, в которой эти переменные определены, завершилась.
Из-за такой гибкости и динамичности JavaScript (см. пункты 1 и 3) определение набора всех доступных свойств объекта при статическом анализе — неразрешимая задача. Однако веб-разработчики повсеместно используют динамические особенности языка, а соответственно, пренебрегать ими при анализе кода нельзя. Иначе какая тут гарантия безопасности?
РЕКОМЕНДУЕМ:
12 советов разработчику Андроид приложений
Тесное взаимодействие между JavaScript и DOM
Это нужно, чтобы обеспечить «бесшовное» обновление веб-страницы, прямо в рантайме. DOM, как известно, представляет собой стандартную объектную модель, нейтральную по отношению к платформам и языкам, которая предназначена для отрисовки документов HTML и XML. У DOM есть собственный API для работы с отображаемым документом: для динамического доступа, перемещения и обновления отображаемого документа (его содержимого, структуры и стиля). Изменения в DOM могут вноситься динамически, через JavaScript. И эти изменения сразу же отображаются в браузере.
Благодаря DOM загруженные в браузер веб-страницы можно обновлять поэтапно по ходу подгрузки данных с сервера. Однако у такого удобства есть и оборотная сторона: фрагменты кода, которые отвечают за динамическое взаимодействие между JS и DOM, особенно подвержены ошибкам.
Наиболее распространенные ошибки в веб-приложенияхСложные событийные взаимодействия
JavaScript — это язык, управляемый событиями (event-driven). Он позволяет разработчикам регистрировать на узлах DOM так называемых «слушателей событий» — event listeners. И хотя большинство событий вызываются действиями пользователя, существуют и такие, которые могут быть инициированы и без этого, — например, события по времени и асинхронные вызовы. При этом каждое событие может отдаваться эхом по всему дереву DOM и активировать сразу несколько «слушателей». Иногда отследить все это — довольно нетривиальная задача.
Как обрабатываются событияПо этим причинам код на JS может быть труден для понимания, анализа и тестирования. Облегчат жизнь веб-разработчику и помогут писать безопасный код специальные утилиты.
Утилиты для тестирования кода на JS
Существуют утилиты для парсинга (например, Esprima, Rhino), оптимизации (например, Google Closure Compiler) и статического анализа кода на наличие распространенных синтаксических ошибок (например, JSHint).
Кроме того, есть несколько проверенных фреймворков, которые помогают веб-разработчикам покрывать JS-код тестами. Среди них:
- QUnit — популярный фреймворк для тестирования модулей;
- Jasmine — BDD-фреймворк (Behavior-driven Development) для тестирования кода;
- Mocha — фреймворк для тестирования кода, запускается как в Node.js, так и в браузере;
- jsTestDriver — фреймворк, который в числе прочего может прогонять набор тестов сразу через несколько браузеров.
Кроме того, существуют тестирующие фреймворки, которые эмулируют поведение браузера и позволяют автоматически прогонять тестовые примеры. Они особенно актуальны при отладке участков кода, которые отвечают за взаимодействие между JS и DOM, и предоставляют удобную инфраструктуру для манипулирования DOM.
К примеру, Selenium, PhantomJS и SlimerJS предоставляют API, через который можно запускать экземпляры браузера и работать с ними. Через API ты можешь активировать события и получать доступ к элементам DOM прямо в рантайме — то есть тестировать код в условиях, максимально приближенных к реальным. Конечно, немалую часть работы придется проделывать вручную, но даже это уже неплохая помощь в тестировании.
Утилиты для статического анализа
Ранее утилиты для выявления проблемных участков кода представляли собой статические анализаторы. То есть, учитывая все динамические причуды JS, могли предоставить только ограниченную помощь. Однако и они бывают полезными в анализе. Вот несколько основных примеров.
WARI — статический анализатор, который исследует зависимости между функциями JS, стилями CSS, тегами HTML и изображениями. Смысл этой утилиты — находить при статическом анализе неиспользуемые ресурсы. Однако с динамикой WARI, конечно, не справится.
JSLint — утилита для анализа статического кода, которая сама написана на JavaScript. Она проверяет код на соответствие хорошим практикам.
Google Closure Compiler — JS-оптимизатор, который автоматически переписывает код с целью сделать его быстрее и компактнее. Заодно в трубу вылетают все комментарии и любые неиспользуемые участки кода.
WebScent (см. научную работу) — продвинутый статический анализатор. В работе он исходит из того, что клиентский JS-код (тот, который загружается в браузер) не хранится на стороне сервера в целом виде, а рассеян по серверному коду кусками. «Душок» в этих кусках не может быть легко обнаружен до тех пор, пока из них не будет сгенерирован цельный клиентский код. WebScent анализирует клиентский код с тем, чтобы найти проблемные места в серверном коде. При этом работа статического анализатора WebScent в основном сводится к распутыванию замесов HTML, CSS и JS — с целью обнаружить дублирующийся код и ошибки в синтаксисе HTML.
РЕКОМЕНДУЕМ:
Способы повышения продуктивности программиста
Утилиты для динамического анализа
JSNose — утилита, в которой объединены статический и динамический анализ. Она анализирует код на наличие тринадцати антипаттернов. Семь из них (в том числе lazy object и long function) — общие для всех языков программирования, а шесть остальных (closure smells, excessive global variables, nested callbacks и другие) специфичны для JavaScript.
DOMPletion — автоматизированная утилита, которая помогает веб-разработчику понимать код при просмотре: объясняет причину присутствия структур DOM, выполняет динамический анализ, а также предоставляет умный автокомплит для кода, который взаимодействует с DOM.
Clematis — фреймворк, который помогает распутывать сложные событийные взаимодействия. Clematis детально фиксирует все события, которые срабатывают при выполнении, и визуализирует их в виде абстрактной поведенческой модели, в которой отражаются временные и причинно-следственные связи между компонентами и событиями.
Выводы
Итак, отследить происходящее при выполнении скриптов на JS бывает непросто, но, вооружившись подходящими инструментами, найти и переписать проблемные места можно даже в самом запутанном коде. Впрочем, JavaScript не стоит на месте: в нем появляются новые и новые возможности, теперь он часто используется для написания приложений (как мобильных, так и десктопных), а также все чаще встречается на серверах (и не только) благодаря Node.js. А это значит, что и искусство ловли багов нужно выводить на новый уровень.
Загрузка…GTM Variable Builder – собственный код JavaScript за 1 клик
Ранее я писал в своем блоге о плагинах и расширениях для Google Tag Manager, и как-то вскользь упомянул о GTM Variable Builder. На мой взгляд, данное расширение заслуживает отдельного материала. И вот почему.
Как часто вы хотели извлечь какую-либо информацию со своего сайта, но не могли этого сделать, поскольку незнакомы с элементами DOM и регулярными выражениями? Например, цену товара (но без знака валюты), его наименование, идентификатор транзакции, стоимость доставки? Или число найденных результатов на странице поиска? А может быть все переменные, которые необходимы для формирования уровня данных (dataLayer) динамического ремаркетинга или в электронной торговле?
Расширение для браузера GTM Variable Builder позволяет создавать пользовательские переменные типа Собственный код JavaScript и извлекать значения элементов сайта всего за 1 клик.
Чтобы скачать расширение, перейдите по ссылке и нажмите Установить
Расширение GTM Variable Builder
В правом верхнем углу появится иконка расширения. Далее следует перейти на сайт, открыть консоль разработчика (клавиша F12 в Google Chrome), выбрать вкладку Console.
Затем выделить нужный элемент на странице и нажать на иконку GTM Variable Builder.
Код для нашей переменной GTM
В консоли появится две строчки:
- PASTE THIS INTO THE CONSOLE TO TEST – код для проверки нашей переменной;
- FOR USE IN A GTM CUSTOM JAVASCRIPT VARIABLE – код, который нужно скопировать и вставить в Google Tag Manager в переменную типа Собственный код JavaScript.
Чтобы проверить код переменной, скопируйте первую строчку, вставьте ее в консоль и нажмите Enter:
Проверка кода в консоли
Должен вернуться тот же результат. Если это так, копируйте вторую строчку с function () { и вставьте данный код в переменную GTM. Это будет выглядеть так:
Переменная типа «Собственный код JavaScript»
Сохраняем нашу переменную. Чтобы проверить, действительно ли в данную переменную подставляется полученное значение, воспользуемся режимом предварительного просмотра Google Tag Manager. Перейдем на вкладку Variables и увидим значение нашей переменной:
Значение нашей переменной
Все работает. Благодаря GTM Variable Builder мы получили значение переменной без валюты (значка р.), которое автоматически создало код с регулярным выражением для нашей переменной.
На других страницах переменная будет принимать значение соответствующего товара:
Корректное значение переменной и на других страницах
Расширение GTM Variable Builder очень сильно упрощают работу интернет-маркетологам с GTM при составлении собственных переменных, особенно тем, кто имеет ограниченные знания в JavaScript.
P.S. Автор данного расширения записал коротенькое видео по его использованию
JavaScript.com | Ресурсы
JavaScript.com | РесурсыКраткое руководство Pluralsight по использованию JavaScript
Научитесь писать язык программирования с нуля, чтобы вы могли начать создавать свой собственный код.
Объекты и прототипы JavaScript
Подробные закулисные подробности создания объектов JavaScript, управления свойствами и использования прототипного наследования.
Расширенные методы в JavaScript и jQuery
Поднимите свои функции JavaScript на новый уровень.Изучите события и узнайте об отложенных объектах jQuery.
Лучшие практики JavaScript
От странностей синтаксиса до асинхронных шаблонов и обратных вызовов — этот курс поможет вам выявлять и предотвращать распространенные проблемы и головные боли в JavaScript, изучая передовой опыт.
Курсы JavaScript Pluralsight
Сотни курсов по запросу, охватывающих фундаментальные учебники по JavaScript с использованием передовых методов.
Руководство по JavaScript MDN
Большая серия письменных руководств, подготовленных участниками Mozilla.
Кодекадемия
Интерактивные курсы по основам JavaScript.
Красноречивый JavaScript
Электронная книга о JavaScript, программировании и чудесах цифровых технологий.
JavaScript для кошек
Если вы кот, который хочет выучить JavaScript, нет лучшей онлайн-книги.
Вы не знаете JavaScript
Серия книг Кайла Симпсона, глубоко погружающихся в JavaScript.
JSbooks
Обширная коллекция бесплатных книг по JavaScript.
Пути обучения JavaScript
Angular в 2017 году: что нового и чего ожидать
Узнайте, с чего вашей команде следует начать работу с новейшими функциями, как обрабатывать будущие обновления платформы и многое другое.
Угловая сила пробуждается с Джоном Папой
7 основ Angular 2, ключевые функции, доступ к данным через HTTP, использование метаданных для описания компонентов и новых концепций шаблонов и привязки данных.
Angular 2.0: что нужно знать
Чем отличается версия 2.0, что осталось прежним и как вы можете начать с ней экспериментировать сегодня.
Готова ли ваша команда изучать React?
Сравните React.js с популярными альтернативами, такими как Angular и jQuery, и узнайте, почему вам следует начать использовать его в своем интерфейсе.
Начало работы с Go
Узнайте, подходит ли Go, популярный язык программирования с открытым исходным кодом от Google, для вас и вашей команды.
JSON захватывает мир
С появлением фреймворков и библиотек на основе JavaScript, JSON может стать лучшим вариантом, о котором вы еще не думали.
С планом Pluralsight вы можете:
С помощью 14-дневного пилотного проекта вы можете:
- Доступ к тысячам видеороликов для развития критических навыков
- Предоставьте до 10 пользователей доступ к тысячам видеокурсов
- Практикуйте и применяйте навыки с помощью интерактивных курсов и проектов
- Просматривайте данные о навыках, использовании и тенденциях для ваших команд
- Подготовьтесь к сертификации с помощью ведущих в отрасли практических экзаменов
- Измерьте уровень владения навыками и ролями
- Согласуйте обучение с вашими целями с помощью путей и каналов
С планом Pluralsight вы можете:
С помощью 14-дневного пилотного проекта вы можете:
- Доступ к тысячам видеороликов для развития критических навыков
- Предоставьте до 10 пользователей доступ к тысячам видеокурсов
- Практикуйте и применяйте навыки с помощью интерактивных курсов и проектов
- Просматривайте данные о навыках, использовании и тенденциях для ваших команд
- Подготовьтесь к сертификации с помощью ведущих в отрасли практических экзаменов
- Измерьте уровень владения навыками и ролями
- Согласуйте обучение с вашими целями с помощью путей и каналов
Мы используем файлы cookie, чтобы сделать взаимодействие с нашими веб-сайтами и службами простым и значимым.Чтобы получить дополнительную информацию о файлах cookie, которые мы используем, или узнать, как отключить файлы cookie, щелкните здесь.
JSFiddle — площадка для кода
Редактор макета
Классический Столбцы Нижние результаты Правильные результаты Вкладки (столбцы) Вкладки (строки)
Консоль
Консоль в редакторе (бета)
Очистить консоль при запуске
Общие
Номера строк
Обернуть линии
Отступ с табуляцией
Подсказка по коду (автозаполнение) (бета)
Размер отступа:2 пробела 3 пробела 4 пробела
Ключевая карта:По умолчанию: Sublime TextEMACS
Размер шрифта:По умолчаниюBigBiggerJabba
Поведение
Код автозапуска
Только код автозапуска, который проверяет
Код автосохранения (натыкается на версию)
Автоматически закрывать HTML-теги
Автоматически закрывающие скобки
Проверка действующего кода
Выделите совпадающие теги
Опорные плиты
Показывать панель шаблонов реже
JavaScript | MDN
JavaScript ( JS ) — это легкий, интерпретируемый или оперативно скомпилированный язык программирования с функциями первого класса.Хотя он наиболее известен как язык сценариев для веб-страниц, он также используется во многих средах, не связанных с браузером, например, Node.js, Apache CouchDB и Adobe Acrobat. JavaScript — это основанный на прототипах, многопарадигмальный, однопоточный, динамический язык, поддерживающий объектно-ориентированный, императивный и декларативный (например, функциональное программирование) стили. Узнайте больше о JavaScript.
Этот раздел посвящен самому языку JavaScript, а не тем частям, которые относятся к веб-страницам или другим средам хоста.Для получения информации об особенностях API для веб-страниц см. Веб-API и DOM.
Стандартами для JavaScript являются спецификация языка ECMAScript (ECMA-262) и спецификация API интернационализации ECMAScript (ECMA-402). Документация JavaScript в MDN основана на последних черновых версиях ECMA-262 и ECMA-402. А в случаях, когда некоторые предложения по новым функциям ECMAScript уже реализованы в браузерах, в документации и примерах в статьях MDN могут использоваться некоторые из этих новых функций.
Не путайте JavaScript с языком программирования Java. И «Java», и «JavaScript» являются товарными знаками или зарегистрированными товарными знаками Oracle в США и других странах. Однако эти два языка программирования имеют очень разные синтаксис, семантику и использование.
Хотите стать интерфейсным веб-сайтом разработчик?
Мы составили курс, который включает в себя всю важную информацию, необходимую для работать для достижения своей цели.
Начать
Узнайте, как программировать на JavaScript, с помощью руководств и учебных пособий.
Для начинающих
Зайдите в раздел «Учебная область JavaScript», если вы хотите изучить JavaScript, но не имеете опыта работы с JavaScript или программированием. Доступны следующие полные модули:
- Первые шаги JavaScript
- Отвечает на некоторые фундаментальные вопросы, такие как «что такое JavaScript?», «Как он выглядит?» И «что он умеет?», А также обсуждает ключевые функции JavaScript, такие как переменные, строки, числа и массивы.
- Строительные блоки JavaScript
- Продолжает рассмотрение ключевых фундаментальных функций JavaScript, обращая наше внимание на часто встречающиеся типы блоков кода, такие как условные операторы, циклы, функции и события.
- Введение в объекты JavaScript
- Объектно-ориентированный характер JavaScript важно понимать, если вы хотите продвинуться дальше в своем знании языка и написать более эффективный код, поэтому мы предоставили этот модуль, чтобы помочь вам.
- Асинхронный JavaScript
- Обсуждает асинхронный JavaScript, почему он важен и как его можно использовать для эффективной обработки потенциальных операций блокировки, таких как выборка ресурсов с сервера.
- Клиентские веб-API
- Исследует, что такое API-интерфейсы и как использовать некоторые из наиболее распространенных API-интерфейсов, с которыми вы часто будете сталкиваться при разработке.
Руководство по JavaScript
- Руководство по JavaScript
- Гораздо более подробное руководство по языку JavaScript, предназначенное для тех, кто ранее имел опыт программирования на JavaScript или другом языке.
Средний
- Понимание клиентских фреймворков JavaScript Фреймворки JavaScript
- являются неотъемлемой частью современной интерфейсной веб-разработки, предоставляя разработчикам проверенные инструменты для создания масштабируемых интерактивных веб-приложений. Этот модуль дает вам некоторые фундаментальные базовые знания о том, как работают клиентские фреймворки и как они вписываются в ваш набор инструментов, прежде чем перейти к серии руководств, охватывающих некоторые из самых популярных на сегодняшний день.
- Повторное введение в JavaScript
- Обзор для тех, кто думает, что знают о JavaScript.
- Структуры данных JavaScript
- Обзор доступных структур данных в JavaScript.
- Сравнение на равенство и сходство
- JavaScript предоставляет три разные операции сравнения значений: строгое равенство с использованием
===
, свободное равенство с использованием==
и методObject.is ()
. - Укупорочные средства
Замыкание — это комбинация функции и лексического окружения, в котором эта функция была объявлена.
Продвинутый
Просмотрите полную справочную документацию по JavaScript.
- Стандартные объекты
- Знакомство со стандартными встроенными объектами
Массив
,Логическое значение
,Дата
,Ошибка
,Функция
,JSON
,Математика
,Число
,Объект
,,
String
,Map
,Set
,WeakMap
,WeakSet
и другие. - Выражения и операторы
- Узнайте больше о поведении операторов JavaScript
, экземпляра
,типа
,нового
,этого
, приоритета оператора и т. Д. - Заявления и заявления
- Узнайте, как
do-while
,for-in
,for-of
,try-catch
,let
,var
,const
,if-else
,switch
и работают больше операторов и ключевых слов JavaScript. - Функции
- Узнайте, как работать с функциями JavaScript для разработки приложений.
Полезные инструменты для написания и отладки кода JavaScript .
- Инструменты разработчика Firefox
- Веб-консоль, профилировщик JavaScript, отладчик и многое другое.
- Оболочки JavaScript
- Оболочка JavaScript позволяет быстро тестировать фрагменты кода JavaScript.
- Изучение JavaScript
- Отличный ресурс для начинающих веб-разработчиков. Изучите JavaScript в интерактивной среде с короткими уроками и интерактивными тестами, управляемыми автоматической оценкой.Первые 40 уроков бесплатны, а полный курс доступен за небольшую единовременную оплату.
- ВместеJS
- Сотрудничество стало проще. Добавив TogetherJS на свой сайт, ваши пользователи смогут помогать друг другу на сайте в режиме реального времени!
- Переполнение стека
- вопросов о переполнении стека с тегом «JavaScript».
- JSFiddle
- Редактируйте JavaScript, CSS, HTML и получайте живые результаты. Используйте внешние ресурсы и сотрудничайте со своей командой в Интернете.
- Плункер
- Plunker - это онлайн-сообщество для создания, совместной работы и обмена вашими идеями веб-разработки. Редактируйте свои файлы JavaScript, CSS, HTML и получайте живые результаты и файловую структуру.
- JSBin
JS Bin - это инструмент отладки для совместной веб-разработки с открытым исходным кодом.
- Codepen
Codepen - еще один инструмент для совместной веб-разработки, используемый в качестве игровой площадки для живых результатов.
- StackBlitz
StackBlitz - еще один онлайн-инструмент для игровой площадки / отладки, который может размещать и развертывать полнофункциональные приложения с использованием React, Angular и т. Д.
- RunJS
RunJS - это настольный инструмент для игровой площадки / блокнота, который предоставляет живые результаты и доступ к API-интерфейсам узла и браузера.
Программирование JavaScript с помощью кода Visual Studio
Visual Studio Code включает встроенный JavaScript IntelliSense, отладку, форматирование, навигацию по коду, рефакторинг и многие другие расширенные языковые функции.
Большинство из этих функций работают сразу после установки, а для некоторых может потребоваться базовая конфигурация, чтобы получить максимальную отдачу.На этой странице перечислены функции JavaScript, с которыми поставляется VS Code. Расширения из VS Code Marketplace могут дополнять или изменять большинство этих встроенных функций. Более подробное руководство о том, как эти функции работают и могут быть настроены, см. В разделе Работа с JavaScript.
IntelliSense
IntelliSense показывает интеллектуальное завершение кода, информацию о наведении и подписи, чтобы вы могли писать код более быстро и правильно.
К сожалению, ваш браузер не поддерживает видео в формате HTML 5. VS Code обеспечивает IntelliSense в ваших проектах JavaScript; для многих библиотек npm, таких как React
, lodash
и express
; и для других платформ, таких как node
, serverless или IoT.
См. Раздел Работа с JavaScript для получения информации о VS Code JavaScript IntelliSense, способах его настройки и помощи в устранении распространенных проблем с IntelliSense.
проектов JavaScript (jsconfig.json)
Файл jsconfig.json определяет проект JavaScript в VS Code.Хотя файлы jsconfig.json
не требуются, вы можете создать их в таких случаях, как:
- Если не все файлы JavaScript в вашей рабочей области следует рассматривать как часть одного проекта JavaScript.
jsconfig.json Файлы
позволяют исключить некоторые файлы из отображения в IntelliSense. - Чтобы гарантировать, что подмножество файлов JavaScript в вашей рабочей области обрабатывается как один проект. Это полезно, если вы работаете с устаревшим кодом, который использует неявные глобальные зависимости вместо
, импортирует
для зависимостей. - Если ваша рабочая область содержит более одного контекста проекта, например внешний и внутренний код JavaScript. Для рабочих областей с несколькими проектами создайте
jsconfig.json
в корневой папке каждого проекта. - Вы используете компилятор TypeScript для компиляции исходного кода JavaScript на нижнем уровне.
Чтобы определить базовый проект JavaScript, добавьте jsconfig.json
в корень своей рабочей области:
{
"compilerOptions": {
"модуль": "commonjs",
"цель": "es6"
},
"exclude": ["node_modules"]
}
См. Раздел «Работа с JavaScript» для получения более подробной информации о jsconfig.конфигурация json
.
Совет: Чтобы проверить, является ли файл JavaScript частью проекта JavaScript, просто откройте файл в VS Code и выполните команду JavaScript: Go to Project Configuration . Эта команда открывает
jsconfig.json
, который ссылается на файл JavaScript. Уведомление отображается, если файл не является частью какого-либо проектаjsconfig.json
.
Фрагменты
VS Code включает базовые фрагменты кода JavaScript, которые предлагаются по мере ввода;
К сожалению, ваш браузер не поддерживает видео в формате HTML 5.Существует множество расширений, которые предоставляют дополнительные фрагменты, включая фрагменты для популярных фреймворков, таких как Redux или Angular. Вы даже можете определить свои собственные сниппеты.
Совет : Чтобы отключить предложения фрагментов, установите
editor.snippetSuggestions
на«none»
в своем файле настроек. Параметрeditor.snippetSuggestions
также позволяет вам изменить расположение фрагментов в предложениях: вверху («вверху»,
), внизу («внизу»,
) или встроенным в алфавитном порядке («встроенный»
).По умолчанию"встроенный"
.
Поддержка JSDoc
VS Code понимает многие стандартные аннотации JSDoc и использует эти аннотации для предоставления расширенных возможностей IntelliSense. При желании вы даже можете использовать информацию о типе из комментариев JSDoc для проверки типа вашего JavaScript.
К сожалению, ваш браузер не поддерживает видео в формате HTML 5. Быстро создавайте комментарии JSDoc для функций, набрав / **
перед объявлением функции и выбрав комментарий JSDoc. Предложение фрагмента :
Чтобы отключить предложения комментариев JSDoc, установите "javascript.suggest.completeJSDocs": false
.
Информация о наведении
Наведите курсор на символ JavaScript, чтобы быстро просмотреть информацию о его типе и соответствующую документацию.
Сочетание клавиш ⌘K ⌘I (Windows, Linux Ctrl + K Ctrl + I) показывает эту информацию о наведении курсора в текущей позиции курсора.
Справка по подписям
Когда вы пишете вызовы функций JavaScript, VS Code показывает информацию о сигнатуре функции и выделяет параметр, который вы в настоящее время выполняете:
Справка по подписям отображается автоматически, когда вы вводите (
или ,
в вызове функции.Нажмите ⇧⌘ Пробел (Windows, Linux Ctrl + Shift + Пробел), чтобы вручную вызвать справку по подписи.
Авто импорт
Автоматический импорт ускоряет кодирование, предлагая доступные переменные в вашем проекте и его зависимостях. Когда вы выбираете одно из этих предложений, VS Code автоматически добавляет импорт для него в начало файла.
Просто начните печатать, чтобы увидеть предложения для всех доступных символов JavaScript в вашем текущем проекте. Варианты автоматического импорта показывают, откуда они будут импортированы:
Если вы выберете одно из этих предложений автоматического импорта, VS Code добавит для него импорт.
В этом примере VS Code добавляет импорт для кнопки
из material-ui в начало файла:
Чтобы отключить автоматический импорт, установите "javascript.suggest.autoImports"
на false
.
Совет: VS Code пытается определить лучший стиль импорта для использования. Вы можете явно настроить предпочтительный стиль кавычек и стиль пути для импорта, добавленного в ваш код, с помощью javascript
javascript.preferences.quoteStyle
и.Preferences.importModuleSpecifier
настроек.
Форматирование
Встроенный модуль форматирования JavaScriptVS Code обеспечивает базовое форматирование кода с разумными значениями по умолчанию.
Параметры javascript.format. *
настраивают встроенный форматтер. Или, если встроенный форматтер мешает, установите "javascript.format.enable"
на false
, чтобы отключить его.
Для более специализированных стилей форматирования кода попробуйте установить одно из расширений форматирования JavaScript из Marketplace.
Все функции JavaScript VS Code также работают с JSX:
Синтаксис JSX можно использовать как в обычных файлах * .js
, так и в файлах * .jsx
.
VS Code также включает специфичные для JSX функции, такие как автоматическое закрытие тегов JSX:
К сожалению, ваш браузер не поддерживает видео в формате HTML 5. Установите "javascript.autoClosingTags"
на false
, чтобы отключить закрытие тега JSX.
Код навигации
Навигация по коду позволяет быстро перемещаться по проектам JavaScript.
- Перейти к определению F12 - Перейти к исходному коду определения символа.
- Peek Definition ⌥F12 (Windows Alt + F12, Linux Ctrl + Shift + F10) - открыть окно просмотра, в котором отображается определение символа.
- Перейти к ссылкам ⇧F12 (Windows, Linux Shift + F12) - показать все ссылки на символ.
- Перейти к определению типа - Перейти к типу, определяющему символ. Для экземпляра класса это покажет сам класс, а не место, где он определен.
Вы можете перемещаться через поиск символов с помощью команд Перейти к символу из палитры команд (⇧⌘P (Windows, Linux Ctrl + Shift + P)).
- Перейти к символу в файле ⇧⌘O (Windows, Linux Ctrl + Shift + O)
- Перейти к символу в рабочей области ⌘T (Windows, Linux Ctrl + T)
Переименовать
Нажмите F2, чтобы переименовать символ под курсором в вашем проекте JavaScript:
Рефакторинг
VS Code включает несколько удобных рефакторингов для JavaScript, таких как Извлечение функции и Извлечение константы .Просто выберите исходный код, который вы хотите извлечь, а затем щелкните лампочку в желобе или нажмите (⌘. (Windows, Linux Ctrl +.)), Чтобы увидеть доступные варианты рефакторинга.
Доступные варианты рефакторинга:
- Извлечь из метода или функции.
- Извлечь до константы.
- Преобразование между именованным импортом и импортом пространства имен.
- Перейти к новому файлу.
См. Рефакторинг для получения дополнительной информации о рефакторинге и о том, как вы можете настроить сочетания клавиш для отдельных рефакторингов.
Неиспользуемые переменные и недостижимый код
Неиспользуемый код JavaScript, такой как блок else в операторе if
, который всегда является истинным или импорт без ссылки, в редакторе исчезает:
Вы можете быстро удалить этот неиспользуемый код, поместив на него курсор и запустив команду «Быстрое исправление» (⌘. (Windows, Linux Ctrl +.)) Или щелкнув лампочку.
Чтобы отключить постепенное исчезновение неиспользуемого кода, установите "editor.showUnused"
на false
.Вы также можете отключить исчезновение неиспользуемого кода только в JavaScript, установив:
"[javascript]": {
"editor.showUnused": false
},
"[javascriptreact]": {
"editor.showUnused": false
},
Организация импорта
Действие источника Organize Imports Source Action сортирует импорт в файле JavaScript и удаляет все неиспользуемые импорты:
К сожалению, ваш браузер не поддерживает видео в формате HTML 5.Вы можете запустить Организовать импорт из контекстного меню Source Action или с помощью сочетания клавиш ⇧⌥O (Windows, Linux Shift + Alt + O).
Организовать импорт можно также автоматически при сохранении файла JavaScript, задав:
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
Код Действия при сохранении
Параметр editor.codeActionsOnSave
позволяет настроить набор кодовых действий, запускаемых при сохранении файла. Например, вы можете включить организацию импорта при сохранении, установив:
// При сохранении запускаем как fixAll, так и OrganizaImports исходные действия
"редактор.codeActionsOnSave ": {
"source.fixAll": правда,
"source.organizeImports": true,
}
Вы также можете установить editor.codeActionsOnSave
как массив кодовых действий для выполнения по порядку.
Вот некоторые исходные действия:
-
«организовать импорт»
- позволяет организовать импорт при сохранении. -
"fixAll"
- Автоматическое исправление при сохранении вычисляет все возможные исправления за один раунд (для всех поставщиков, включая ESLint). -
"fixAll.eslint"
- Автоматическое исправление только для ESLint. -
«addMissingImports»
- Добавляет все отсутствующие импортированные данные при сохранении.
Для получения дополнительной информации см. Node.js / JavaScript.
Варианты кода
VS Code автоматически предлагает некоторые общие упрощения кода, такие как преобразование цепочки из . Затем
вызывает обещание использовать async
и await
Установите "javascript.suggestionActions.enabled"
на false
, чтобы отключить предложения.
Ссылки CodeLens
Ссылки JavaScript CodeLens отображает встроенное количество ссылок для классов, методов, свойств и экспортируемых объектов:
Чтобы включить ссылки CodeLens, установите "javascript.referencesCodeLens.enabled"
на true
.
Щелкните количество ссылок, чтобы быстро просмотреть список ссылок:
Обновление импорта при перемещении файла
Когда вы перемещаете или переименовываете файл, который импортируется другими файлами в вашем проекте JavaScript, VS Code может автоматически обновлять все пути импорта, которые ссылаются на перемещенный файл:
К сожалению, ваш браузер не поддерживает видео в формате HTML 5. Параметр javascript.updateImportsOnFileMove.enabled
управляет этим поведением. Допустимые значения настроек:
-
«подсказка»
- По умолчанию. Спрашивает, нужно ли обновлять пути при каждом перемещении файла. -
«всегда»
- Всегда автоматически обновлять пути. -
«никогда»
- Не обновлять пути автоматически и не запрашивать.
Линтер
Линтерс выдает предупреждения о подозрительно выглядящем коде.Хотя VS Code не включает встроенный линтер JavaScript, на рынке доступно множество расширений линтера JavaScript.
Совет: Этот список динамически запрашивается из VS Code Marketplace. Прочтите описание и отзывы, чтобы решить, подходит ли вам расширение.
Проверка типа
Вы также можете использовать некоторые из расширенных функций проверки типов и отчетов об ошибках TypeScript в обычных файлах JavaScript. Это отличный способ обнаружить распространенные ошибки программирования.Эти проверки типов также позволяют использовать некоторые интересные быстрые исправления для JavaScript, в том числе Добавить отсутствующий импорт и Добавить отсутствующее свойство .
TypeScript пытался вывести типы в файлах .js
так же, как и в файлах .ts
. Когда типы не могут быть выведены, их можно указать явно с помощью комментариев JSDoc. Вы можете узнать больше о том, как TypeScript использует JSDoc для проверки типов JavaScript, в разделе Работа с JavaScript.
Проверка типа JavaScript не является обязательной и требует согласия.Существующие инструменты проверки JavaScript, такие как ESLint, можно использовать вместе со встроенными функциями проверки типов.
Отладка
VS Code имеет отличную поддержку отладки для JavaScript. Устанавливайте точки останова, проверяйте объекты, перемещайтесь по стеку вызовов и выполняйте код в консоли отладки. См. Раздел «Отладка», чтобы узнать больше.
Отладка на стороне клиента
Вы можете отлаживать свой клиентский код с помощью отладчика браузера, такого как встроенный отладчик для Edge и Chrome или отладчик для Firefox.
Отладка на стороне сервера
Отладка Node.js в VS Code с помощью встроенного отладчика. Установка проста, и вам поможет руководство по отладке Node.js.
Популярные расширения
VS Code поставляется с отличной поддержкой JavaScript, но вы можете дополнительно установить отладчики, фрагменты кода, линтеры и другие инструменты JavaScript с помощью расширений.
Совет: Показанные выше расширения запрашиваются динамически. Щелкните плитку расширения выше, чтобы прочитать описание и отзывы, чтобы решить, какое расширение лучше всего подходит для вас.Смотрите больше на торговой площадке.
Следующие шаги
Читайте дальше, чтобы узнать о:
- Работа с JavaScript - Более подробная информация о поддержке JavaScript в VS Code и способах устранения распространенных проблем.
- jsconfig.json - Подробное описание файла проекта
jsconfig.json
. - IntelliSense - Узнайте больше о IntelliSense и о том, как эффективно использовать его для вашего языка.
- Отладка - Узнайте, как настроить отладку для вашего приложения.
- Node.js - пошаговое руководство по созданию приложения Express Node.js.
- TypeScript - VS Code имеет отличную поддержку TypeScript, которая привносит структуру и строгую типизацию в ваш код JavaScript.
Посмотрите эти вводные видеоролики:
- IntelliSense - Учебное пособие по IntelliSense с JavaScript.
- Отладка - Узнайте, как отлаживать приложение Node.js.
Общие вопросы
Поддерживает ли VS Code JSX и React Native?
VS Code поддерживает JSX и React Native .Вы получите IntelliSense для React / JSX и React Native из автоматически загружаемых файлов декларации типа (типизации) из репозитория файлов декларации типа npmjs. Кроме того, вы можете установить популярное расширение React Native из Marketplace.
Чтобы включить операторы импорта ES6 для React Native , вам необходимо установить для параметра компилятора allowSyntheticDefaultImports
значение true
. Это указывает компилятору создать синтетические члены по умолчанию, и вы получите IntelliSense. React Native использует Babel за кулисами для создания правильного кода времени выполнения с элементами по умолчанию. Если вы также хотите выполнить отладку кода React Native , вы можете установить React Native Extension.
Поддерживает ли VS Code язык программирования Dart и фреймворк Flutter?
Да, есть расширения VS Code как для Dart, так и для Flutter. Вы можете узнать больше в документации Flutter.dev.
IntelliSense не работает для внешних библиотек
Автоматическое получение типа
работает для зависимостей, загруженных npm (указанных в пакете .json
), Bower (указанный в bower.json
) и для многих наиболее распространенных библиотек, перечисленных в вашей структуре папок (например, jquery-3.1.1.min.js
).
Импорт стилей ES6 не работает.
Если вы хотите использовать импорт стиля ES6, но некоторые файлы декларации (типизации) типа еще не используют экспорт стиля ES6, установите для параметра компилятора TypeScript allowSyntheticDefaultImports
значение true.
{
"compilerOptions": {
"модуль": "commonjs",
"target": "es6",
// Это строка, которую вы хотите добавить
"allowSyntheticDefaultImports": true
},
"exclude": ["node_modules", "** / node_modules / *"]
}
Могу ли я отлаживать минимизированный / утерянный JavaScript?
Да, можно.Вы можете увидеть, как это работает, используя исходные карты JavaScript в разделе «Отладка Node.js».
Как отключить проверку синтаксиса при использовании конструкций, отличных от ES6?
Некоторые пользователи хотят использовать синтаксические конструкции, такие как предложенный оператор конвейера ( |>
). Однако в настоящее время они не поддерживаются языковой службой JavaScript VS Code и помечаются как ошибки. Для пользователей, которые все еще хотят использовать эти будущие функции, мы предоставляем настройку javascript.validate.enable
.
Параметр javascript.validate.enable: false
отключает всю встроенную проверку синтаксиса. Если вы это сделаете, мы рекомендуем вам использовать линтер, такой как ESLint, для проверки вашего исходного кода.
Могу ли я использовать другие инструменты JavaScript, например Flow?
Да, но некоторые языковые функции Flow, такие как проверка типов и ошибок, могут мешать встроенной поддержке JavaScript в VS Code. Чтобы узнать, как отключить встроенную поддержку JavaScript в VS Code, см. Отключение поддержки JavaScript.
08.07.2021
Редакторы кода JavaScript
Резюме : В этом руководстве вы узнаете о редакторах кода JavaScript и о том, как установить код Visual Studio для кодирования JavaScript.
Популярные редакторы кода JavaScript
Для редактирования исходного кода JavaScript, по сути, вам просто нужен текстовый редактор, такой как Блокнот в Windows.
Чтобы упростить и ускорить набор кода JavaScript, вам понадобится редактор кода JavaScript.
Помимо основных функций редактирования, редактор кода JavaScript предоставляет функции выделения синтаксиса, отступов, автозаполнения и сопоставления скобок.
Некоторые редакторы также предоставляют удобный способ отладки JavaScript и других инструментов, относящихся к процессу разработки программного обеспечения.
Ниже приведены некоторые популярные редакторы кода JavaScript:
Обратите внимание, что все вышеперечисленные редакторы JavaScript бесплатны. По выбору мы будем использовать код Visual Studio.
Visual Studio Code
Visual Studio Code - это бесплатный редактор кода с открытым исходным кодом, разработанный Microsoft.Visual Studio Code часто называют VS Code.
VS Code работает на разных платформах, включая Windows, Linux и macOS.
VS Code легко настраивается. Он позволяет изменять тему, сочетания клавиш, настройки и устанавливать расширения, которые добавляют дополнительные функции.
VS Code включает встроенную поддержку JavaScript, которая включает IntelliSense, отладку, форматирование, навигацию по коду, рефакторинг и многие другие расширенные языковые функции.
Чтобы узнать обо всех функциях, поддерживаемых кодом VS, ознакомьтесь с кодом JavaScript в Visual Studio Code.
Загрузить код Visual Studio
Чтобы загрузить код Visual Studio, перейдите по следующей ссылке:
Загрузить код Visual Studio
Установка кода Visual Studio
Установить код Visual Studio легко и быстро. Это небольшая загрузка, поэтому вы можете установить ее за несколько минут.
A) Windows
Чтобы установить VS Code в Windows, выполните следующие действия:
- Сначала запустите программу установки из загруженного файла.Это займет всего лишь несколько минут.
- Затем откройте код Visual Studio.
Обратите внимание, что установщик добавит код Visual Studio в ваш % PATH%
. Это позволит вам набрать код команды .
, чтобы запустить VS Code в этой папке.
B) MacOS
Чтобы установить VS Code на macOS, выполните следующие действия:
- Сначала дважды щелкните загруженный архив, чтобы развернуть его содержимое.
- Затем перетащите Visual Studio Code.app в Приложения, чтобы сделать его доступным на панели запуска.
Установка расширения Live Server
Расширение live server позволяет запускать локальный сервер разработки с функцией горячей перезагрузки статических страниц. После изменения кода JavaScript вам не нужно обновлять страницу, чтобы увидеть изменения.
Чтобы установить расширение Live Servre, выполните следующие действия:
- Сначала щелкните Расширения.
- Во-вторых, найдите Live Server и выберите расширение Live Server в списке.
- Наконец, нажмите кнопку «Установить».
В этом руководстве вы узнали о редакторе кода JavaScript и о том, как установить код Visual Studio для редактирования исходного кода JavaScript.
Было ли это руководство полезным?
фрагментов кода JavaScript - 30 секунд кода
Существует множество способов перебора и преобразования данных массива в JavaScript. Узнайте, как каждый из них работает и где их следует использовать.
Логические ловушки могут вызвать проблемы с читабельностью и ремонтопригодностью вашего кода.Из этой статьи вы узнаете, что это такое, как их обнаружить и исправить.
Узнайте, как работают новые итераторы JavaScript ES6 и как вы можете использовать их для повышения уровня своих программных проектов, изучив эти примеры короткого кода.
Узнайте, как можно использовать объект Proxy для использования объекта JavaScript так же, как при использовании обычного массива.
Извлекает набор свойств, указанных с помощью заданных селекторов из объекта.
Возвращает в удобочитаемом формате заданное количество миллисекунд.
Создает объект, содержащий параметры текущего URL.
Копирует строку в буфер обмена. Работает только в результате действия пользователя (т.е. внутри прослушивателя событий
click
).Классифицирует точку данных относительно помеченного набора данных, используя алгоритм k-ближайших соседей.
Реализация алгоритма Луна, используемого для проверки различных идентификационных номеров, таких как номера кредитных карт, номера IMEI, номера национальных идентификаторов провайдеров и т. Д.
Создает массив элементов, разгруппировывая элементы в массиве, созданном с помощью zip, и применяя предоставленную функцию.
Изменяет исходный массив для фильтрации указанных значений на основе заданной функции итератора.
Узнайте о различиях между стрелочными функциями JavaScript ES6 и обычными функциями и о том, как они влияют на обратные вызовы прослушивателя событий.
Узнайте о различных способах мемоизации вызовов функций в JavaScript, а также о том, когда использовать мемоизацию для достижения наилучших результатов.
Веб-сайт, название и логотип © 2017-2021 30 секунд кода
Отдельные фрагменты под лицензией CC0-1.0
На основе Netlify, Next.js и GitHub
Расширенное расширение кода JavaScript - Центр обучения Tealium
Используйте расширение Advanced JavaScript Code для написания кода JavaScript в расширенном редакторе с проверкой синтаксиса, выполнения различий кода, интеграции с GitHub и режима черновика для безопасного рабочего процесса публикации.
Базовый код JavaScript см. В разделе Расширение кода JavaScript (базовый).
В этой статье:
Заполнитель содержания
Расширение кода JavaScript имеет собственный рабочий процесс публикации, который использует черновиков и очередь публикации . Черновики - это незавершенные версии кода, которые сохраняются при сохранении профиля, но по умолчанию не включаются в опубликованные файлы. Очередь публикации позволяет вам пометить черновик для публикации, что делает его доступным только для чтения и включает его в следующую публикацию в соответствующей среде.
Этот новый рабочий процесс публикации гарантирует, что ваш код не будет опубликован, пока он не будет готов. Это позволяет вам видеть, какой код был опубликован для каждой среды, и легко сравнивать код между черновиками и средами.
Для получения информации об использовании расширения кода JavaScript с GitHub см. Синхронизация с GitHub
.Черновики
Используйте черновики, чтобы поддерживать разные версии кода, не влияя на опубликованный профиль. Черновики публикуются только при указании среды с помощью рабочего процесса Утвердить для публикации .
Черновики - это именованные версии кода JavaScript. Каждый экземпляр расширения вмещает до 20 черновиков. Черновики сохраняются каждый раз при сохранении профиля, но публикуются только в том случае, если они явно добавлены в очередь публикации для определенных сред. Это позволяет вам редактировать код и сохранять свой прогресс (даже если он неполный), не влияя на среду публикации.
Рабочий процесс публикации
Расширение кода JavaScript имеет собственный рабочий процесс публикации, чтобы обеспечить более безопасный и детальный контроль над тем, какой код публикуется.По умолчанию черновики не публикуются. Чтобы опубликовать черновик, вы добавляете его в очередь публикации, чтобы он был включен в следующую публикацию.
У вас должно быть разрешение JavaScript Draft Promotion, чтобы добавить черновик в очередь публикации.
Следуйте этому рабочему процессу:
Шаг 1. Создайте черновик
Добавьте новый черновик и напишите свой собственный код JavaScript. Сохраните профиль, и код в черновике будет сохранен, но не опубликован.Продолжайте работать над своим кодом таким образом, пока он не будет готов к публикации.
Шаг 2. Утвердить для публикации
Когда вы будете готовы к публикации, утвердите черновик для публикации для одной или нескольких сред публикации. Черновик переходит в режим только для чтения (обозначается значком замка) до следующей публикации в выбранных средах, после чего он снова становится редактируемым, за исключением библиотек. Цвет замка рядом с черновиком соответствует значку рядом с соответствующей средой.
Шаг 3. Опубликованные среды
После публикации черновика текущий код доступен для просмотра (режим только для чтения) только в соответствующих средах публикации. Вы не можете напрямую редактировать код в среде публикации. Чтобы внести изменения, отредактируйте черновик и повторите рабочий процесс публикации.
Функции редактора кода
Расширение JavaScript Code использует расширенный редактор кода (Ace Editor), встроенный в интерфейс, который предлагает следующие удобные функции:
- Проверка синтаксиса
Просматривайте синтаксические ошибки, предупреждения и подсказки по мере ввода.На поле отображаются полезные значки, указывающие на то, что необходимо обратить внимание на затронутую строку. - Подсветка синтаксиса
Подсветка синтаксиса с учетом языка для JavaScript. - Автоматический отступ и отступ
Автоматический отступ при вводе текста. Поддерживает привязки клавишtab,
иshift + tab
. - Сворачивание кода
Сворачивайте блоки кода, чтобы не отвлекаться и сосредоточиться на изменениях. - Полноэкранный режим
Разверните окно редактора кода в полноэкранный режим для работы с более крупными проектами кода.
Исполнение кода
После публикации черновика код добавляется в один из файлов utag (в зависимости от объема). Важно отметить, что код выполняется так же, как и в редакторе кода, но заключен в следующую анонимную функцию:
function (a, b) {
// здесь выполняется содержимое расширения кода JavaScript
}
В функцию передаются два параметра:
a
- тип события («просмотр», «ссылка» или произвольное значение)
b
- ссылка на utag_data
, позволяющая установить значения UDO как b.VARIABLE_NAME = "какое-то значение"
.
Убедитесь, что область всех ссылок на переменные задана соответствующим образом, чтобы избежать перезаписи глобальных переменных.
Сравнить Код
Сравните черновик или среду публикации с любой другой средой черновика или публикации. В окне сравнения версии кода отображаются рядом с выделением каждой отличающейся строки. Например, сравните Prod с QA , Draft 1 vs Draft 2 или Draft 1 vs Prod .
Прежде чем начать, ознакомьтесь с принципами работы расширений.
После добавления расширения создайте черновик, как описано ниже.
Работа с черновиками
Добавьте код JavaScript в расширение с помощью черновиков.
Для создания черновика:
- На боковой панели в разделе Черновики щелкните + Добавить .
- В текстовом окне введите или вставьте код JavaScript.
- Сохраните профиль, чтобы сохранить изменения.
При работе с тягой доступны следующие функции:
- Имя черновика : Установите имя черновика. Имя отображается на боковой панели, отсортированное в алфавитном порядке в списке черновиков.
- Сбросить : отменить все изменения кода, внесенные в черновик с момента последнего сохранения профиля.
- Удалить : удалить черновик.Чтобы отменить, обновите профиль без сохранения.
- Сравнить разницу ... : сравнить черновик с другим черновиком или со средой публикации.
- Очередь для публикации ... : отметьте черновик для публикации в одной или нескольких средах публикации.
Копировать файл в черновой режим
Файлы, добавленные через GitHub, доступны только для чтения и не могут редактироваться. Чтобы отредактировать эти файлы, отредактируйте прямо в GitHub или скопируйте файл в режим черновика и отредактируйте черновую копию.
Используйте следующие шаги, чтобы скопировать файл в черновой режим, отредактировать и сохранить перед публикацией:
- Выберите файл, который нужно скопировать в режим черновика.
- Нажмите Копировать в черновик , чтобы скопировать содержимое файла в новый черновой шаблон.
- Введите имя и нажмите Введите .
Введите новое имя или оставьте то же самое.Если вы решите сохранить то же имя, имена останутся такими же, как имя файла. Например, если имя файла GitHub -
Tealium.js
, первая копия станетTealium.js
(если черновик с таким именем еще не существует). Последующие копии называютсяTealium.js-1,
,Tealium.js-2,
и так далее. - Откройте и отредактируйте копию.
- Нажмите Сохранить .
Опубликовать черновик
Публикация черновика - это двухэтапный процесс. Во-первых, в расширении черновик должен быть добавлен в очередь публикации для желаемой среды публикации. Во-вторых, профиль должен быть опубликован для соответствующей цели.
Помните, что по умолчанию черновики не включаются в публикацию, если они не были явно поставлены в очередь для публикации.
Для публикации черновика:
- Выберите желаемый уклон на боковой панели.
- Нажмите Очередь для публикации ... .
- Установите флажок рядом с желаемыми местоположениями публикации.
- Нажмите Продолжить .
Черновик теперь находится в режиме только для чтения (обозначен значком замка), а среда публикации в очереди указана на боковой панели и в деталях черновика. - Выполните сохранение и публикацию профиля, выбрав цель публикации, соответствующую очереди публикации.
Опубликованный черновик теперь отображается как активный код в соответствующей среде публикации на боковой панели.
Работа с GitHub
В следующих разделах описывается, как ссылаться на файлы в репозитории GitHub. Используйте эту функцию вместо написания кода непосредственно в расширении.
Для работы с файлами GitHub необходимо связать свою учетную запись GitHub с учетной записью управления тегами iQ.
Подробнее о создании ссылок на GitHub.
Добавить файл GitHub
Для ссылки на файл из репозитория GitHub:
- На левой панели расширения JavaScript Code рядом с GitHub Files щелкните + Add .
Вам будет предложено ввести URL-адрес файла, который вы хотите добавить. - Введите URL-адрес, например:
https: // github.com / your_account / your_repository / blob / master / Tealium.js
- Нажмите Добавить файл , и теперь на код будет ссылка в расширении.
Чтобы получить доступ к файлам в частном репозитории, вы должны связать свою учетную запись GitHub с личным токеном доступа, для которого выбрана область репозитория.
Узнайте больше о токенах личного доступа и объеме репо.
Синхронизировать файл
При наличии более новой версии файла, на который имеется ссылка, необходимо синхронизировать файл.Синхронизируйте указанный файл, развернув представление расширения кода JavaScript.
Все файлы GitHub пытаются синхронизироваться при открытии расширения, если файл не одобрен для публикации.
Используйте следующие шаги, чтобы вручную синхронизировать файл, включая файлы, одобренные для публикации:
- Выберите файл для синхронизации.
- Щелкните Sync File , чтобы получить последнюю копию файла из репозитория.
Обновленный файл отображается с указанием времени и даты и зеленой галочкой, указывающей на то, что файл является актуальным.
При работе с файлами GitHub имя файла, с которым вы работаете, всегда отображается вверху интерфейса. Чтобы просмотреть полный путь к файлу, наведите указатель мыши на имя файла.
Поставить файл в очередь для публикации
Файлы, поставленные в очередь на публикацию, не могут быть синхронизированы, и рядом с именем файла отображается значок замка. Если вы попытаетесь синхронизировать файл, который находится в очереди на публикацию, отобразится значок предупреждения, указывающий, что вы не можете подключиться для синхронизации с новой версией.
Используйте следующие шаги, чтобы поставить файл в очередь для публикации, как вы это делаете при использовании расширения JavaScript Draft Extension
- Выберите файл для постановки в очередь на публикацию.
- Нажмите Утвердить для публикации , затем статус файла отобразит новую строку с меткой времени и именем пользователя, показывающими среды, в которых был опубликован файл.
подсказок
Воспользуйтесь следующими советами, чтобы наилучшим образом использовать это расширение и избежать распространенных ошибок:
- Пропустить теги :не окружайте код тегами
.Содержимое текстового поля включается в файл JavaScript точно в том виде,в котором вы его вводите.
- Ссылка на UDO:если вы ссылаетесь на переменную из объекта
utag_data
,например,page_name
,используйте объектb
следующим образом:b['page_name'
].Узнайте больше об объекте b. - Переменные шаблона ссылочного тега:Если вы ссылаетесь на переменную,определенную в шаблоне тега тега с заданной областью,например
account_id
,используйтеu['account_id']
. - Создайте полезные имена черновиков:Ваш профиль TiQ представляет собой общую рабочую среду,поэтому используйте значимые имена для черновиков,чтобы их можно было легко идентифицировать для вас и других.
- Комментарий к вашему коду:Напишите полезные комментарии,чтобы вам и другим пользователям было легче понять ваш код и то,как его поддерживать.
Понимание плюсов и минусов
Хотя расширение кода JavaScript очень гибкое и может использоваться практически для всего,что вы хотите выполнить в рамках своего решения для управления тегами,важно понимать,какое влияние оно может оказать на долгосрочный успех вашей учетной записи.Мы настоятельно рекомендуем вам попробовать использовать другие встроенные расширения для выполнения задачи,прежде чем прибегать к расширению кода JavaScript.
Перед использованием этого расширения рассмотрите свою среду и следующие плюсы и минусы:
Плюсы |
---|
|
Минусы |
---|
|
Могу ли я продолжать использовать устаревшее расширение кода JavaScript?
Да.Старые версии расширения JavaScript Code продолжают работать в обычном режиме,но не могут добавить новую,используя старую версию.
Почему я не могу добавить или изменить расширение кода JavaScript?
Следующие причины могут объяснить,почему вы не можете редактировать расширение кода JavaScript:
- Вы не сможете добавлять или редактировать расширение кода JavaScript,если у вас нет разрешения на управление расширением кода JS в вашей учетной записи Tealium iQ.Обратитесь к администратору вашей учетной записи,чтобы получить это разрешение.
- Черновик становится доступным только для чтения,если он поставлен в очередь для публикации,но публикация еще не произошла.Удалите черновик из очереди публикации или опубликуйте профиль,чтобы сделать черновик снова доступным для редактирования.
- Код,отображаемый в средах публикации,нельзя редактировать напрямую.Это доступный только для чтения вид опубликованного кода.
Почему я не могу выбрать среду публикации в диалоговом окне «Очередь для публикации»?
Хотя у вас может быть разрешение на добавление расширения кода JavaScript и создание черновиков,существует отдельное разрешение,необходимое для продвижения черновика в среду публикации.Если у вас нет этого разрешения,среды в диалоговом окне «Очередь для публикации» нельзя выбрать.
Обратитесь к администратору учетной записи,чтобы узнать,есть ли у вас разрешение на использование черновика JavaScript.
Почему я не могу установить прицел на предзагрузчик?
Если у вас определено условие,функция предварительной загрузки больше не доступна.В области Pre Loader уровень данных еще не заполнен,поэтому нет объекта данных,с помощью которого можно было бы оценить условную логику.Точно так же опцияДобавить условиеотключена,если для области задано значение «Предварительная загрузка».