🧾Преимущества внешнего JavaScript
Размещение скриптов во внешних файлах имеет ряд преимуществ:
Он разделяет HTML и код. Это упрощает чтение и поддержку HTML и JavaScript. Кэшированные файлы JavaScript могут ускорить загрузку страницы
Чтобы добавить несколько файлов сценария на одну страницу - используйте несколько тегов сценария
Пример:
▬▬▬▬▬▬▬▬
\ How To WebDev
Размещение скриптов во внешних файлах имеет ряд преимуществ:
Он разделяет HTML и код. Это упрощает чтение и поддержку HTML и JavaScript. Кэшированные файлы JavaScript могут ускорить загрузку страницы
Чтобы добавить несколько файлов сценария на одну страницу - используйте несколько тегов сценария
Пример:
<script src="myScript1.js"></script>
<script src="myScript2.js"></script>
📂 #JavaScript #Код▬▬▬▬▬▬▬▬
\ How To WebDev
🧾Какая разница между элементами <span> и <div>?
<span> — это строчный (inline) элемент.<div> — это блочный (block) элемент.
Элементы <div> нужно использовать для оформления разделов документа. А элементы <span> — в роли контейнеров для небольших объёмов текста, для изображений и других подобных элементов страниц.
Надо отметить, что нельзя помещать блочные элементы в строчные. Вот пример, в котором показано, кроме прочего, неправильное размещение блочного элемента внутри строчного (это — фрагмент <div>I'm illegal</div>, размещённый внутри элемента <span>):
▬▬▬▬▬▬▬▬
\ How To WebDev
<span> — это строчный (inline) элемент.<div> — это блочный (block) элемент.
Элементы <div> нужно использовать для оформления разделов документа. А элементы <span> — в роли контейнеров для небольших объёмов текста, для изображений и других подобных элементов страниц.
Надо отметить, что нельзя помещать блочные элементы в строчные. Вот пример, в котором показано, кроме прочего, неправильное размещение блочного элемента внутри строчного (это — фрагмент <div>I'm illegal</div>, размещённый внутри элемента <span>):
<div>Hi<span>I'm the start of the
📂 #JavaScript #Код▬▬▬▬▬▬▬▬
\ How To WebDev
Что такое мета-теги?
Мета-теги — это теги, находящиеся в теге страницы <head> и описывающие содержимое страницы. Мета-теги не выводятся на странице. Они имеются лишь в её коде.
Их основная задача заключается в том, чтобы кратко описывать содержимое страниц поисковым системам. Вот пример:
▬▬▬▬▬▬▬▬
\ How To WebDev
Мета-теги — это теги, находящиеся в теге страницы <head> и описывающие содержимое страницы. Мета-теги не выводятся на странице. Они имеются лишь в её коде.
Их основная задача заключается в том, чтобы кратко описывать содержимое страниц поисковым системам. Вот пример:
<head> <meta charset="UTF-8"> <meta name="description" content="Description search engines use"> <meta name="keywords" content="Keywords, of, your, page"> <meta name="author" content="Me"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head>
📂 #JavaScript #Код▬▬▬▬▬▬▬▬
\ How To WebDev
🧾Как пользоваться медиазапросами в CSS?
В медиазапросах используется правило @media, с помощью которого можно применять CSS-стили к различным типам содержимого. Медиазапросы могут использоваться и для настройки элементов страниц с учётом характеристик среды, в которой просматривают страницы.
▬▬▬▬▬▬▬▬
\\ How To WebDev
В медиазапросах используется правило @media, с помощью которого можно применять CSS-стили к различным типам содержимого. Медиазапросы могут использоваться и для настройки элементов страниц с учётом характеристик среды, в которой просматривают страницы.
/* Изменить фоновый цвет любого элемента <div> на "red" в том случае, если ширина окна браузера составляет 600px или меньше */
@media only screen and (max-width: 600px) {
div {
background-color: red;
}
}
📂 #CSS #Код ▬▬▬▬▬▬▬▬
\\ How To WebDev
🧾Какая разница между селекторами идентификаторов и классов в CSS?
Идентификаторы (id) уникальны. У элемента может быть только один идентификатор. На странице может присутствовать лишь один элемент с конкретным идентификатором.
Имена классов (class) не являются уникальными. Один и тот же класс можно назначать множеству элементов. Элементу может быть назначено несколько классов.
Если некий стиль нужно применить к нескольким элементам страницы — эту задачу нужно решать с использованием классов.
📂 #CSS #Совет
▬▬▬▬▬▬▬▬
\\ How To WebDev
Идентификаторы (id) уникальны. У элемента может быть только один идентификатор. На странице может присутствовать лишь один элемент с конкретным идентификатором.
Имена классов (class) не являются уникальными. Один и тот же класс можно назначать множеству элементов. Элементу может быть назначено несколько классов.
Если некий стиль нужно применить к нескольким элементам страницы — эту задачу нужно решать с использованием классов.
📂 #CSS #Совет
▬▬▬▬▬▬▬▬
\\ How To WebDev
🧾Какая разница между следующими видами позиционирования элементов: относительное, фиксированное, абсолютное, статическое?
Относительное позиционирование — это когда элемент смещается относительно его положения, задаваемого по умолчанию. Фиксированное позиционирование — это когда настраивают положение элемента, ориентируясь на края окна браузера. Абсолютное позиционирование — это размещение элемента относительно ближайшего позиционированного родительского элемента, причём, именно там, где указано разработчиком. Статическое позиционирование — это режим позиционирования, применяемый по умолчанию, при использовании которого элементы выводятся в том порядке, в котором они описаны в документе.
📂 #CSS #Код
▬▬▬▬▬▬▬▬
\\ How To WebDev
Относительное позиционирование — это когда элемент смещается относительно его положения, задаваемого по умолчанию. Фиксированное позиционирование — это когда настраивают положение элемента, ориентируясь на края окна браузера. Абсолютное позиционирование — это размещение элемента относительно ближайшего позиционированного родительского элемента, причём, именно там, где указано разработчиком. Статическое позиционирование — это режим позиционирования, применяемый по умолчанию, при использовании которого элементы выводятся в том порядке, в котором они описаны в документе.
📂 #CSS #Код
▬▬▬▬▬▬▬▬
\\ How To WebDev
🧾Что такое рекурсия?
Рекурсия – это приём программирования, полезный в ситуациях, когда задача может быть естественно разделена на несколько аналогичных, но более простых задач.
Или когда задача может быть упрощена до несложных действий плюс простой вариант той же задачи. Или для работы с определёнными структурами данных.
В процессе выполнения задачи в теле функции могут быть вызваны другие функции для выполнения подзадач. Частный случай подвызова – когда функция вызывает сама себя. Это как раз и называется рекурсией.
📂 #JavaScript #Совет
▬▬▬▬▬▬▬▬
\\ How To WebDev
Рекурсия – это приём программирования, полезный в ситуациях, когда задача может быть естественно разделена на несколько аналогичных, но более простых задач.
Или когда задача может быть упрощена до несложных действий плюс простой вариант той же задачи. Или для работы с определёнными структурами данных.
В процессе выполнения задачи в теле функции могут быть вызваны другие функции для выполнения подзадач. Частный случай подвызова – когда функция вызывает сама себя. Это как раз и называется рекурсией.
📂 #JavaScript #Совет
▬▬▬▬▬▬▬▬
\\ How To WebDev
🧾Что такое контекст выполнения?
Контекст выполнения — специальная внутренняя структура данных, которая содержит информацию о вызове функции.
Она включает в себя конкретное место в коде, на котором находится интерпретатор, локальные переменные функции, значение
Один вызов функции имеет ровно один контекст выполнения, связанный с ним.
📂 #JavaScript #Совет
▬▬▬▬▬▬▬▬
\\ How To WebDev
Контекст выполнения — специальная внутренняя структура данных, которая содержит информацию о вызове функции.
Она включает в себя конкретное место в коде, на котором находится интерпретатор, локальные переменные функции, значение
this и прочую служебную информацию.Один вызов функции имеет ровно один контекст выполнения, связанный с ним.
📂 #JavaScript #Совет
▬▬▬▬▬▬▬▬
\\ How To WebDev
🧾Что такое контекст выполнения? №2
Когда функция производит вложенный вызов, происходит следующее:
Выполнение текущей функции приостанавливается.
Контекст выполнения, связанный с ней, запоминается в специальной структуре данных – стеке контекстов выполнения.
Выполняются вложенные вызовы, для каждого из которых создаётся свой контекст выполнения.
После их завершения старый контекст достаётся из стека, и выполнение внешней функции возобновляется с того места, где она была остановлена.
📂 #JavaScript #Совет
▬▬▬▬▬▬▬▬
\\ How To WebDev
Когда функция производит вложенный вызов, происходит следующее:
Выполнение текущей функции приостанавливается.
Контекст выполнения, связанный с ней, запоминается в специальной структуре данных – стеке контекстов выполнения.
Выполняются вложенные вызовы, для каждого из которых создаётся свой контекст выполнения.
После их завершения старый контекст достаётся из стека, и выполнение внешней функции возобновляется с того места, где она была остановлена.
📂 #JavaScript #Совет
▬▬▬▬▬▬▬▬
\\ How To WebDev
🧾Методы примитивов
JavaScript позволяет нам работать с примитивными типами данных – строками, числами и т.д., как будто они являются объектами.
Поэтому давайте взглянем на ключевые различия между примитивами и объектами.
Примитив – это значение «примитивного» типа.
Есть 7 примитивных типов: string, number, boolean, symbol, null, undefined и bigint.
А объект может хранить множество значений как свойства.
Объявляется при помощи фигурных скобок "{}», например: «{name: "Рома", age: 30}». В JavaScript есть и другие виды объектов: например, функции тоже являются объектами.
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
JavaScript позволяет нам работать с примитивными типами данных – строками, числами и т.д., как будто они являются объектами.
Поэтому давайте взглянем на ключевые различия между примитивами и объектами.
Примитив – это значение «примитивного» типа.
Есть 7 примитивных типов: string, number, boolean, symbol, null, undefined и bigint.
А объект может хранить множество значений как свойства.
Объявляется при помощи фигурных скобок "{}», например: «{name: "Рома", age: 30}». В JavaScript есть и другие виды объектов: например, функции тоже являются объектами.
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
🧾Числа
В современном JavaScript существует два типа чисел:
Обычные числа в JavaScript хранятся в 64-битном формате IEEE-754, который также называют «числа с плавающей точкой двойной точности» (double precision floating point numbers). Это числа, которые используются чаще всего.
BigInt числа дают возможность работать с целыми числами произвольной длины. Они нужны достаточно редко и используются в случаях, когда необходимо работать со значениями более чем (253-1) или менее чем -(253-1).
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
В современном JavaScript существует два типа чисел:
Обычные числа в JavaScript хранятся в 64-битном формате IEEE-754, который также называют «числа с плавающей точкой двойной точности» (double precision floating point numbers). Это числа, которые используются чаще всего.
BigInt числа дают возможность работать с целыми числами произвольной длины. Они нужны достаточно редко и используются в случаях, когда необходимо работать со значениями более чем (253-1) или менее чем -(253-1).
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
🧾 Цикл for в Python
В Python цикл for – это цикл перебора последовательности. Он состоит из двух компонентов: переменной (переменных) цикла и последовательности.
А функция range возвращает диапазон (последовательность) целых чисел. Range может принимать 1, 2 или 3 аргумента.
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
В Python цикл for – это цикл перебора последовательности. Он состоит из двух компонентов: переменной (переменных) цикла и последовательности.
А функция range возвращает диапазон (последовательность) целых чисел. Range может принимать 1, 2 или 3 аргумента.
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
🧾 Цикл while в Python
Цикл while позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается после ключевого слова while и проверяется до выполнения тела цикла.
Этот цикл используется, когда невозможно определить точное количество повторений цикла.
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
Цикл while позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается после ключевого слова while и проверяется до выполнения тела цикла.
Этот цикл используется, когда невозможно определить точное количество повторений цикла.
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
🧾 Список в Python
Список – это непрерывная динамическая коллекция элементов. Каждому элементу списка присваивается порядковый номер – его индекс. Первый индекс равен нулю, второй - единице и так далее. Основные операции для работы со списками - это индексирование, срезы, добавление и удаление элементов, а также проверка на наличие элемента в последовательности.
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
Список – это непрерывная динамическая коллекция элементов. Каждому элементу списка присваивается порядковый номер – его индекс. Первый индекс равен нулю, второй - единице и так далее. Основные операции для работы со списками - это индексирование, срезы, добавление и удаление элементов, а также проверка на наличие элемента в последовательности.
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
🧾 Индексирование в Python
Что такое индексирование? Это операция обращения к элементу по его порядковому номеру (нумерация начинается с нуля).
Индексирование работает и в обратную сторону. Мы просто обращаемся к элементу списка по отрицательному индексу. Индекс с номером -1 дает доступ к последнему элементу, -2 к предпоследнему и так далее.
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
Что такое индексирование? Это операция обращения к элементу по его порядковому номеру (нумерация начинается с нуля).
Индексирование работает и в обратную сторону. Мы просто обращаемся к элементу списка по отрицательному индексу. Индекс с номером -1 дает доступ к последнему элементу, -2 к предпоследнему и так далее.
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
🧾 Создание списка в Python
Списки в Python являются изменяемым типом данных. Мы можем изменять содержимое каждой из ячеек:
fruits = ['Apple', 'Grape', 'Peach', 'Banan', 'Orange']
fruits[0] = 'Watermelon'
fruits[3] = 'Lemon'
print(fruits)
>>> ['Watermelon', 'Grape', 'Peach', 'Lemon', 'Orange']
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
Списки в Python являются изменяемым типом данных. Мы можем изменять содержимое каждой из ячеек:
fruits = ['Apple', 'Grape', 'Peach', 'Banan', 'Orange']
fruits[0] = 'Watermelon'
fruits[3] = 'Lemon'
print(fruits)
>>> ['Watermelon', 'Grape', 'Peach', 'Lemon', 'Orange']
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
🧾 Создание списка в Python с помощью list
Создать список в Python можно также с помощью функции list. В неё мы можем передать любой итерируемый объект, с помощью которого можно запустить цикл.
Рассмотрим несколько примеров:
letters = list('abcdef')
numbers = list(range(10))
even_numbers = list(range(0, 10, 2))
print(letters)
print(numbers)
print(even_numbers)
>>> ['a', 'b', 'c', 'd', 'e', 'f'
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [0, 2, 4, 6, 8]
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
Создать список в Python можно также с помощью функции list. В неё мы можем передать любой итерируемый объект, с помощью которого можно запустить цикл.
Рассмотрим несколько примеров:
letters = list('abcdef')
numbers = list(range(10))
even_numbers = list(range(0, 10, 2))
print(letters)
print(numbers)
print(even_numbers)
>>> ['a', 'b', 'c', 'd', 'e', 'f'
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [0, 2, 4, 6, 8]
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
🧾 Длина списка в Python
Как узнать длину списка? Есть два варианта, можно просто посчитать количество элементов, но есть способ проще, функция len.
Функция len возвращает длину любой итерируемой переменной, переменной, по которой можно запустить цикл.
Например:
fruits = ['Apple', 'Grape', 'Peach', 'Banan', 'Orange']
print(len(fruits))
>>> 5
numbers = [40, 20, 90]
print(len(numbers))
>>> 3
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
Как узнать длину списка? Есть два варианта, можно просто посчитать количество элементов, но есть способ проще, функция len.
Функция len возвращает длину любой итерируемой переменной, переменной, по которой можно запустить цикл.
Например:
fruits = ['Apple', 'Grape', 'Peach', 'Banan', 'Orange']
print(len(fruits))
>>> 5
numbers = [40, 20, 90]
print(len(numbers))
>>> 3
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
🧾 Срезы в Python
Срезом называется некоторая подпоследовательность. Принцип действия срезов очень прост: мы "отрезаем" кусок от исходной последовательности элемента, не меняя её при этом. Срезы могут работать не только со списками, но и с другими итерируемыми типами данных, например со строками.
fruits = ['Apple', 'Grape', 'Peach', 'Banan', 'Orange']
part_of_fruits = fruits[0:3]
print(part_of_fruits)
>>> ['Apple', 'Grape', 'Peach']
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
Срезом называется некоторая подпоследовательность. Принцип действия срезов очень прост: мы "отрезаем" кусок от исходной последовательности элемента, не меняя её при этом. Срезы могут работать не только со списками, но и с другими итерируемыми типами данных, например со строками.
fruits = ['Apple', 'Grape', 'Peach', 'Banan', 'Orange']
part_of_fruits = fruits[0:3]
print(part_of_fruits)
>>> ['Apple', 'Grape', 'Peach']
📋 #Совет
▬▬▬▬▬▬▬▬
// How To WebDev
🧾 Строки в JavaScript
В JavaScript любые текстовые данные являются строками. Не существует отдельного типа «символ», который есть в ряде других языков. Внутренний формат для строк — всё время UTF-16, вне зависимости от кодировки страницы.
Кавычки.
В JavaScript существуют различные типы кавычек.
Строку можно создать с помощью одинарных, двойных либо обратных кавычек:
let single = 'single-quoted';
let double = "double-quoted";
let backticks = `backticks`;
Одинарные и двойные кавычки работают одинаково, а если использовать обратные кавычки, то в такую строку мы сможем вставлять произвольные выражения, обернув их в ${…}:
let guestList = `Guests:
* John
* Pete
* Mary
`;
alert(guestList); // список гостей, состоящий из нескольких строк
📋 #Код
▬▬▬▬▬▬▬▬
// How To WebDev
В JavaScript любые текстовые данные являются строками. Не существует отдельного типа «символ», который есть в ряде других языков. Внутренний формат для строк — всё время UTF-16, вне зависимости от кодировки страницы.
Кавычки.
В JavaScript существуют различные типы кавычек.
Строку можно создать с помощью одинарных, двойных либо обратных кавычек:
let single = 'single-quoted';
let double = "double-quoted";
let backticks = `backticks`;
Одинарные и двойные кавычки работают одинаково, а если использовать обратные кавычки, то в такую строку мы сможем вставлять произвольные выражения, обернув их в ${…}:
let guestList = `Guests:
* John
* Pete
* Mary
`;
alert(guestList); // список гостей, состоящий из нескольких строк
📋 #Код
▬▬▬▬▬▬▬▬
// How To WebDev
🧾 Строки в JavaScript (часть 2)
В прошлый раз мы говорили о строках и кавычках в JavaScript. Теперь поговорим про спецсимволы.
Многострочные строки также можно создавать с помощью одинарных и двойных кавычек, используя так называемый «символ перевода строки», который записывается как \n:
let guestList = "Guests:\n * John\n * Pete\n * Mary";
alert(guestList); // список гостей, состоящий из нескольких строк
Эти две строки эквивалентны, просто записаны по-разному:
// перевод строки добавлен с помощью символа перевода строки
let str1 = "Hello\nWorld";
// многострочная строка, созданная с использованием обратных кавычек
let str2 =
alert(str1 == str2); // true
📋 #Код
▬▬▬▬▬▬▬▬
// How To WebDev
В прошлый раз мы говорили о строках и кавычках в JavaScript. Теперь поговорим про спецсимволы.
Многострочные строки также можно создавать с помощью одинарных и двойных кавычек, используя так называемый «символ перевода строки», который записывается как \n:
let guestList = "Guests:\n * John\n * Pete\n * Mary";
alert(guestList); // список гостей, состоящий из нескольких строк
Эти две строки эквивалентны, просто записаны по-разному:
// перевод строки добавлен с помощью символа перевода строки
let str1 = "Hello\nWorld";
// многострочная строка, созданная с использованием обратных кавычек
let str2 =
Hello
World;alert(str1 == str2); // true
📋 #Код
▬▬▬▬▬▬▬▬
// How To WebDev