Добро пожаловать в приложение предназначенное для изучения Web-технологий
Корневые тэги
!DOCTYPE html - это первая строка документа определяет 5-ю версию htmlНе соответсвие версии браузера современным технологиям HTML5 можно устранить дополнительным программным JS-кодом скаченным с адреса modernizr.com (его используют такие сайты Twitter, Google, Microsoft)HTML ../HTML - это главтый тэг содержит только 2 тэга HEAD и BODY- Атрибуты:
manifest= - указывает на файл, применяемый для переноса файлов (html,css,скрипты,изображения) на локальный диск и работы без доступа к интернетуфайл_манифеста
Содержание файла менифеста:
CACHE MANIFEST - первая строка ф-ла манифеста
CACHE: ф-лы - файлы, которые всегда сохраняются в кэше
NETWORK: ф-лы - файлы, которые всегда загружаются с интернета
FALLBACK: ф-л1/ф-л2 - файлы замещения, которые загружаются из кэша взамен если нет сетиtitle= - дабавление текстатекст
xmlns= - добавление пространства имен в документе XHTMLhttp://www.w3.org/1999/xhtml
lang= - указание языка документа (en-английский)язык
dir= - направление текста всего документаltr/rtl
HEAD ../HEAD - это заголовочный тэг содержит тэги описывающие документ и подгружающие дополнительные ресурсы.BODY ../BODY - это тэг содержит все отображаемые на странице тэги- Атрибуты:
alink= - установка цвета активной ссылки (аналог CSS - :active)цвет
link= - установка цвета неактивной ссылки (аналог CSS - :link)цвет
vlink= - установка цвета посещенной ссылки (аналог CSS - :visited)цвет
background= - установка фона браузера в виде изображения (аналог CSS - background)ф-л изображения
bgcolor= - установка цвета фона браузера (аналог CSS - background)цвет
text= - установка цвета текста по умолчанию (аналог CSS - color)цвет
bgproperties= - изображение не прокручивается (аналог CSS - background-attachment)fixed
bottommargin= - отступ контента от нижнего края браузера (аналог CSS - margin)N
leftmargin= - отступ контента от левого края браузера (аналог CSS - margin)N
rightmargin= - отступ контента от правого края браузера (аналог CSS - margin)N
topmargin= - отступ контента от верхнего края браузера (аналог CSS - margin)N
onload= - выполнение после загрузки всего HTML-документа и ресурсовинструкция
onunload= - выполнение перед разрушением HTML-документаинструкция
Тэги, которые могут присутствовать в HEAD:
TITLE текст/TITLE - этот устанавливает заглавие страницы, отображается в браузереBASE - устанавливает корневую папку или места открытия ссылок- Атрибуты:
href= - указание корневого пути для всех ресурсов, тогда к ресурсам указывают относительный путьпуть
target= - указание имени окна/фрейма по умолчанию, где открываются страницы по ссылке, иначе - _self (возможны:_blank,_self,_parent,_top)имя окна
META - настраивает заголовок страницы, каждая установка выполняется отдельным тэгом- Атрибуты:
charset = - установка кодировки всего документа (для html 5)utf-8
http-equiv= установка кодировки httpпараметр
Варианты переменных и значений:
Content-Type - установка формата документа по умолчанию (text/html;charset=utf-8)
Content-Script-Type - установка языка скрипта по умолчанию (text/javascript или application/javascript)
expires - установка даты после которой страница считается устаревшей (дата в формате)
pragma - способ кэширования документа
refresh - загрузка другого документа ("Nсекунд;url=ссылка")
name= установка переменной которой присваивается значениепараметр
Варианты переменных и значений:
viewport - установка ширины начала масштабирования на гаджетах("width= ширина")
viewport - отмена масштабирования("width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0")
format-detection - отмена в IOS пребразования ном-телефона в ссылку ("telephone=no")
keywords - установка ключевых слов/словосочетания для SEO (перечисляются через запятую до 20)
author - установка автора документа (фио или название фирмы)
description - установка описания текущего документа (текст до 140 символов)
robots - отмена индексации (none)
description - установка описания текущего документа (текст)
Copyright - установка авторских прав (фио или название фирмы)
Address - установка адреса автора (текст)
content= - устанавливает значение переменной указанной взначение
name илиhttp-equiv
STYLE стили/STYLE - этот тэг содержит правила стилей- Атрибуты:
type= - указание формата таблицы стилей (text/css)формат
media= - указание устройства для которого предназначены стили этого тэга (возможны:all,braille,handheld,print,screen,speech,projection,tty,tv)устройство
Варианты устройствall - Все устройстваbraille - Устройства, основанные на системе Брайля, предназначены для слепых людей.handheld - Наладонники, смартфоны, устройства с малой шириной экрана.print - Печатающее устройство вроде принтера.screen - Экран монитора.(по умолчанию)speech - Речевые синтезаторы, а также программы для воспроизведения текста вслух, сюда же входят речевые браузеры.projection - Проектор.tty - Телетайпы, терминалы, портативные устройства с ограниченными возможностями экрана. Для них не должны использоваться пикселы в качестве единиц измерения.tv - Телевизор.
LINK - подключает файл (ф-л стили, ф-л иконки)- Атрибуты:
type= - MIME-тип подключаемого ф-ла (text/css,image/x-icon,image/png)формат
media= - указание устройства для которого предназначены стили этого тэга (возможны:all,braille,handheld,print,screen,speech,projection,tty,tv)устройство
sizes= - указание размера иконки (48x48)ширина x высота
charset= - кодировка подключаемого ф-лакодировка
href= - указание подключаемого адреса файлафайл
rel= - Определяет отношения между текущим документом и файлом, на который делается ссылка (stylesheet, alternate, icon)значение
SCRIPT скрипт/SCRIPT - этот загружает файл скрипта или содержащийся скрипт и запускает его (без defer и async - применяют если седержат только классы и ф-ии), чаще применяют перед закр. тэгом/body - Атрибуты:
defer - отсрочка запуска сценария после загрузки всего HTML-документа, аналог скрипта window.onload = ф-яsrc= - установка файла для чтения скрипта, тогда контейнер тега пустфайл.js
language= - установка языка скрипта - устарел (JavaScript-ум, JScript, VBS, VBScript)язык_скрипта
type= - установка MIME-типа скрипта (text/javascript, application/x-javascript, application/javascript)формат
async - запуск скрипта в асинхронном режиме - параллельно с загрузкой документа (применяют если скрипт не зависит от html, неизвестно когда загрузка закончится - первой или после загрузки страницы)
Блочные тэги - начинаются и заканчиваются новой строкой, по умолчанию занимают ширину родителя и высоту контента
Другие простые блоки, разные названия нужны только для стилей и семантического предназначения
HEADER - заголовок документа (только один, содержит логотип, текстовый заголок, навигацию) или разделаFOOTER - нижняя колонтитул документа (только один) или секции, информация об авторе статьи, данные копирайта, авторские права, контактная инф.NAV - основная навигация документа или страницы, может быть в основном заголовкеMAIN - основное, уникальное содержимое документа/страницы, не содержит заголовок, навигацию, нижний колонтитул страницы, но может иметь своиSECTION - блок одного раздела по основной теме, имеет заголовок, текст и др.ARTICLE - блок одной сатьи, близкое по содержанию к основной теме, группирует тэги заголовка, текста и др, иногда сдвинут для отделения от основного потокаASIDE - блок косьвенно относится к основной теме, но без которого можно обойтись, чеще это боковая панель, содержит дополнительные ссылки, цифры, статьи, рекламма, архивы
FIGCAPTION ../FIGCAPTION - объединяющий блок для подписи изображений внутри FIGURE

Глобальные аттрибуты (могут применяться к любым тэгам):
accesskey = - установка комбинации Alt+буква для создания клика на элементебуква
name = - присвоение имени элемента (должно быть уникально для типа элемента)имя
id = - присвоение идентифиатора элемента (должно быть уникально имя во всем документе)имя
class = - одно/нескольно имен присваивается группе элементов для применения к ним стиля или методаимя класса
contenteditable - установить возможность пользавателю изменять контентdraggable - установить возможность перемещать элементdropzone = - установить возможность принимать элементыcopy/move/link
hidden - скрыть элемент c помощью стиля display:nonelang = - установка правил написания для указанного языкакод языка
spellcheck - установка проверки грамматики для редактируемых элементовstyle = - установка свойств стиля элементовCSS-стиль
title = - при зависании курсора появляется текст для пояснениятекст
dir = - направление текстаltr/rtl
align = - выравнивание контентаleft/center/right/justify
background = - установка фонового изображенияфайл
bgcolor = - установка фонового цветацвет
data- имя = - установка пользовательсного аттрибутазначение
Списочные и табличные тэги - размещают контент по-строчно
- Списки
UL список элементов/UL - 'unordered list' контейнер для ненумерованого списка элементов LI
OL список элементов/OL - 'ordered list' контейнер для нумерованого списка элементов LI
LI текст элемента/LI - 'list item' один элемент в списке UL или OL- Аттрибуты:
type = - установка формы метки:круг закрашен, не закрашен, квадратdisc / circle / square
type = - установка метки:цифры, анг.буквы, рим.цифры1 / A / a / I / i //
reversed - обратный порядок возрастанияstart = - установка первого зачения с которого начинается списокчисло / значение
value = - установка у тэга LI нового зачения с которого продолжается списокчисло / значение
- Списки с заглавием
DL заголовок и описание/DL - контейнер с заголовком и текстом определения
DT заголовок/DT - элемент заголовка
DD описание/DD - элемент текста определения, сдвинут влево
- Таблицы
TABLE строки/TABLE - таблица как контейнер со строкими TR
- Аттрибуты:
background = - установка фонового изображенияфайл
bgcolor = - установка фонового цветацвет
border = - установка толщины рамкичисло
bordercolor = - установка цвета рамкицвет
cellpadding = - установка отступа контента ячейки от рамкичисло
cellspacing = - установка расстояния между рамками ячеекчисло
cols = - установка зараннее количества колонокчисло
frame = - установка внешних границ в разных вариантахvoid/border/above/below/hsides/vsides/rhs/lhs
rules = - установка рамок между ячейкамиall/groups/cols/none/rows
summary = - установка названия таблицы - не отображаетсятекст
width = - установка ширины таблицычисло
height = - установка высоты таблицычисло
align = - установка расположения всей таблицы относительно родителяleft(ум)/center/right
TR ячейкиTR - одна строка как контейнер с ячейки TD и/или TH
- Аттрибуты:
bgcolor = - установка фонового цветацвет
bordercolor = - установка цвета рамкицвет
char = - выравнивание строки по указанному символу (если align="char")символ
charoff = - смещение всех символов на N символов вправо/влево (если align="char" и есть char)число
align = - установка горизонтального выравнивания контента каждой ячейки строкиleft(ум)/center/right/justify/char
valign = - установка вертикального выравнивания контента каждой ячейки строкиtop/middle(ум)/bottom/baseline
TH текст ячейки/TH - одна заглавная ячейка - с жирным шрифтом
TD текст ячейки/TD - одна ячейка- Аттрибуты:
abbr = - краткое описание (не отображается - для анализа скриптами)текст
headers = - указывают ID ячейки заголовка (не отображается - для анализа скриптами)текст
nowrap - запрет переносов длинного контентаcolspan = - количество ячеек которые объединяются вправочисло
rowspan = - количество ячеек которые объединяются внизчисло
background = - установка фонового изображенияфайл
bgcolor = - установка фонового цветацвет
bordercolor = - установка цвета рамкицвет
char = - выравнивание контента по указанному символу (если align="char")символ
charoff = - смещение всех символов на N символов вправо/влево (если align="char" и есть char)число
align = - установка горизонтального выравнивания контента каждой ячейки строкиleft(ум)/center/right/justify/char
valign = - установка вертикального выравнивания контента каждой ячейки строкиtop/middle(ум)/bottom/baseline
width = - установка ширины ячейкичисло
height = - установка высоты ячейкичисло
CAPTION текст/CAPTION - блок в TABLE заглавия таблицы, распологается вверху/внизу- Аттрибуты:
align = - установка горизонтального выравнивания заголовка и размещение его сверху/снизу от таблицыleft(ум)/right/top/bottom
THEAD строки/THEAD - блок в TABLE как контейнер строк выделяет заголовок (он один)
TBODY строки/TBODY - блок в TABLE как контейнер строк основных данных (их может быть несколько)
TFOOT строки/TFOOT - блок в TABLE как контейнер строк выделяет итоги (он один)- Аттрибуты:
bgcolor = - установка фонового цветацвет
char = - выравнивание строки по указанному символу (если align="char")символ
charoff = - смещение всех символов на N символов вправо/влево (если align="char" и есть char)число
align = - установка горизонтального выравнивания контента каждой ячейки строкиleft(ум)/center/right/justify/char
valign = - установка вертикального выравнивания контента каждой ячейки строкиtop/middle(ум)/bottom/baseline
COL атрибуты - создание шаблона одной колонки для установки формата (для каждого столбца свой COL)
COLGOUP /COLGOUP - создание шаблона для объединения блоков COL с установленным форматом- Аттрибуты:
span = - количество колонок для которых применяются характеристики (ум - 1)число
char = - выравнивание строки по указанному символу (если align="char")символ
charoff = - смещение всех символов на N символов вправо/влево (если align="char" и есть char)число
align = - установка горизонтального выравнивания контента каждой ячейки строкиleft(ум)/center/right/justify/char
valign = - установка вертикального выравнивания контента каждой ячейки строкиtop/middle(ум)/bottom/baseline
width = - установка ширины ячейкичисло
Тэги гиперссылок
- Аттрибуты:
href = - адрес файла для выполнения/перехода внутри контейнера контент подчеркиваетсяфайл
accesskey = - выбор ссылки при нажатии клавишисимвол
charset = - установка кодировки файла ссылки (utf-8,windows-1251,koi8-r)кодировка
hreflang = - указание кода языка на который установлена ссылкаязык
media = - установка типа устройства на который установлена ссылкаустройство
name = - идентификация текущего тэга как якоря - места перехода по ссылке (адрес#имя)имя
tabindex = - установка номера очередности при переходе клавишей TABчисло
target = - установка имени окна в котором откроется ссылкаимя
title = - всплывающий тексттекст
type = - MIME-тип документа по ссылкеMIME-тип
rel = - установка связи текущего документа к документу по ссылкезначение
rev = - установка связи документа по ссылке к текущему документузначение
dowload - ссылка сразу предлагает скачать файл
- Аттрибуты:
src = - Путь к графическому файлу.файл
align = - Определяет как рисунок будет выравниваться по вертикали или способ обтекания текстом справа/слеваbottom/left/middle/right/top
alt = - текст отображаемый при невозможности отобразить изображениятекст
border = - Толщина рамки вокруг изображения.число
longdesc = - Указывает адрес документа, где содержится аннотация к картинке.файл
hspace = - Горизонтальный отступ от изображения до окружающего контента.число
vspace = - Вертикальный отступ от изображения до окружающего контента.число
width = - Ширина изображения.число
height = - Высота изображения.число
usemap = - Ссылка на тег MAP с аттрибутом NAME="имя", содержащий координаты для клиентской карты-изображения#имя
ismap - Говорит браузеру, что картинка является серверной картой-изображением.
- Аттрибуты:
name = - идентификация карты для подключения к изображению IMGимя
- Аттрибуты:
href = - адрес файла для выполнения/перехода внутри контейнера контент подчеркиваетсяфайл
accesskey = - выбор ссылки при нажатии клавишисимвол
hreflang = - указание кода языка на который установлена ссылкаязык
alt = - всплывающая подсказкатекст
nohref - отключает переход по ссылкеtabindex = - установка номера очередности при переходе клавишей TABчисло
target = - установка имени окна в котором откроется ссылкаимя
type = - MIME-тип документа по ссылкеMIME-тип
shape = - установка формы областиcircle/default/poly/rect
coords = - установка координат для области (rect-x1,y1,x2,y2 circle-x,y,r poly-x1,y1,...)N1,N2,...
Тэги форматирования текста
- Атрибуты:
datetime = - в формате ISOдата
Тэги формы и элементов ввода - продолжают строку, по умолчанию занимают ширину и высоту контента
- Аттрибуты:
accept-charset = - установка кодировки в которой сервер обрабатывает данные (Windows-1251 / UTF-8 ), если она отлична от установленнойкодировка
action = - запускаемый сайт/файл/email при нажатии клавиши SUBMIT или выполнении ф-ии элемента SUBMIT()URL
autocomplete = - запоминание введенных значений в текстовых полях, но это может быть отключено в браузереon / off
method = - метод передачи данных формы : GET - (ум)данные добавляются к адресу запроса(до 4кб), POSTМетод
name = имя формы по которому в javascript можно обращаться к форме и элементамимя
target = - место отображения полученного результата (сайта): _blank-новое окно/ _self-текущее окно/_parent-родительский фрейм/_top-вместо фрейма в текущее окно/имя фрейма или окнаМесто
enctype = - application/x-www-form-urlencoded - кодирование символов/ multipart/form-data - не кодирование(передача файлов), text/plain - кодируются только пробелыкодирование
novalidate - отключить браузерную проверку элементов на валидность (элемннты input с type="email" или "url" или при атрибутах pattern или required)
- Атрибуты:
disabled - отключает доступ ко всем элементам, делает их блеклым цветомform = - привязка всех элементов в форме с id="имя"имя
title = - подсказка появляется над всей формойтекст
color
Индивидуальные аттрибуты:
accept = - установка фильтра выбираемых файлов (например audio/*,image/*,image/jpeg,image/png,video/*)MIME-тип
Индивидуальные аттрибуты:
src = - загружаемый файл изораженияфайл изоражения
alt = - текст отображаемый при невозможности загрузить данные файлатекст
align = - выравнивание изображения относительно остального текстаbottom / left / middle / right / top
border = - толщина рамки вокруг изображениячисло
Индивидуальные аттрибуты:
cols = - число символов определяет ширину полячисло
rows = - число строк определяет высоту полячисло
wrap = - режим переноса слов:soft-перенос автоматический а сохраняются только ENTER, hard - сохраняются любые преносы, off-без переносовsoft / hard / off
keytype = - способ шифрования данныхrsa/dsa/ec
challenge = - маркерная строка передается вместе с данными для последующего распознавания ключастрока
name = - имя передает открытый ключ на серверимя
Глобальные аттрибуты элементов формы:
form = - если элемент за пределами формы - привязка элемента к формеID-имя формы
autofocus - первый фокус устанавливаемый при загрузке страницы (единственный)tabindex = - номер порядка обхода фокуса принажатии TAB(-1 - фокус не устанавливается)число
placeholder = - текст в текстовом элементе оторажаемый серым только при пустом значениитекст
disabled - элемент оторажаемый серым и не может получить фокусreadonly - текстовый элемент доступен но изменить значение нельзяrequired - элемент не проходит валидность (не отправляется на сервер) при пустом текстовом полеpattern = - элемент не проходит валидность (не отправляется на сервер) при несоответствии текста регулярному выражениюрегулярное выражение
min = - минимальное возможное числовое значениечисло
max = - максимальное возможное числовое значениечисло
step = - минимальный шаг приращения числового значениячисло
size = - число символов текстового поля которые определяют его ширину, для select это количество видимых опцийчисло
maxlength = - число символов разрешенное вводить в текстовое полечисло
checked - установка выделеного элемента при начальной загрузке страницы (radio, checkbox, select)list = - привязка текстовому полю списка для выбораID списка DATALIST
value = - начальное значение для поля или надпись на кнопкезначение
multiple - возможность вводить/выбирать несколько значений (серверу - массив)autocomplete = - авто-заполнение полей (но может быть отключено в браузере)on / off
spellcheck - авто-проверка грамматики текстовых полей
Дополнительные тэги формы
Специальные символы
| Символ | Код | Описание |
|---|---|---|
|   | Неразрывный пробел | |
|     | Пробел шириной буквы n | |
|     | Широкий пробел шириной буквы m | |
| – | – – | Тире |
| — | — — | Широкое тире |
| & | & & | Амперсант |
| × | × × | Умножить |
| ÷ | ÷ ÷ | Делить |
| < | < < | Меньше |
| > | > > | Больше |
| − | − − | Минус |
| ≡ | ≡ ≡ | Тождественно |
| ☰ | ☰ | Триграмма |
| ✓ | ✓ | Галочка |
| ✔ | ✔ | Галочка |
| 🗸 | 🗸 | Галочка |
| ✖ | ✖ | Крест |
| ✗ | ✗ | Крест |
| ✘ | ✘ | Крест |
| ▲ | ▲ | Треугольник вверх |
| ▼ | ▼ | Треугольник вниз |
| ► | ► | Треугольник вправо |
| ◄ | ◄ | Треугольник влево |
| … | … … | Многоточие |
| ✉ | ✉ | Письмо |
| ↺ | ↺ | Разворот |
| ↻ | ↻ | Разворот |
| ₴ | ₴ | Гривна |
| ☎ | ☎ | Телефон |
| ☏ | ☏ | Телефон |
| ✆ | ✆ | Телефон |
| ✎ | ✎ | Карандаш |
| ✒ | ✒ | Перо |
| ☁ | ☁ | Облако |
| ∧ | ∧ ∧ | and |
| ∨ | ∨ ∨ | or |
Специальные тэги - загружают ресурсы и обрабатывают их
- Аттрибуты :
align - Определяет как объект будет выравниваться на странице и способ его обтекания текстом.width - Ширина объекта.height - Высота объекта.hidden - Указывает, скрыть объект на странице или нет.hspace - Горизонтальный отступ от объекта до окружающего контента.vspace - Вертикальный отступ от объекта до окружающего контента.pluginspage - Адрес страницы в Интернете, откуда можно скачать и установить плагин к браузеру.src - Путь к файлу.type - MIME-тип объекта.
(например
- Аттрибуты :
align - Определяет как объект будет выравниваться на странице и способ его обтекания текстом.width - Ширина объекта.height - Высота объекта.hidden - Указывает, скрыть объект на странице или нет.hspace - Горизонтальный отступ от объекта до окружающего контента.vspace - Вертикальный отступ от объекта до окружающего контента.classid - Адрес программы (приложения или плагина), которая работает с данным объектом, и будет запускать его.data - Путь к файлу.type - MIME-тип объекта.archive - Устанавливает путь к файлам, необходимым для работы объекта.code - Имя объекта для его выполнения.codebase - Путь к папке с объектом, который указан атрибутом code или classid.codetype - Указывает на тип объекта, который задан атрибутом classid.
(C)
Атрибуты:
open= - по умолчанию текст уже открытopen
кнопка распахивания SUMMARY
Другой текст и блоки после блока SUMMARY- Аттрибуты :
align = - Определяет как фрейм будет выравниваться по краю, а также способ обтекания его текстом.absmiddle | baseline | bottom(ум) | left | middle | right | texttop | top
width = - Ширина фрейма в пикселах или процентах родителя/окна браузерачисло / %
height = - Высота фрейма.число / %
hspace = - Горизонтальный отступ от фрейма до окружающего контента.число
vspace = - Вертикальный отступ от фрейма до окружающего контента.число
allowtransparency - (MS) Устанавливает прозрачный фон фрейма, через который виден фон страницы.frameborder = - Устанавливает, отображать границу вокруг фрейма или нет.число / yes / no
marginheight = - Отступ сверху и снизу от содержания до границы фрейма.число
marginwidth = - Отступ слева и справа от содержания до границы фрейма.число
name = - Имя фрейма для последующего примененияимя
sandbox = - Позволяет задать ряд ограничений на контент загружаемый во фрейме.пусто || allow-same-origin || allow-top-navigation || allow-forms || allow-scripts"
scrolling = - Способ отображения полосы прокрутки во фрейме.auto(ум) | no | yes
seamless - Определяет, что содержимое фрейма должно отображаться так, словно оно является частью документа.src = - Путь к файлу, содержимое которого будет загружаться во фрейм.файл
srcdoc = - в фрейме отображает документ непосредственно из атрибутаhtml-текст
- Атрибуты
border = - Толщина границы между фреймами.число
bordercolor = - Цвет линии границы.цвет
cols = - Устанавливает ширину или пропорции каждого фрейма в виде колонок через запятуючисло / % / *
frameborder = - Определяет, отображать рамку вокруг фрейма или нет.число / yes / no
framespacing = - Аналог атрибута border, задает ширину границы.число
rows = - Задает размер или пропорции каждого фрейма в виде строк через запятуючисло / %/ *
- Атрибуты
bordercolor = - Цвет линии границы.цвет
frameborder = - Отображать рамку вокруг фрейма или нет.0 / 1
name = - Задает уникальное имя фрейма.имя
noresize - запрет изменять размер фрейма пользователю,если его нет - можноscrolling = - Способ отображения полосы прокрутки во фрейме.auto(ум) | no | yes
src = - Путь к файлу, предназначенному для загрузки во фрейме.файл
- Атрибуты
value = - Устанавливает текущее значение. Обязательный атрибут.число
min = - Задает минимально возможное значение.число
max = - Задает максимально возможное значение.число
low = - Определяет предел, при достижении которого значение считается низким. (меняет цвет)число
high = - Определяет предел, при достижении которого значение считается высоким. (меняет цвет)число
optimum = - Определяет наилучшее или оптимальное значение.число
- Атрибуты
value = - Устанавливает текущее значение. Обязательный атрибут.число
max = - Задает максимально возможное значение.число
Индивидуальные аттрибуты:
controls - отображение стандартной панели управленияautoplay - авто-воспроизведение файлаloop - непрерывный цикл воспроизведенияpreload= - загрузка файла выполняется сразу/только данные о файле(длительность)/не выполняетсяauto/metadata/none
muted - звук отключенmediagroup - группировкаsrc= - подключение ресурса (при отсутствии тэга SOURCE)файл
type= - указание MEMO-типа ресурса (при отсутствии тэга SOURCE)audio/mp3
src= - подключение ресурсафайл
type= - указание MEMO-типа ресурса, по умолчанию - определяется автоматически брайзером (audio/mpeg, audio/ogg;codecs=vorbis, audio/wav, audio/AAC)audio/mp3
Индивидуальные аттрибуты:
controls - отображение стандартной панели управленияautoplay - авто-воспроизведение файлаloop - непрерывный цикл воспроизведенияpreload= - загрузка файла выполняется сразу/только данные о файле(длительность)/не выполняетсяauto/metadata/none
muted - звук отключенmediagroup - группировкаposter = - изображение как постерфайл
width = - Ширина экрана в пикселах или процентах родителя/окна браузерачисло / %
height = - Высота экрана.число / %
src= - подключение ресурса (при отсутствии тэга SOURCE)файл
type= - указание MEMO-типа ресурса (при отсутствии тэга SOURCE)video/mp4
src= - подключение ресурсафайл
type= - указание MEMO-типа ресурса, по умолчанию - определяется автоматически брайзером (video/ogg;codecs="theora, vorbis", video/mp4;codecs="avc1.42E01E,mp4a.40.2", video/webm;codecs="vp8,vorbis")video/mp4
kind= - тип ресурса (subtitles(субтитры)/captions(субтитры всех звуков)/descriptions(звуковое описание изображения)/chapters(список глав)/metadata(метаданные для скриптов))тип
src= - подключение файла ресурсафайл
srclang= - язык подключаемого ресурса (en / ru / uk)язык
label= - название ресурса, если не указать - untitled1имя
default - установка именно этой дорожки по умолчанию среди остальных
- Атрибуты
width= - ширинаW-число
height= высотаH-число
Тэги SVG-рисования
- Атрибуты
width= - ширинаW-число
height= высотаH-число
viewBox= - масштабирование холстаx1 y1 x2 y2
preserveAspectRatio= [xMinYMax] meet(видим)/slice(обрезан)/none(масштабирует)
- SVG-ФИГУРЫ
LINE ../LINE - нарисовать линию
x1="" y1="" - координата начальной точки
x2="" y2="" - координата конечной точкиRECT ../RECT - нарисовать прямоугольник
x="" y="" - координата начальной точки (правого левого угла)
width="" height="" - ширина и высота
rx="" ry="" - если применяется, закругляет углы радиусами по оси X и YCIRCLE ../CIRCLE - нарисовать круг
cx="" cy="" - координата цетра круга
r="" - радиус кругаELLIPSE ../ELLIPSE - нарисовать эллипс
cx="" cy="" - координата цетра эллипса
rx="" ry="" - радиусы эллипса по осям X и YPOLYLINE ../POLYLINE - нарисовать ломанную линию по координатам
points="" - абсолютные координаты точек (пары через пробел) ломаной перчисляются через запятуюPOLYGON ../POLYGON - нарисовать площадь по ломаной линии
points="" - - абсолютные координаты точек (пары через запятую) ломаной перчисляются через пробел (наоборот от POLYLINE)PATH ../PATH - произвольная фигура/траектория нарисована линиями,дугами,точками,кругами
d="" - алгоритм рисования точек, линий, дуг в одной строке через пробелКомманды для формирования траекторииM x y илиm dx dy - перемещение курсора на абсолютную/относительную координату x,y или dx,dyL x y илиl dx dy - линия нарисована к абсолютной/относительной координате x,y или dx,dyH x илиh dx - горизонтальная линия нарисована к абсолютной/относительной координате x или dxV y илиv dy - вертикальная линия нарисована к абсолютной/относительной координате y или dyZ илиz - прямая линия нарисована к точке начала пути, команды Z и z одинаковыC x1 y1, x2 y2, x y илиc dx1 dy1, dx2 dy2, dx dy - кубическая кривая безье построена по абсолютным/относительным координатам: x,y или dx,dy - конечная точка, первые две координаты - контрольные точкиS x2 y2, x y илиs dx2 dy2, dx dy - сокращенная кубическая кривая безье (следует после C или c) построена по абсолютным/относительным координатам: x,y или dx,dy - конечная точка, первые координата пропущена (взята из предыдущей кривой), вторая - вторая контрольная точкаQ x1 y1, x y илиq dx1 dy1, dx dy - квадратичная кривая безье построена по абсолютным/относительным координатам: x,y или dx,dy - конечная точка, вторая координата - контрольная точкаT x y илиt dx dy - сокращенная квадратичная кривая безье (следует после Q или q) построена по абсолютным/относительным координатам: x,y или dx,dy - конечная точка, контрольная точка пропущена (взята из предыдущей кривой)A rx ry grad flag_180 flag_napr x y илиa rx ry grad flag_180 flag_napr dx dy - элипсоидная кривая построена по абсолютным/относительным координатам: x,y или dx,dy - конечная точка, первые два радиуса эллипса, 3-й - угол поворота (от -180 до 180 градусов), 4-й флаг выбора сектора больше/меньше 180 градусов (0/1), 5-й флаг выбора направления траектории по/против ч.стрелки (0/1)
TEXT /TEXT - написать текст в указанной точке без BR-переносов
x="" y="" - левая-верхняя координата начала рисования
dx dy
rotate
textLength
lengthAdjust
font-size="" - размер шрифта
TSPAN текст/TSPAN - дополнительный строчный блок внутри TEXT (может иметь свои координаты X и Y и стили)
textPath текст/textPath - рисует текст вдоль привязанной траектории PATH
xlink:href = - привязка траектории по ее ID#id_имя
startOffset = - точка начала записи текста от начала траекторииN%
IMAGE ../IMAGE - отобразить рисунок / SVG-фигуру (указать #ID_svg)
x="" y="" - левая-верхняя точка начала рисования изображения
width="" height="" - ширина и высота изображения
xlink:href="" - адрес изображенияUSE /USE - повторное отображение SVG-фигуры/изображения и применение к ней общих аттриутов
xlink:href= - ссылка на готовую SVG-фигуру#ID-имя
x="" y="" - левая-верхняя точка начала рисования фигуры
width="" height="" - ширина и высота фигуры
G ..SVG-элементы../G - объединение элементов и применение к ним общих аттриутов
DEFS ..SVG-элементы../DEFS - контейнер отменяет отображение, но позволяет применять аттрибуты (по ID каждый SVG-элемент применяют в других)
SYMBOL ..SVG-элементы../SYMBOL - контейнер отменяет отображение, но позволяет применять аттрибуты, по его ID применяют в других как единая SVG-фигура
viewBox= - масштабирование холстаx1 y1 x2 y2
preserveAspectRatio= [xMinYMax] meet(видим)/slice(обрезан)/none(масштабирует)
A SVG-элементы/A - фигура становится простой ссылкой
xlink:href= - ссылка на сайтфайл
marker ..SVG-элементы../marker - контейнер для рисования конца линии (обычно стрелки), применив на линиях аттрибутmarker-end= url(#ID-имя)
viewBox= - масштабирование холстаx1 y1 x2 y2
refX= 1
refY= 5
markerWidth= 6
markerHeight= 6
orient= auto
markerUnits mask ..SVG-элементы../mask - контейнер для создания маски(трафарета) из внедренных фигур, применив в других фигурах/надписях аттрибутmask= url(#ID-имя)
viewBox= - масштабирование холстаx1 y1 x2 y2
maskUnits= userSpaceOnUse
x= 0
y= 0
width= 200
height= 80
maskContentUnits clipPath ..SVG-элементы../clipPath - контейнер для создания маски(трафарета) из внедренных фигур, применив в других фигурах/надписях аттрибутclip-path= url(#ID-имя)
filter ..SVG-фильтры../filter - контейнер для создания комплекса внедренных фильтров, применив в других фигурах/надписях аттрибутfilter= url(#ID-имя)
pattern ..SVG-элементы../pattern - контейнер для создания повторяющегося картинок из внедренных фигур, применив в других фигурах как фон - аттрибутfill= url(#ID-имя)
patternUnits
patternContentUnits
patternTransform
x
y
width
height
xlink:href - связь с другим pattern
preserveAspectRatio switch ..SVG-элементы../switch - контейнер содержит нескольно одинаковых элементов,а применяется один в соответствии их атрибута e requiredFeatures/requiredExtensions/systemLanguage
linearGradient STOP-цвета/linearGradient - линейный градиент с именем, для указания вместо цвета заливки -fill= url(#ID-имя)
gradientUnits
gradientTransform
x1= число 0-1/%
y1= - координата начала градиента для определения направлениячисло 0-1/%
x2= число 0-1/%
y2= - координата конца градиента для определения направлениячисло 0-1/%
spreadMethod -pad/reflect/repeat
xlink:href= - связь с другим градиентом в котором есть цвета#id
stop offset="0%" stop-color=""></stop - установка цветов от 0%offset= число 0-1/%
stop-color цвет
stop-opacity число 0-1
stop offset="100%" stop-color=""></stop - изменения цветов до 100%
radialGradient STOP-цвета/radialGradient - радиальный градиент с именем, для указания вместо цвета заливки -fill= url(#ID-имя)
gradientUnits = userSpaceOnUse/objectBoundingBox(ум)
gradientTransform="функция трансформации"
cx= число 0-1/%
cy= - координата центра круга градиентачисло 0-1/%
r= - радиус/размер градиентачисло 0-1/%
fx= число 0-1/%
fy= - координата смешенного центра распространения градиентачисло 0-1/%
fr= число 0-1/%
spreadMethod pad/reflect/repeat
xlink:href получение аттрибутор от другого градиентаstop offset="0%" stop-color=""></stop - установка цветов от 0%stop offset="100%" stop-color=""></stop - изменения цветов до 100%
animate /animate - внедряемый элемент в фигуру для изменения одного (числового/цветового) параметра от начального до конечного
attributeName= - указание аттрибута для анимацииимя_аттрибута
attributeType= - тип аттрибутаauto/CSS
from = начальное значение аттрибутазначение
to = конечное значение аттрибутазначение
by
dur= = длительность анимации (N s)время
repeatCount= - количество повторений/бесконечноN/indefinite
begin= - условие/событие начала анимации клик/время/время после клика/время после начала другой анимации/время после M повторений другой анимации, начал может быль несколько через ;click/N s/click + N s/id-аним.begin + N s/id-аним.repeat(M) + N s
end="" - признак окончания анимации (подобно begin)
fill= замораживание состояния после анимацииfreeze
xlink:href= - ссылка на фигуру анимации, когда анимация не внедренаid-имя
restart= - условие перезагрузки анимации всегда/после завершения/никогдаalways/whenNotActive/never
repeatDur= - указание время окончания (если бесконечное повтрение)01:30
values= - перечисление по-кадровых значение аттрибута (from,to,by - не используют)50; 490; 350; 450
keyTimes= - перечисление времени каждого кадра0; 0.5; 0.8; 1
calcMode= - функция темпа линейная/мгновенная/как линейная нормирует время/интерполяцияlinear(ум)/discrete/paced/spline
keySplines = - для каждого временного интервала - контрольные точки кривой Безье (при calcMode=spline)n n n n;...
additive = - значения from и to заменяет/добавляютя к текущему значению аттрибутаreplace(ум)/sum
accumulate= - признак накопления сумирования с каждым повторениемnone/sum
min/max = - выравнивание длительности под эти значениявремя
animateColor /animateColor - внедряемый элемент в фигуру для изменения цвета от начального до конечного (устарел - вместо него animate)
by
from
to
xlink:href= - ссылка на фигуру анимации, когда анимация не внедренаid-имя
animateMotion /animateMotion - внедряемый элемент в фигуру для перемещения всей фигуры по указанной праектории (ее можно внедрить элементом mpath )
calcMode
path указание траектории движения (всегда начинается с M0,0)
values="" - перемещение по координатам
keyPoints - скорость перемещения по траектории по времени keyTimes (числа 0-1)
rotate="auto/auto-reverse/угол" - поворот по направлению движения
origin
xlink:href= - ссылка на фигуру анимации, когда анимация не внедренаid-имя
mpath /mpath - специальный элемент для внедрения в animateMotion траектории
xlink:href= - ссылка на траекториюID-имя
animateTransform /animateTransform - внедряемый элемент в фигуру для изменения значения функции трансформации от начального до конечного
by
from набор начальных значений функции
to набор конечных значений функции
type= функция трансформации над которой выполняется анимацияtranslate/scale/rotate/skewX/skewY
xlink:href= - ссылка на фигуру анимации, когда анимация не внедренаid-имя
set /set - внедряемый элемент в фигуру для мгновенного изменения одного параметра на определенное время
attributeName - Определяет имя атрибута.
attributeType - Определяет тип атрибута.
to - новое значение аттрибута
begin - Определяет событие начала анимации.
end - Определяет событие конца анимации.
min - Определяет минимальное значение при котором анимация может быть активной.
max - Определяет максимальное значение при котором анимация может быть активной.
restart - Отвечает за перезагрузку анимации.
repeatDur - Указывает общую продолжительность анимации.
repeatCount - Определяет количество повторений анимации.
fill - Дает возможность оставить эффект от анимации.
calcMode - Задает режим интерполяции для анимации.
dur - Определяет продолжительность анимации
xlink:href= - ссылка на фигуру анимации, когда анимация не внедренаid-имя
feBlend - фильтр для комбинирования изображенийin="цель1 фильтра" - SourceGraphic | SourceAlpha |BackgroundImage | BackgroundAlpha | FillPaint | StrokePaint |
in2="цель1 фильтра" - f-имя объекта для выполнения комбинации изображений
mode="normal|multiply|screen|darken|lighten" - способ комбинацииfeColorMatrix - фильтр для преобразования цветов RGBA result="matrixOut" - f-имя фильтра (применяется в других фильтрах)
in="offOut" - цель применения фильтра
type="matrix/saturate/hueRotate/luminanceToAlpha/" - тип формирования матрицы цвета
values="n1 n2 ..." - значения матрицы через пробедfeComponentTransfer - покомпонентное переназначение данныхfeFuncA - Суб-элемент feComponentTransfer type="identity/table/linear/gamma"
tableValues="0 0 1 1"
slope="0.5"
intercept="0.25"
amplitude="4"
exponent="7"
offset="0"feFuncB - Суб-элемент feComponentTransferfeFuncG - Суб-элемент feComponentTransferfeFuncR - Суб-элемент feComponentTransferfeComposite - result=k1*i1*i2+k2*i1+k3*i2+k4 in
in2
operator="over, in, atop, out, xor , lighter,arithmetic."
k1
k2
k3
k4
feConvolveMatrix in
order
kernelMatrix
divisor
bias
targetX
targetY
edgeMode
kernelUnitLength
preserveAlphafeDiffuseLighting in
surfaceScale
diffuseConstant
kernelUnitLengthfeDistantLight - фильтр Определяет источник света azimuth="240"
elevation="20"fePointLight - фильтр для освещения x="150"
y="60"
z="20"feSpotLight - фильтр для освещения x="360"
y="5"
z="30"
limitingConeAngle="20"
pointsAtX="390"
pointsAtY="80"
pointsAtZ="0"feDisplacementMap in
in2
scale
xChannelSelector
yChannelSelectorfeFlood - заливка цветом фигуры в пределах прямоугольника result="floodFill" - f-имя фильтра (применяется в других фильтрах)
x="0"
y="0"
width="100%"
height="100%"
flood-color="green" - цвет
flood-opacity="1" - прозрачностьfeGaussianBlur - фильтр создания эффекта размытия result="blurOut"
in="SourceGraphic/offOut" размытие для собственного/ элемента
stdDeviation="15" - количество размытия
edgeModefeImage - заполняет фигуру изображением preserveAspectRatio
xlink:hreffeMerge - Создает слои изображения друг на другаfeMergeNode - Суб-элемент feMerge infeMorphology - Выполняет "fattening" или "thinning" на исходном графике in
operator="erode/dilate/"
radius="число"feOffset - фильтр для создания копии фигуры со сдвигом (теней ) result="offOut"
in="SourceGraphic/SourceAlpha"
dx="20"
dy="20"feSpecularLighting in
surfaceScale
specularConstant
specularExponent
kernelUnitLengthfeTile - закрашивание фигуры повторением изображения (подобно pattern) infeTurbulence - эффект разбрызгивания красок при раскрутке seed
stitchTiles
type="turbulence"
baseFrequency="0.05"
numOctaves="2"- Аттрибуты применяемые для отного или группы элементов
style= - установка стилей линийSVG-стиль
stroke-width= - толщина линий,контуровN
stroke= - цвет линий,контуровцвет
fill= - цвет заливкицвет
fill-rule= - при пересечении собственных границ - участки не заливаются/заливаютсяevenodd/nonzero
fill-opacity= - прозрачность заливкичисло 0-1
stroke-dasharray= - пунктирная линия парами: линия,разрывN1, N2,...
stroke-dashoffset="" - смещение для первого штриха при stroke-dasharray
stroke-opacity= - прозрачность линиичисло 0-1
stroke-linecap= - форма краев линии: обрезан/квадрат на конце/закругляется на концеbutt/square/round
stroke-linejoin= - соединение отрезков: уднинение угла/округление/обрезаниеmiter/round/bevel
stroke-miterlimit= -число
transform= - функции трансформации через запятую или пробелфункции
- translate(dx [dy]) - смещение фигуры по осям X и Y
- scale(s) или scale(sx sy) - коэффициент изменения размера общий/по осям
- rotate(grad [x y]) - поворот фигуры наугол grad относительно точки с координатами 0,0 / x,y
- skewX(grad) или skewY(grad) - наклон фигуры по оси X или Y
- matrix(a b c d e f) - матрица всех трансформаций
filter= - создание для элемента фильтраurl(#id-фильтра)
font-family= - имя_шрифтаимя_шрифта
font-size= - размерN
font-style= - стиль_шрифтастиль_шрифта
font-weight= - жирность_шрифтажирность_шрифта
rotate= - установка углов поворота каждого символа текста (пляска)N1,N2,N3,N4...
textLength= - длина строки (увеличить зазор между символами)N
lengthAdjust = - режим растягивания:spacingAndGlyphs тянуть символыspacing/spacingAndGlyphs
kerning= - интервал между символамиauto / N
letter-spacing= - дополнительный интервал символовnormal/N
word-spacing= - интервал между словамиnormal/N
text-decoration= - черта под/над/через текстunderline/overline/line-through
SVG-КОНТЕЙНЕРЫ
SVG-ГРАДИЕНТЫ
SVG-АНИМАЦИИ
SVG-ФИЛЬТРЫ
(FF)
- Спец-символы для отображения формул
- ± - ± знак плюс-минус
- ⁢ - небольшой пробел запрещающий перенос (заменяет знак умножения)
- ∫ - ∫ знак интеграла
- ∑ - ∑ знак суммы
- ∞ - ∞ знак бесконечности
-   - широкий пробел
- ⅆ - ⅆ
- ∩ - ∩ знак множества
- π - π число пи
- ⅇ - ⅇ число е
- γ - γ число гамма
-
Формулы Presentation - отображение
mn число/mn - контейнер чиселmi имя_переменной/mi - контейнер переменнойmo +-*/=,±/mo - контейнер знака операции между двумя значениямиms текст/ms илиmtext текст/mtext - контейнер текстаmspace - пробелmsup эл1 эл2/msup - контейнер для 2-х элементов: знач1 в степени (верхний индекс уменьшенный) знач2msub эл1 эл2/msup - контейнер для 2-х элементов: знач1 c индексом (нижний индекс уменьшенный) знач2mfrac эл1 эл2/mfrac - контейнер для 2-х элементов дроби: эл1 вверху, эл2 внизу- linethickness - толщина линии
- bevelled - начертание прямое/слэшевое
msqrt набор элементов/msqrt - контейнер для квадратного корняmroot эл1 эл2/mroot - контейнер для 2-х элементов: знач1 cодержимое, знач2 основание корняmfenced набор элементов/mfenced - контейнер заключает элементы в скобки- open="([|{" - установка вида скобки
- close=")]|}" - установка вида скобки
munderover эл1 эл2 эл3/munderover - контейнер для 3-х элементов:1-базовый, 2-индекс под базовым, 3-индекс над базовымmunder эл1 эл2/munder - контейнер для 2-х элементов:1-базовый, 2-индекс под базовымmover эл1 эл2/mover - контейнер для 2-х элементов:1-базовый, 2-индекс над базовымmrow набор элементов/mrow - контейнер для выравнивания в одну линию,заменяет один элементmtable набор строк матр/mtable - контейнер для матрицы: строки mtr содержат элементы mtdmtr набор эл матр/mtr - контейнер для строк матрицы: содержат элементы mtdmd набор эл/mtd - контейнер для элементов матрицы
-
Формулы Content - содержание (применяется только для машинных вычислений)
cn число/cn - контейнер чисел- type="real(ум)/integer/double/hexdouble/e-notation/rational/complex-cartesian/complex-polar/constant/text" - тип числа
- base - основание системы счисления
ci имя_переменной/ci - контейнер переменной- type="real(ум)/integer/double/hexdouble/e-notation/rational/complex-cartesian/complex-polar/constant/text" - тип числа
cs строка/cs - контейнер для строкsep/ - знак разделения для одного числа (рациональное- дробь, комплексное)csymbol definitionURL="адрес" /csymbol - симводы загружаемые с другова документаapply ф-я эл1 эл2 ../apply - контейнер для установки 1-функции с 2,3,..-аргументамиtimes/ - функция умножения для N аргументовplus/ - функция сложения для N аргументовint/ - интеграл требует дополнительных элементов:bvar эл_перем/bvar - переменная интегрированияlowlimit эл_число/lowlimit - нижний предел интегрированияuplimit эл_число/uplimit - верхний предел интегрирования
power/ - функция возведения в степень требует 2-х элементов: 1-основное, 2-степеньsin/ - функция синуса требует 1-н элементlambda набор эл/lambda - контейнер для создание формулы, сребует эл_bvar и эл_apply с ф-ейdeclare набор эл/declare - контейнер для создание переменной (1-й эл), ассоциируемой с контейнером (2-й эл) содержащим набор других эл
-
Объединение 2-х вариантов
semantics элементы MathML/semantics - содержит один вариант как основной, после - элannotation-xml в виде аннотацииannotation-xml элементы MathML/annotation-xml - создание аннотации к основному содержимому- encoding="MathML-Content" - установка типа аннотации
- encoding="MathML-Presentation" - установка типа аннотации
- в аттрибуте STYLE тэга:
ТЭГ style="свойство: (вес - 1000) или в свойстве объекта javascript-элементазначение .."об_эл.style.свойство - в тэге STYLE применяя поиск нужного тэга селектором:
STYLE селектор {свойство: ..}..значение /STYLE - в файле *.css подключенном тэгом LINK:
LINK type="text/css" src="файл.css" media="..." ../LINK
Селекторы - способ отбора элементов (подобие поиска)
Любое значение свойства после которого установлено !important умножает вес в 10000* - (вес - 0) все тэги документа (тот же эффект если не указавать тэг)тэг - (вес - 1) все тэги "тэг" документа
#имя_id - (вес - 100) один любой тэг документа имеющий аттрибут id="имя_id"[имя_аттриб] - (вес - 10) все тэги документа имеющие аттрибут имя_аттриб независимо от значения[имя_аттриб="значен_аттриб"] - (вес - 10) все тэги документа имеющие аттрибут имя_аттриб полностью совпадающий с значением[имя_аттриб^="часть_значен"] - (вес - 10) все тэги документа имеющие аттрибут имя_аттриб начинающийся с указанного значения[имя_аттриб$="часть_значен"] - (вес - 10) все тэги документа имеющие аттрибут имя_аттриб заканчивающийся указанным значением[имя_аттриб*="часть_значен"] - (вес - 10) все тэги документа имеющие аттрибут имя_аттриб содержащий часть значения в любом месте[имя_аттриб~="часть_значен"] - (вес - 10) все тэги документа имеющие аттрибут имя_аттриб содержащий часть значения в любом месте, но отделен пробелами[имя_аттриб|="часть_значен"] - (вес - 10) все тэги документа имеющие аттрибут имя_аттриб содержащий начальную часть значения, но отделен дефисом.имя_класса - (вес - 10) один любой тэг документа имеющий аттрибут class и содержит подстроку "имя_класса" выделенную пробелами
Псевдоклассы - (вес - 10) дополнительная фильтрация элементов
- Псевдоклассы гиперссылок :
A :link - не посещенная гиперссылка:active - гиперссылка при нажатии мышкой:visited - посещенная гиперссылка
- Псевдоклассы у элементов форм
:checked - элементы checkbox,radio когда они выбраны
:indeterminate - элементы checkbox,radio когда они внеопределенном состоянии (специальный режим)
:default - значение одного элемента группы установленное по умолчанию (оно выбирается при нажатии Enter)
:disabled - заблокированый элемент:enabled - не заблокированый элемент
:focus - элемент получивший фокус
:invalid - элемент не прошедший проверку на валидность:valid - элемент прошедший проверку на валидность
:required - элемент имеющий аттрибут required (обязательное заполнение):optional - элемент не имеющий аттрибут required
:read-only - элемент имеющий аттрибут readonly (запрет изменений пользователем)(кроме FF):read-write - элемент не имеющий аттрибут readonly (кроме FF)
- Псевдоклассы для любых тэгов
:empty - любые тэги не имеющие внутри парного тэга ничего (даже пробела) или не парный тэг
:hover - тэг над которым расположен курсор мыши без нажатия кнопки
:lang(код_языка) - стиль для тэгов которые соответствуют указаному языку: ru — русский; en — английский ; de — немецкий; fr — французский; it — итальянский (устанавливается:тэгу - аттрибутом lang="код_языка",в xml - аттрибутом xml:lang="код_языка", в документе - атрибут charset тега )
:not(селектор) - тэги указанные слева у которых не соответствует 2-е условие "селектор"
:root - корневой тэг(тэг HTML):target - стиль тэга имеющий аттрибут id="имя_id" и он отображен в аддресной строке браузера (href="..#имя_id")
- Псевдоклассы иерархической структуры
:first-of-type - тэги выбранного типа из полученного списка являющиеся первыми для своего родителя
:last-of-type - тэги выбранного типа из полученного списка являющиеся последними для своего родителя
:only-of-type - стиль для тэга, если такой тип у родителя единственный
:nth-of-type(порядок) - стиль для тэга(ов) выбранного типа, пересчитанный у родителя с начала, выбираемый по порядку: N-число - один N-й тэг,N-числоn - каждый N-й тэг,N-числоn + M-число - каждый N-й+M тэг,odd - все не четные,even - все четные
:nth-last-of-type(порядок) - стиль для тэга(ов) выбранного типа, пересчитанный у родителя с конца, выбираемый по порядку: N-число - один N-й тэг,N-числоn - каждый N-й тэг,N-числоn + M-число - каждый N-й+M тэг,odd - все не четные,even - все четные:first-child - из выбранных тэгов выбирается тэг который первый у его родителя независимо от типа
:last-child - из выбранных тэгов выбирается тэг который последний у его родителя независимо от типа
:only-child - из выбранных тэгов выбирается тэг который единственный у его родителя независимо от типа
:nth-child(порядок) - стиль для тэга(ов) всех типов, пересчитанный у родителя с начала, выбираемый по порядку: N-число - один N-й тэг,N-числоn - каждый N-й тэг,N-числоn + M-число - каждый N-й+M тэг,odd - все не четные,even - все четные
:nth-last-child(порядок) - стиль для тэга(ов) всех типов, пересчитанный у родителя с конца, выбираемый по порядку: N-число - один N-й тэг,N-числоn - каждый N-й тэг,N-числоn + M-число - каждый N-й+M тэг,odd - все не четные,even - все четные
- Псевдоэлементы контента
:after /::after - применяют свойство content: для вставки после контента внутри выбранных тэгов
:before /::before - применяют свойство content: для вставки перед контентом внутри выбранных тэгов
:first-letter /::first-letter - стиль в блочном тэге для первой буквы текстового контента (меняют:шрифт,отступ,поля,граница,цвет)
:first-line /::first-line - стиль для первой строки текстового контента (меняют:шрифт,цвет)
::-moz-selection - (только FF)стиль для выделенной строки текстового контента (меняют:цвет)
Комбинация селекторов - дополнительная фильтрация элементов
сел1,сел2 - применение правил для тэгов выбранных сел1 или для тэгов сел2
сел1сел2 - применение правил для тэгов которые соответствуют одновременно двум условиям сел1 и сел2
сел1 сел2 - применение правил для тэгов сел2 вложенными в тэг сел1 не зависимо от уровня вложенности
сел1>сел2 - применение правил для тэгов сел2 непосредственно вложенными в тэг сел1
сел1~сел2 - применение правил для тэгов выбланных сел2 расположенный после сел1(текст и другие эл не в счет) и имеющие единого непосредственного родителя
сел1+сел2 - применение правил для тэгов выбланных сел2 расположенный непосредственно после сел1(текст не в счет) и имеющие единого непосредственного родителя
Свойства - параметры элементов
- Свойства отображения тэга (контент,поле контента,гроница,отступ)
- width, height:N%/Npx/Nem/Nex/none/inherit - величина ширины и высоты контента (относительная - % родителя, абсолютная)
- min-width, min-height, max-width, max-height:N%/Npx/Nem/Nex/none/inherit - нижнее/верхнее ограничение высоты/ширины при их вычислении
- box-sizing:content-box(ум)/border-box - вычисление высоты и ширины по контенту/границе
- padding[-top -left -right -bottom]:N%/Npx/Nem/Nex - поле от контента до границы через пробел 4(в п н л),3(в пл н),2(вн пл),1(все) значение, N% считается от ширины родителя
- border[-top -left -right -bottom][-width -style -color]: N%/px/em/ex/thin/medium/thick (толщина) none/hidden/solid/dashed/dotted/double/groove/ridge/inset/outset(форма) #число,слова(цвет) - установка цветной границы
- border[-top/bottom-left/right]-radius:N%/px/em/ex - через пробел 4(вл вп нп нл),3(вл вп+нл нп),2(вл+нп вп+нл),1(все) радиус(или рад1/рад2) закругления углов границы
- border-image: url(файл изображения рамки) размер_изобр(1,2,3,4 через пробел) размер_рамки(1,2,3,4 через слэш) stretch(масштабировать)/repeat(повторять и обрезать)/round(повторять цельными) (0,1,2 через пробел) - поверх обычной рамки создает рисованую рамку используя шаблон в виде картинки
- border-image-outset:Npx(1,2,3,4 через пробел) - сдвиг рисованой рамки наружу
- outline[-color -style -width]:цвет линия толщина - установка дополнительной цветной границы с наружи блока (не влияет на ширину блока)
- outline-offset:Npx - расстояние от границы до дополнительной границы
- margin[-top -left -right -bottom]:Npx - отступ от границ родителя и других тэгов через пробел 4(в п н л),3(в пл н),2(вн пл),1(все) значение, -N - отрицательное значение натягивает границу на соседние блоки
- background:attachment color image position repeat - закраска фона тэга, настройка значения чрез пробел, другая дополнительная настройка через запятую сисуется подниз
- background-color:цвет - установка однотонного цвета (ум-прозрачный)
- background-clip:border-box(ум)/padding-box/content-box - установка обрезки границы фона до рамки/поля/контента
- background-image:none(ум)/url(файл)/градиент - отмена или установка фоновых изображений (через запятую)
- background-attachment:fixed/scroll(ум)/local - (для изобр) фиксировано/прокручивание/прокручивание в зависимости от полос прокрутки
- background-position:left/center/right/N% top/center/bottom/N% - центрирование изображения по горизонтали, вертикали
- background-repeat:no-repeat/repeat(ум)/repeat-x/repeat-y/space(повторение с зазорами)/round(повторение с растягиванием) - повторение по горизонтали и/или вертикали
- background-size:auto(ум-с пропорцией)/cover(увеличение и врезка в блок)/contain(увеличение и вставка в блок)/N%/Npx - масштабирование (можно отдельно по горизонтали и вертикли)
- background-origin:border-box/padding-box(ум)/content-box - точка начала отсчета расположения изображения от границы/поля/контента(для каждого челез ,)
- opacity:0.-1. - установка уровня прозрачности всего тэга
- clip:auto/rect(y-верх,x-прав,Y-низ,X-лев) - (для абсолютных блоков) вырезание из блока прямоугольника, остальное прозрачно (координаты углов: правый-верхний и левый-нижний)
- clip-path:none / [граница] форма - (для абсолютных блоков) вырезание из блока любую фигуру, остальное прозрачно
- форма
- url(svg-путь) - форма ограничена path-путем файл.svg в SVG-файле или в svg-тэге #id_path
- circle([R] [at X Y]) - окружность [с центром в указанной точке]
- ellipse(R1 R2 [at X Y]) - эллипс
- inset(Ntop Nright Nbottom Nleft [round R R R R]) - прямоугольник [со скругленными углами]
- polygon(x1 y1, x2 y2,...) - произвольная форма граница
- fill-box -
- stroke-box -
- view-box -
- margin-box - отсечение ограничено отступами
- border-box - отсечение ограничено границей
- padding-box - отсечение ограничено краем полей
- content-box - отсечение ограничено контентом
- mask: url('svg-файл') [repeat] [position] [clip] [origin] [size] - универсальное св-во создания маски на блоке/изображении согласно файла маски (черное-прозрачно, белое-скрыто)
- mask-image: url('svg-файл')
mask-repeat -
mask-position -
mask-clip -
mask-origin -
mask-size - - mask-border: url('svg-файл') [repeat] [position] [clip] [origin] [size] - создание фигурных границ у блока/изображения
- object-fit: none/fill(ум)/contain/cover/scale-bown - заполнение содержимым эл. img, video не подгонять/по размеру блока/уменьшен с пропорциями/увеличен с пропорциями/наименьшее с пропорциями contain или свой размер
- object-position:X Y - точка привязки изображения для object-fit
- image-orientation:from-image(ум)/угол [flip] - поворот на угол [переворот]
- display:none(нет в документе)/contents/block(блок)/inline(встроен)/inline-block(встроен блок)/table(блок таблица)/inline-table(встроен таблица)/list-item(блок список)/table-caption(заголов таблицы)/table-row(строка табл)/table-cell(ячейка табл)/
table-column(колонка табл)/table-column-group(группа колонк табл)/table-[header/footer/row]-group(группы строк)/[-webkit-]flex(гибкий элемент с применением flex-характеристик)/inline-flex /
flow/ flow-root/ grid/ inline-grid/ ruby/ ruby-base/ ruby-text/ run-in(вставляемый блок)/ inherit(значение унаследовано от родителя)/ initial(значение по умолчанию) / unset -
- visibility:visible/hidden/collapse - блок видим/прозрачен/для таблиц-исчезает и место
- backface-visibility:visible/hidden - при повороте в 3D обратной стороной блок виден/нет
- width, height:N%/Npx/Nem/Nex/none/inherit - величина ширины и высоты контента (относительная - % родителя, абсолютная)
- Свойства расположения блока
- position:fixed/absolute/relative/static(ум)/sticky - позиционирование блока фиксированое(привязка к экрану)/абсолютное(привязка к окну браузера,а если родитель не статич - к родителю)/относительное(к текущему месту)/статичное/липкий элемент(внутри прокручиваемого прилипает к краю)
- top:Npx/N% - (не static)расстояние от границы блока до верхнего края документа (абсолют)/текущей позиции(относит)/границы родителя(родит-не static), % высоты родителя
- right:Npx/N% - (не static)расстояние от границы блока до правого края документа(абсолют)/текущей позиции(относит)/границы родителя(родит-не static), % ширины родителя
- left:Npx/N% - (не static)расстояние от границы блока до левого края документа(абсолют)/текущей позиции(относит)/границы родителя(родит-не static), % ширины родителя
- bottom:Npx/N% - расстояние от нижнего края контента блока до нижнего края документа(абсолют)/текущей позиции(относит)/границы родителя(родит-не static), % высоты родителя
- float:left/right/none - блок исключается из статического потока и приклеивается к левой/правой стороне родителя остальное обтекает /отмена, но у родителя отсутствует его высота (остальной онтент должен полностью обтекать)
- clear:none/left/right/both - прекращает обтекание предыдещих блоков float:..
- overflow[-x -y]:visible(ум)/hidden/scroll/auto - при контенте больше блока вылазит/обрезается/полоса прокрутки/полоса при необходимости
- z-index:N/auto - очередность расположения на переднем плане смежных элементов (0-ум,дно, -N - ниже)
- Flex - 'гибкий' средство для расположения блоков в контейнере по установленным правилам
- flex-direction:row(ум)/row-reverse/column/column-reverse - указание главной оси расположения подчиненных блоков, а второстепенная перпендикулярно (л-п с выходом за пределы)/(п-л с выходом за пределы)/(в-н)/(п-в)
- flex-wrap:nowrap(ум)/wrap/wrap-reverse - выстраивание бесконечно/при заполнении начинает заполнять новый ряд внизу или столбец справа/при заполнении начинает заполнять новый ряд или столбец в обратном направлении (ряд вверху или столбец слева)
- flex-flow:(direction-значение) (wrap-значение) - сокращенная запись двух предыдущих значений
- justify-content:flex-start(ум)/start/right/flex-end/end/left/center/space-between/space-around - выравнивание блоков относительно родителя по основной оси если ширина фиксирована
- align-items:flex-start/flex-end/center/baseline/stretch(ум) - выравнивание блоков относительно второстепенной линии
- align-content:flex-start/flex-end/center/space-between/space-around/stretch(ум) - выравнивание блоков относительно второстепенной линии при фиксированой высоте
- align-self:flex-start/flex-end/center/stretch/baseline/auto(ум) - выравнивание одного подчиненного блокоа относительно второстепенной линии при фиксированой высоте
- order:N - указание очередности у подчиненного блока в flex-контейнере (по ум - 0)
- flex-grow:N - (ум - 0) число "частей" по ширине занимаемое подчиненным блоком при растягивании
- flex-shrink:N - (ум - 1) число "частей" по ширине сокращаемое подчиненным блоком при сжимании (при 0 - запрещает сжиматься)
- flex-basis:auto/размер - базовая ширина подчиненного блока в flex-контейнере
- flex: (grow-значение) (shrink-значение) (basis-значение) - сокращенная запись трех предыдущих значений
- Grid - 'сетка'
- position:fixed/absolute/relative/static(ум)/sticky - позиционирование блока фиксированое(привязка к экрану)/абсолютное(привязка к окну браузера,а если родитель не статич - к родителю)/относительное(к текущему месту)/статичное/липкий элемент(внутри прокручиваемого прилипает к краю)
- Свойства декораций блока (теней, трансформаций, переходов, анимаций)
- box-shadow:none(ум)/ [inset] Npx-x Npx-y [Npx-размытие] [-N/+N-размер] цвет - установка тени блока внутри/снаружи, несколько через запятую
- transform:none/функции - изменение всего блока (не inline) функциями записанными через запятую
- rotate(Ndeg) - поворот на угол по часовой стрелке (относительно точки transform-origin), отрицательное - против ч.стрелки
- scale[X/Y](N.[,N.]) - масштабирование (отрицательное значение - переворачивает), одно значение применяет к X и Y одновременно
- translate[X/Y](Npx/N%,Npx/N%) - перенос элемента от своей позиции, % размера этого блока
- skew[X/Y](угол,[угол]) - наклон
- matrix(a, c, b, d, tx, ty) - одна общая функция трансформации (a,d - масштабирование X и Y, b,c - сдвиг по X и Y, tx,ty - смещение по X и Y), для поворота на угол применяют(cos(уг), -sin(уг), sin(уг), cos(уг), 0, 0)
- perspective(Npx) - указать размер перспективы (аналог указания у родителя св-ва perspective:..)
- transform-origin:x,y - начальная точка трансформации Npx/N%/left/center/right/top/bottom
- градиент как значение цвета
- линейный градиент - [-moz/o/ns/webkit-][repeating-]linear-gradient(to [top/bottom] to [left/right]/[Ndeg], цвет1 0%, цвет2 N%,..)
- радиальный градиент - [-moz/o/ns/webkit-][repeating-]radial-gradient([Ndeg]-для эллипса [top/bottom/center/N%/Npx][left/right/center/N%/Npx]-позиция , (circle/ellipse(ум))-форма (contain/closest-corner/farthest-side/cover)-размер, цвет1 0%, цвет2 N%, ..)
- transition[-property/-duration/-delay/-timing-function]:all/CSS-свойство N.s-длительн N.s-пауза функция(linear/ease-in/ease/ease-out/ease-in-out/cubic-bezier(N1.,N2.,N3.,N4.)) - следит за свойством при изменении выполняет постепенно
- Создание анимации средствами CSS
@keyframes имя_кадров {from{CSS-стиль1}to{CSS-стиль2}} / {0%{CSS-стиль1}..100%{CSS-стильN}} - создание именованого %-хронометража и изменений CSS-стилей- animation:Ns-длит функция Ns-пауза направление повтор результат тек_состояние имя_кадров - сокращенное свойство анимации
- animation-name:имя_кадров - установка схемы анимации для эл
- animation-duration:Nms / Ns - время длительности всей анимации
- animation-timing-function:ф-я - ф-я плавности(linear/ease-in/ease(ум)/ ease-out/ease-in-out/cubic-bezier(N1.,N2.,N3.,N4.)/steps(N-кол_шагов,start|end)/step-start (аналог steps(1,start))/step-end (аналог steps(1,end)))
- animation-delay:N - пауза
- animation-direction:normal/reverse/alternate - направление прямое/обратное(100% .. 0%)/чередовать(1-туда и 2-обратно - повторов >2)
- animation-iteration-count:N/N./ infinite - кол-во повторов/не полные циклы/бесконечно
- animation-fill-mode: none/ forwards/ backwards/ both/ initial/ inherit - после всех циклов вернуть в начало
- animation-play-state: paused/ running/ initial/ inherit - установка состояния анимации пауза/движение/по ум
[-webkit-]filter:фильтр1 фильтр2 .. - применение фильтров ко всему блоку через пробел- blur([Npx]) - размывка изображений с указанием размера размытия
- grayscale([0.-1./N%]) - подавление цвета изоражения (уменьшение цветности)
- drop-shadow(Npx Npx Npx цвет) - тень изображения
- sepia([0.-1./N%]) - сепия изоражения (подавление цвета как старая фото)
- brightness([0.-10./N%]) - яркость изоражения (1/100%=нормальная)
- contrast([0.-10./N%]) - контраст изоражения (1=нормальная)
- hue-rotate(Ndeg) - мсещение оттенков по цветовому колесу на угол N
- saturate([N]) - умножение насыщенности изоражения
- invert([0.-1./N%]) - инверсия цветов
- opacity([0.-1./N%]) - степень не прозрачности
- box-shadow:none(ум)/ [inset] Npx-x Npx-y [Npx-размытие] [-N/+N-размер] цвет - установка тени блока внутри/снаружи, несколько через запятую
- Свойства тэга списка
- list-style:type position image - изображение маркера
- list-style-type:тип - тип значка элемента, для ul - circle|disc|square, для ol - armenian|decimal|decimal-leading-zero|georgian|lower-alpha|lower-greek|lower-latin|lower-roman|upper-alpha|upper-latin|upper-roman|none|inherit
- list-style-position: inside/outside - знак установлен внутри блока/снаружи
- list-style-image: none/url('файл_маркер') - замена/отмена замены маркера изображением
- Свойства тэга таблицы и ячеек
- border-collapse:collapse/separate - граница ячеек единая/отдельная для каждой ячейки
- border-spacing:Npx [Npx] - расстояние между границами ячеек [вертик,горизонт]
- caption-side:top/bottom/left*/right* - расположение относительно таблицы тэга caption или любой имеющий display:table-caption (* только у FF)
- empty-cells:show(ум)/hide - для пустых (или с пробелами) ячеек показать/удаляет границу и фон
- table-layout:auto/fixed - размер ширины ячеек вычисляется по содержимому/фиксировано по тэгу col или по первой строке
- border-collapse:collapse/separate - граница ячеек единая/отдельная для каждой ячейки
- Свойства контента
- color:цвет - цвет текста
- Стили для создания колонок контента
- column-count:N - количество колонок, предварительно вычисляется количество строк и ширина колонок
- column-width:Npx - ширина колонок, количество колонок и строк вычисляется
- columns:ширина количество - сокращенноая запись ширины и количества колонок (один параметр может отсутствовать)
- column-gap:Npx - расстояние между колонками, при наличии количества или ширины колонок
- column-rule:width style цвет - линия между колонками, при их наличии
- content:"строка"/attr(имя_аттриб)/[no-]open-quote/[no-]close-quote/url('имя_файла')/counter(имя_перем) - (применяют только с :before,:after) добавляет строку/знач.аттрибута/[отменяет] значок открытия или закрытия/отображает файл/значение переменной counter-reset, все это через пробел можно перечислять
- letter-spacing:normal/Npx - расстояние между символами, с минусом - символы накладываются
- line-height:Npx/N./N% - абсолютный/относительный меж-строчный интервал
- quotes:"откр_симв" "закр_симв" - сохранение типа ковычек при использовании тэга
Q , можно применить юникод (одинарная/двойная верхняя/нижняя кавычка,апостроф, кавычки уголками) - [-o -moz -webkit -ms]tab-size:N - количество пробелов (длина) табуляции
- text-align:center/justify/left/right/(start/end - к началу/концу строки зависит от направления текста) - центрирование текста или inline-блоков
- text-align-last:center/justify/left/right/(start/end - от направления текста) - центрирование последней строки текста
- text-decoration:line-through/overline/underline/none - эффекты зачеркивание/черта над/под текстом
- text-indent:Npx/N% - отступ первой строки контента (красная строка)
- text-overflow:clip/ellipsis - если overflow: не visible и white-space:nowrap, при выходе контента обрезается/обрезается с добавлением троиточия
- text-shadow:цвет Npx-x Npx-y [Npx-размытие] - цветная тень от букв
- text-transform:capitalize/lowercase/uppercase/none - изменение регистра для текста первый заглавный/все маленькие/все заглавные
- vertical-align:baseline /bottom /middle /sub /super /text-bottom /text-top/top - выравнивание по БЛ родителя/нижней границе родителя/центральной линии родителя/ нижний индекс/верхний индекс/самой нижней строке/самой верхней строке/верх, действует только для display: inline, inline-block
- white-space:normal(автопереносы)/nowrap(без переносов)/pre(как у пользователя)/pre-line(с переносами, но пробелы уменьшают до одного)/pre-wrap(как у пользователя и с авто-переносом) - восприятие пробелов и переносов
- word-break:normal/break-all/keep-all - перенос длинных слов
- word-spacing:normal/Npx/N% - дополнительное расстояние между словами
- word-wrap:normal/break-word - разбивать строки только по словам и при br/автоматически делить слова и br
- Свойства шрифтов
@charset "кодировка символов"- установка кодировки самой таблицы стилей (еще можно задать: при подключении ф-ла стилейlink charset="" , для всего документаmeta charset="" )@font-face {font-family:нов_имя_семейства, src:url(файл_шрифта), другие настройки шрифта} - подключение файла шрифта- font-family:serif/sans-serif/cursive/fantasy/monospace - выбор семейства шрифтов
- font-size:Npx(абсолютный), xx-smal/x-small/small/medium/large/x-large/xx-large/larger/smaller/N%(относительный) - размер шрифра
- font-stretch:ultra-condensed/extra-condensed/condensed/semi-condensed/normal/semi-expanded/expanded/extra-expanded/ultra-expanded - относительная ширина букв
- font-style:normal/italic/oblique - начертание обычное/рукописное/наклоненное
- font-variant:normal/small-caps - строчные буквы пишутся обычно/прописные но меньшего размера
- font-weight:bold/bolder/lighter/normal(400)/100-900 - жирность шрифта
- Свойства для печати
@page [{:left/:right/:first}] { Значения margin} - установка отступов припечати (не четных/четных/первой) страницы- orphans:N(ум-2) - миним количество строк остающееся на предыдущей странице
- page-break[-after -before -inside]:auto(ум)/always/avoid/left/right - на печати вставка разрыва страницы после/до/внутри блока при необходимости/всегда/никогда/начало с четной/не четной
- widows:N - минимальное количество строк на странице
- Дополнительные свойства
@import "имя.css"/url("имя.css") [тип носителя] - подключение файла стилей (первой строкой) [применяется только для указанного носителя]@media типы_носителей{стили} -(первой строкой) примение указанных стилей только для указанных носителей через запятую- типы_носителей
all - все устройстваnot (...) - все устройства кроме указаных(color) /(monochrom) /(min/max-color:N) - дополнительная цветовая характеристика устройства- [only]
screen - экран монитора [стиль только для одного устройства] handheld - наладонные компьютерыtv - телевизорprojection - проекторprint /print and (color) - печатающее устройство/ цветное п.у.aural - речевые синтезаторы (речевые браузеры)braille - система для слепых основаная на таблице Брайля- [and] (
max/min-width/height :Npx)- характеристики устройства с доступной пользовательской шириной/высотой (min и max можно задать диапазон) - [and] (
max/min-device-width/height :Npx)- характеристики устройства с шириной/высотой (min и max можно задать диапазон) - [and] (
max/min-device-aspect-ratio :N1/N2)- характеристики устройства с соотношениями сторон шириной/высотой (min и max можно задать диапазон) - [and] (
max/min-resolution :Ndpi) - характеристики устройства с концентрацией пикселей на дюйм (min и max можно задать диапазон) - [and] (
orientation : landscape/portrait) - ориентация экрана альбомная/книжная - 16/9 - соотношение сторон устройства
- создание и использование числовой переменной
- counter-reset:имя_перем [число] - создает переменную со значением 0/число
- counter-increment:имя_перем [число] - увеличивает значение переменной на 1/число при каждом соответствии селектору
- :before/after{content:counter(имя_перем)} - отображение значения
- calc(вычисление) - получение числового значения вычислением (+-*/) математического выражения: width:100%-10px;
- ??? переменная со значением
- --имя_пер:значение - сохранение для селектора
:root в переменной любого значения - свойство:var(--имя_пер) - применение сохраненного значения
- --имя_пер:значение - сохранение для селектора
- ??? переменная с набором свойств (mixin)
- --имя_пер:{набор св-в со значениями} - сохранение для селектора
:root в переменной набора св-в со значениями - @apply --имя_пер; - применение сохраненного набора свойств со значениями
- --имя_пер:{набор св-в со значениями} - сохранение для селектора
- cursor: [url('файл_курсора'),..]auto/crosshair/default/e-resize/help/move/n-resize/ne-resize/nw-resize /pointer/progress/s-resize/se-resize/sw-resize/text/w-resize/wait - форма курсора расположенного над тэгом (стандарт зависит от ОС)
- direction:ltr(ум)/rtl - установка порядка следование прямой/обратный(справа-налево) в тексте-буквы, в таблице-очередность колонок, в блоке-положение полосы прокрутки, текст с text-align:justify - положение последней висячей строки
- unicode-bidi:normal/embed/bidi-override - запись текста в обычном порядке/согласно direction
- resize:none/both/horizontal/vertical - (для тэга textarea) запрет или возможность изменять пользователем размер поля
- -webkit-user-select: none - при клике выделение отменяется/
- scrollbar-[3dlight/arrow/base/darkshadow/face/highlight/shadow/track]-color:цвет - раскраска полосы прокрутки
- rest[-before/-after]:Nms/none - перерыв до/после воспроизведения элемента
- cue[-before/-after]:url('звук_файл')/none - звуки до/после воспроизведения элемента
- pause[-before/-after]:Nms/none - пауза до/после воспроизведения элемента
- speak:none/normel/spell-out/auto/never/always - озвучивание элемента нет/да/зависит от display/нет/да
- voice-family:голос1,голос2,... - установка голоса для воспроизведения элемента (каой подключится)
- Свойства 3D
- perspective:N - величина глубины перспективы (чем меньше, тем больше искажение)
- perspective-origin:X Y - точка видимой перспективы: Npx/N%/left/center/right/top/center/bottom
- transform:none/функции - изменение всего блока функциями записанными через запятую
- rotate3d(угол,угол,угол) - поворот на угол (относительно точки transform-origin)
- scale3d(N.,N.,N.) - масштабирование (отрицательное значение - переворачивает)
- translate3d(x,y,z) - перенос элемента от своей позиции Npx/N%
- matrix3d(16 x m) - одна общая функция трансформации (a,d - масштабирование X и Y, b,c - сдвиг по X и Y, tx,ty - смещение по X и Y), для поворота на угол применяют(cos(уг), -sin(уг), sin(уг), cos(уг), 0, 0)
- transform-origin:x,y,z - начальная точка трансформации Npx/N%/left/center/right/top/bpttom
- transform-style:flat/preserve-3d - разрешение дочерним элементам находиться 2d или 3d пространстве
- Единицы измерения
-
интервалы и размеры блока
px - пиксель дисплеяin - дюйм (inch = 2.54cm = 96px)pt - пункт (point = 1/72inch, 3pt = 4px)pс - (pica = 12pt = 1/6in = 4.2mm)mm - милиметрcm - сантиметрq - 1/4 милиметра
высота шрифта
em - высота font-size одного символа вычесленного для текущего тэгаrem - высота font-size одного символа для корневого тэга - htmlex - размер x-height маленьких букв, иногда равен 0.5emch - ширина символа ноль
размер дисплея
vh - 1/100 высоты дисплеяvw - 1/100 ширины дисплеяvmin - 1/100 наименьшего значения ширины или высоты дисплеяvmax - 1/100 наибольшего значения ширины или высоты дисплея
угол
deg - градус (круг - 360deg)grad - град (круг - 400grad)rad - радиан (круг - 2π = 6.2832rad)turn - поворот (круг - 1turn)
время
s - секундаms - милисекунда (1s = 1000ms)
цвет
кл.слово - название цвета: black, white, yellow#FFFFFF или #FFF - формирование цвета RGB, в сокращенной форме - удвоение: #17f = #1177ffrgb(255,255,255) - формирование цвета RGBrgba(255,255,255,1.) - формирование цвета RGB с альфа-каналомhsl(360.,100%,100%) - формирование цвета 1-оттенок, 2-насыщенность, 3-яркостьhsla(360.,100%,100%,1.) - формирование цвета 1-оттенок, 2-насыщенность, 3-яркость 4-прозначностьcurrentColor - переменная с значением свойства colortransparent - прозрачный цвет
Типы данных
Типы делятся на элементарные (операции со значениями) и ссылочные (операции над ссылками на объекты). В функцию передаются только значения эл.т., а объекты - значение ссылки
- Любые типы
- 'use strict' - первая строка в файле/функции запускает интерпретацию "строгого режима", современный javascript, классы и модули работают уже с включенным use strict
- typeof(X) / typeof X - ф-я/оператор получения имени аргумента если он элементарного типа: number, string, boolean, object(все остальные), undefined(неопределенный тип)
- void X - оператор поглощения значения и возврат значения неоределенного типа undefined
- выраж1,выраж2 - вычисляются все перечисленные выражения и возвращается значение последнего
- eval('скрипт') - выполняет скрипт переданный в виде строкового значения и возвращает его результат, для правильной компиляции объекта надо дабавлять круг.скобки: eval("({a:25})")
- имя_переменной=выражение - создание переменной в глобальной области видимости:
window - var имя_переменной - создание переменной в начале функции со значением undefined (не зависит в каком месте ф-ии расположен - "поднятие переменных"), позже присваивается значение, разрушается при выходе из ф-ии
- let имя_переменной - создание переменной в указанном месте блока, разрушается при выходе из блока
- const имя_переменной=выражение - создание постоянной переменной в указанном месте блока, разрушается при выходе из ф-ии
- .. [пер1,пер2,..,перN=значN] = [знач1,знач2,..] - присвоение списку переменных списка значений, со значением по умолчанию
- .. [пер1,пер2,..,..перN] = [знач1,знач2,..] - присвоение списку переменных списка значений, но перN присваивается массив из остальных значений
Number - числовой класс элементарного типа (64-разрядное вещесв число с плав.точкой), значения +- 10308,Infinity(бесконечность = 1/0),-Infinity(бесконечность = -1/0),NaN(ошибка вычисления или не число)- Свойства класса
Number - .MIN_VALUE / .MAX_VALUE - минимально/максимально возможное значение числа
- .NEGATIVE_INFINITY / .POSITIVE_INFINITY - признак отрицательной/положительной бесконечности
- isNaN(N) - функция проверки числа на соответствие значению NaN,значение определено как не число
- isFinite(N) - функция проверки числа на соответствие конечному значению - не NaN,Infinity,-Infinity
- isInteger(N) - функция проверки числа на соответствие целому числовому значению
- N+"" / String(N)/N.toString([2/8/10/16])/.toFixed(N-точность)-обязательно применяют к дробным числам из-за неточности /.toExponential(N-точность) /.toPrecision(N-точность) - получить строковое представление из числа
- "123"-0/ +"123"/ Number("123")/ parseInt("123AB",[2/8/10/16/36])/ parseFloat("123E5 AB") - получить числовое представление строки из чисел (до получения ошибки), игнорируя последующие посторонние символы, при невозмодности - NaN
- .toString() - метод преобразования в строковый тип, выполняется автоматически при принятии ф-ии только строкового значения
- .valueOf() - метод авто-преобразования других типов в элементарный тип (числовой), выполняется при арифметических операциях (кроме +) и не строгом сравнении, null - 0, undefined - NaN, но при сравнии равенства NaN == undefined и ничему больше не равны
Math - объект с функциями вычисления над числами- .PI - число Пи
- E,LN10,LN2,LOG10E,LOG2E,SQRT1_2,SQRT2 - другие константы
- .cos(X)/.sin(X)/.tan(X)/.acos(X)/.asin(X)/.atan(X) - [а]косинус, [а]осинус, [а]тангенс
- .atan2(y, x) - угол между осью Х и точкой с координатами x,y
- sqrt(x)/log(x)/pow(x,exp)/exp(x)/abs(x) - квадратный корень, логарифм, число в степени, E в степени, модуль числа
- max(a, b, ...) / min(a, b, ...) - получение максимального/ минимального числа из набора
- floor(X)/ceil(X)/round(X)/trunc(X) - округленное дробного числа вниз/ вверх/ до ближайшего числа/удаление дробной части
- .random() - дробное случайное число от 0 до 1
- Операторы булевого вычисления над числами
знач1 & знач2 - по-битное "И"знач1 | знач2 - по-битное "ИЛИ"знач1 ^ знач2 - по-битное "исключающее ИЛИ"~ знач - по-битное "НЕ"знач <<N - сдвиг битов влево на N битов с добавлением 0 (эквивалентно умножению на 2 в степени N)знач >>N - сдвиг битов вправо на N битов с добавлением 0 (эквивалентно делению на 2 в степени N)знач >>>N - сдвиг битов вправо на N битов с добавлением 0 (эквивалентно делению на 2 в степени N)
- Свойства класса
String - строковый класс элементарного типа, литералы:"A",'A',`A ${JS-выражение}`,' \' '(упр. послед-ть),'\xFF'(16-р код чимвола ASCII),'\uFFFF'(16-р код чимвола Unicode)- управляющие символы в литералах
\b - Возврат (Backspace)\f - Перевод или прогон страницы (Form feed)\n - Перевод строки (New line)\r - Возврат каретки (Carriage return)\t - Табуляция (Tab)\v - Вертикальная табуляция (Vertical tab)\' - Апостроф или одинарная кавычка\" - Двойная кавычка\\ - Обратная косая черта (Backslash)\777 - Символ в кодировке Latin-1, представленный тремя восьмеричными числами XXX от 0 до 377. Например, \251 - символ ©.\xFF - Символ в кодировке Latin-1, представленный двумя шестнадцатеричными числами XX от 00 до FF. Например, \xA9 - символ ©.\uFFFF - Символ в Unicode, представленный четырьмя шестнадцатеричными числами XXXX. Например, \u00A9 - символ ©.\u{FFFFF} - Символ в UTF-32BE. Например, \u{2F804} обозначает то же, что обычная запись \uD87E\uDC04.
- `A ${JS-выражение}` - строковый литерал с вставкой выражения
- .length - количество символов в строке
- 'стр1'+'стр2'+ . . . / String.concat('стр1','стр2', . . . ) - объединение нескольких строк в одну
- [N]/.charAt(N) - возвращает символ в позиции N (начало с 0), за пределами массива .charAt() возвращает исключение, а [] - только значение undefined
- .charCodeAt(N) - код символа в позиции
N - .substring(N,[M+1])- работает при N>M/ .slice(N,[M+1])- работает с отрицательными N,M/ .substr(N,[L]) - возвращает подстроку с позиции
N [до позицииM /длинойL ], при о - .indexOf("str",[N-нач])/.lastIndexOf("str",[N-нач]) - поиск совпадения с подстрокой с начала/конца, получить номер позиции, при неудаче возвращает -1
- .includes("стр",[N-начало]) - подтверждение наличия указанной подстроки в текущей [поиск начинать с символа N]
- другой_тип.toString() - метод авто-преобразования в строковый тип
- другой_тип.valueOf() - метод авто-преобразования в числовой тип
- .trim()/.trimLeft()/.trimRight() - удаление всех ведущих и/или замыкающих пробелов
- .split([регул_выраж/"строка"],[N-max_длина_масс]) - создание массива строк разбивая всю строку найденными разделителями запятой/строкой/регулярным выражением
- String.fromCharCode(код1,код2..) - получить строку символов по их кодам
- String.fromCodePoint(код1,код2..) - получить строку символов по их кодам
- .toLowerCase() / .toUpperCase() - создание новой строки в нижнем/верхнем регистре
- .locateCompare("стр",['язык'],[об_правил]) - по-символьное сравнение текущей и указанной строк/символа (подобно a<b)относительно алфавита с учетом национальным порядком букв, возвращает -N/0/N, применяют для организации сортировки
- .normalize(['способ']) - нормализация(преобразование) строки с текстовым unicode в unicode-символы, схлопывает многословные символы в один
- .search(рег_выр / "строка_рег_выр","флаг") - поиск 1-го соответствия, получить N позиции, при неудаче -1
.replace (рег_выр /"строка" ,"строка_$1 $2.." /ф-я(арг) ) - поиск рег.выраж/1-ю строку с заменой на строку(с подстановкой $N - под-выражений,$&-рег.выр,$`-текста слева,$'-текст права,$$-символ доллара), если ф-я(a,b,c,d), где a-все совпадение, b-фиксации скобок, c-индекс символа начала совпадения, d-вся строка- .match(рег_выр / "строка_рег_выр","флаг") - (нет - null)получение особого массива всех (g) соотверствий/ для первого (без g) соотверствия массив [0]-найденная строка,[1,2..]-все под-выражения,
масс.index -позицтия начала соответствия,масс.input -вся строка - Методы (устаревшие) создания строки с HTML разметкой
- .anchor('имя') - создание HTML метки: "
a name='имя' строка/a " - .big()/bold()/fixed()/italics()/small()/strike()/sub()/sup() - обрамление в тэги
- .fontcolor(цвет) - раскрашивающий фонт:
font color='цвет' - .fontsize(размер) - размерный фонт:
font size='размер' - .link(url) - создание HTML гиперссылки: "
a href='url' строка/a "
- .anchor('имя') - создание HTML метки: "
- Функции кодирования данных в запросах
- encodeURI("строка") / decodeURI("код-строка") - получить закодированую/декодированую строку (кодируются буквы, цифры кроме - _ . ! ~ * ' ( ) и ; / ? : @ & = + $ , # )
- encodeURIComponent("строка") / decodeURIComponent("код-строка") - получить закодированую/декодированую строку (кодируются все символы, кроме - _ . ! ~ * ' ( ) )
- escape("строка") / unescape("код-строка") - устаревшее кодирование/декодирование
- .endsWith("строка",[N-позиц]) - определяет что конец текущей строки заканчивается под-строкой / до N-позиц строка заканчивается под-строкой
- .startsWith("строка",[N-позиц]) - определяет что начало текущей строки начинается под-строкой / с N-позиц строка начинается под-строкой
- String.raw`строка ${вычисление} строка` - строка с вычисляемыми вставками но без управляющих символов
- String.raw({raw:масс_строк},стр1,стр2,..) - масс_строк/строка(как массив символов) с вычисляемыми вставками но без управляющих символов, аргументы подставляются между эл.массива
- имяФункц`стр1 ${JS-выраж1}стр2 ${JS-выраж1}стр3` - создание строки с помощью функции и шаблона: функция обрабатывает аргументы арг1 - массив из ['стр1','стр2',стр3], арг2,арг3 - полученные JS-выраж1,2, функция возвращает обработанную строку
- .repeat(N) - возвращает новую строку в которой подряд повторяется текущая N раз
- .padStart(N-длина,строка) / .padEnd(N-длина,строка) - увеличивает длину строки (но не уменьшает), заполняя недостающие указанной подстрокой
- [Symbol.iterator]() - возвращает итератор строки установленый до первого символа, позволяет:
.next() -перевод указателя к следующему символу,.value -значение символа под указателем
- управляющие символы в литералах
Symbol - класс определяющий один уникальный идентификатор, можно применить для имени свойства объекта, который игнорируется при итерациях и недоступен напрямую, но копируется в методе Object.assign()- Symbol(['имя']) - создание уникального об_символа [с применением описения - имени]
- ob.description - получить описание символа
- {[ob]:знач} - стмвол в литерале применяют в квадратных скобках
- Symbol.for('имя') - создание об_символа с применением уникального имени в глобальном реестре символов программы, для доступа к нему во всей программе по этому уникальному имени
- Symbol.keyFor(об_символ) - получение имени об_символа из глобального реестра символов, если такой уже сохранен командой Symbol.for('имя'), иначе вернет undefined
- Symbol.iterator - создание идентификатора для об, хранящий метод возврщающий об с методом next() (возвращает об {done:..,value:..}), необходим для цикла for(..of..)
- ob.hasInstance -
- [Symbol.isConcatSpreadable]:true - свойство объекта применяют для объединения с массивом
- [Symbol.toPrimitive] - метод объекта применяют для описания правил преобразования объекта в примитив: obj[Symbol.toPrimitive](hint)
Boolean - логический класс элементарного типа, значения true,false- true = 123/"abc"/любой_тип , false = 0/""/null/undefined/NaN / Boolean(любой_тип) / !!любой_тип - преобразование в логический тип
- .toString() / B+"" - преобразования в строковый тип "true"/"false"
- .valueOf() / B-0 - преобразования в числовой тип 1/0
лог_знач1 && лог_знач2 - логическое "И" (если приведенное к логическому лог_знач1==false, сразу срабатывает как false и возвращани значение - не приведенное)лог_знач1 || лог_знач2 - логическое "ИЛИ" (если приведено к логическому лог_знач1==true, сразу срабатывает как true и возвращает значение - не приведенное)! лог_знач - логическое "НЕ"знач1 == знач2 /знач1 === знач2 - проверка равенства / соосветствия, результат true/falseзнач1 != знач2 /знач1 !== знач2 - проверка не равенства / не соосветствия, результат true/false
Object - объектный класс - коллекция именованых/пронумерованых значений- имя = new Класс() / ={} / ={св1:знач1,св2:знач2,..} - создание объекта функцией-конструктором/литералом
- var {пер1,пер2,...}={пер1:знач1,пер2:знач2,...} - присвоение значений переменным через об с такими же именами свойств
- object.имя_св / object["имя_св"]/ delete object.имя_св - создание и доступ/удаление собственных свойств/методов объекта (при одинаковых именах - перекрывает свойство прототипа)
- .constructor - ссылка на функцию-конструктор
- .__proto__ / .constructor.prototype - прототип объекта (при присвоении ему new_об - наследование), аналог Класс.create(new_об), у любых функций .__proto__ === Function.prototype, у любых объектов .__proto__ === Класс.prototype, а у Object.prototype свойство __proto__ === null, это конец цепочки
- object instanceof Конструктор / object.constructor==Конструктор - проверка у объекта конструктора (или наследованых конструкторов), возвращает true/false
- .toString() - устаревший метод авто-преобразования в строковый тип
- .valueOf() - устаревший метод авто-преобразования в числовой/логический тип
- [Symbol.toPrimitive](hint){... return значение} - метод определяет автоматическое преобразование об в примитив (возвращает значение) в зависимости от hint, передаваемое: 'string','number','default'(когда нет однозначного типа - бинарный +)...
- .hasOwnProperty("имя_св")/.propertyIsEnumerable("имя_св")/ "имя_св" in об / об["имя_св"] - проверка наличия собственного (не наследованого)/перечисляемого/любого свойства, возвращает true/false
- .isPrototypeOf(об1) - текущий объект является об-прототипом для об1
- for(перем in имя_О) {ком1-комN} - в цикле перем получает имя каждого "имя_свойства"
- Класс как функция-конструктор - функция для создания объектов
- new Класс() - создает пустой об и передает ссылку на этот объект в this функции-конструктора, добавляет об прототипа
- Класс(..){..} - функция-конструктор инициализирует все свойства,методы - this.имя, var-переменные - частные:доступны только внутри, после выполнения new по умолчанию или return значение_не_obj возврящает this, при return объкт - возвращает этот объект
- Класс.имя_св=function(){..} - создание статической функции, не имеющей this
- Класс.prototype - ссылка на объект, предоставляет все свои свойства(для чтения) для наследия (применяют для методов и констант)
- Класс.prototype.имя_мет=function(){..} - создание в прототипе метода, в экземпляре он наследуется (подключается) от прототипа, но может быть перекрыт одноименным методом в функции-конструкторе, у методов примитивов this - сам примитив
- Класс.prototype.conctructor - ссылка на функцию-конструктор создавшую прототип
- this.имя_св=function(){return значение} - создание в конструкторе закрытого свойства (изменить нельзя - только вычислить)
- Класс.prototype= new Класс1 - наследование прототипа от Класса1 (те же свойства)
- Класс = Object.create(протот_Кл_родит) - наследование по прототипу (в современных браузерах), реализация для других бр-в: Object.create=function(o){function F(){};F.prototype=o;return new F();}
- Класс.prototype.имя_св=Класс1; тогда в конструкторе выполняется this.имя_св(..) - инициализация свойства-объекта над-класса для инициализации наследованых свойств
- Класс1.call(this,..) - внутри конструктора запуск инициализации свойств Класса1 в конструкторе Класса
- Object.assign(об_нач, об1,...) - в об_нач добавляются все собственные св-ва из об1,об2,... и он возвращается, можно клонировать об если первый - {}
- Object.create(об_прототип, об_св-в) - создание нового объекта с прототипом об_прототип и свойствами об_св-в
- Object.is(об1, об2) - сравнение двух об (аналог сравнения ===)
- Object.getPrototypeOf(об) / об.__proto__ - получить объект прототипа указанного об
- Object.getOwnPropertyNames(об) - получить массив собственных имен объекта
- Object.freese(об) - замораживание об: другой код не может изменять свойства
- имя=знач; об={имя,..} - сокращенная запись свойства об, вместо - об={имя:имя,..}
- об={..,имя(..){..},..} - новая запись метода об, вместо - имя:function(..){..}
- об={..,get имя(){..return..},..} - метод-гетер об, метод без аргументов при обращении как к свойству значение вычисляется - об.имя аналог об.имя()
- об={..,set имя(арг){..},..} - метод-сетер об, метод с одним аргументом при присваивании как к свойству вычисляется метод - об.имя=знач аналог об.имя(знач)
- об={__proto__:об1..} - подключение прототипа (наследование)
- об={__proto__:об1..имя(..){..super.имя()}} - подключение прототипа (наследование) и выполнение в методе метода прототипа
- class Класс [extends Класс1]{constructor(){},..} - создание класса [унаследованого от другого класса], нельзя запускать как функцию: Класс(), объекты наследуются от объектов
- class Класс extends Класс1 {constructor(){super(..)..},..} - выполнение в первой строке конструктора родительского конструктора
- class Класс extends Класс1 {метод(){super.метод1(..)..},..} - выполнение внутри метода родительского метода
- class Класс ..{static имя(){},..} - объявление статической ф-ии
- Класс = class [Класс1]{constructor(){},..} - создание класса на лету [именованого]
Object.defineProperty(об,"имя_св-ва", об_дескриптор) - создание/изменение одного свойства, где об_дескриптор:- д-р данных(содержит значения, которое можно/нельзя записывать) или
- д-р доступа(содержир методы геттер и/или сеттер)
- configurable:true/false - разрешение изменять, удалять св-во,
- enumerable:true/false - разрешение перечислять св-во,
- value:значение - значение св-ва,
- writable:true/false - возможность присваивание "=",
- get:ф-я - "геттер" это функция вычисляет значение свойства,
- set:ф-я(арг) - "сеттер" это функция принимает одно значение свойства для вычислений
- Object.keys(об) - получение массива имен свойств об
Array - объектный класс - коллекция пронумерованых значений- имя = new Array([знач1,знач2..]/[N]) / =[знач1,знач2..] - создание массива функцией-конструктором/литералом
- Array.of(знач1,знач2,..) - создание массива из значений любого типа, в т.ч. чисел
- Array.from(масс,[ф-я(знач,инд){..return нов_знач}],[об для ф-ии]) - создание простого массива из любого об похожего на массив [преобразуя элементы аналогом .map(), применяя контекст]
- Array.isArray(арг) - проверка что аргумент является массивом
- Array.prototype.метод.call(Mass, arg) - применение методов массивов к массиво-подобному объекту
- [пер1,пер2,...]=[знач1,знач2,...] - присвоение значений переменным через массив
- [N] - доступ к элементу массива для чтения/записи
- delete array[N] - удаление элемента массива, остается значение undefined
- .length - количество элементов(при записи изменяет размер)
- .toString()/.toSource() - метод авто-преобразования в строковый тип (toString() использует метод .join() )
- .valueOf() - метод авто-преобразования в числовой тип
- .shift()/.pop() - удаление первого/последнего эл. этого массива, возвращает его
- .unshift(new1,new2,...)/.push(new1,new2,...) - добавление в начало/конец этого массива новые эл, возвращает .length
- .splice(N,[L],[new1,new2,...]) - удаление выборки[с вставкой] в текущем массиве, возвращает новый массив из удаленных элементов
- .slice(N,[M+1]) - возвращает копию части массива из элементов от N до M, -N/-M отсчитывает от конца
- .join(["строка"]) - создание строки из элементов,преобразовав в строку, с разделителем запятая(ум)/строка
- .
sort ([ф-я(a1,a2){return -0/0/+0} ]) - сортировка элементов этого же массива строками/функцией и взвращает его же ссылку (для дальнейших изменений) - .reverse() - в текущем массиве распологает элементы в обратном направлении и взвращает его же ссылку (для дальнейших изменений)
- .concat(эл1,эл2,..,масс1,масс2,..) - возвращает новый массив, созданный из копии этого массива, добавив в конец указанных элементов, элементов из других массивов
- .indexOf(значение,[нач_позиц])/.lastIndexOf(значение,[нач_позиц]) - поиск значения с начала/конца, возвращает индекс или -1
- .
forEach (function(знач,[индекс,весь_масс]){код} ) - для кождого эл выполняется функция, получающая 1/2/3 аргумента - .
map (function(знач,[индекс,весь_масс]){код return нов_значен} ) - создание нового массива из преоразованых элементов этого с помощью ф-ии - .
filter (function(знач,[индекс,весь_масс]){код return true/false} ) - создание нового массива в виде выборки для которых функция возвращает true - .
every (function(знач,[индекс,весь_масс]){код return true/false} ) - возвращает true,ести для всех элементов функция возвращает true - .
some (function(знач,[индекс,весь_масс]){код return true/false} ) - возвращает true,ести хотя бы для одного элемента функция возвращает true - .
reduce (function(пред_результ,знач,[индекс,весь_масс]){код return результ}, [нач_результ] ) - возвращает результат после последовательного выполнения ф-ии для каждого элемента функция - .
reduceRight (function(пред_результ,знач,[индекс,весь_масс]){код return результ}, [перв_результ] ) - возвращает результат после последовательного с конца выполнения ф-ии для каждого элемента функция - .
find (function(знач,[индекс,весь_масс]){код return true/false} ) - возвращает значение первого найденного элемента для которого функция возвращает true - .
findIndex (function(знач,[индекс,весь_масс]){код return true/false} ) - возвращает index первого найденного элемента для которого функция возвращает true - .
includes (знач,[индекс_нач] ) - поиск элемента имеющего указанное значения, если оно найдено - возвращает true, иначе false (при поиске значения NaN - находит его) - .copyWithin(инд_встав,инд_нач,[инд_кон+1]) - замена значений начиная с позици инд_встав на копии элементов скопированых из позиций инд_нач до инд_кон/конца не включая
- .fill(знач,[инд_нач],[инд_кон+1]) - замена значений на указанное начиная с позици инд_нач/сначала до инд_кон/конца, не включая
- .flat([N-глубина]) - получение нового массива с элементами текущего раскрытыми до N глубины, 1 - по ум., Infinity - для любой глубины
- .entries() - создание итератора, который
.next() -перемещается и возвращает об, который.value -массив из 2-х элементов: [индекс,значение] - .keys() - создание итератора, который
.next() -перемещается и возвращает об, который.value -индекс элемента,.done - признак конца массива - .values() - создание итератора, который
.next() -перемещается и возвращает об, который.value -значение элемента,.done - признак конца массива, позволяет обходить цикл for(let перем of итератор){..} - for(let перем of масс){..} - цикл перебора всех элементов
- масс[Symbol.iterator]() - создание итератора (аналог .values() )
Map - ассоциативный массив (подобие объекта), где ключ - любой тип- new Map() / new Map([[ключ1,знач1],[ключ2,знач2],..]) - создание массива / со значениями
- .size - получить количество всех пар ключ-значение в массиве
- .set(ключ,знач) - добавление одной пары ключ-значение, возвращает сам массив (можно создавать цепочку)
- .get(ключ) - получение значения по ключу
- .has(ключ) - проверка наличия пары по ключу, возврат true/false
- .delete(ключ) - удаление пары по ключу
- .clear() - удаление всех пар
- .entries() - создание итератора, который
.next() -перемещается и возвращает об, который.value -массив из 2-х элементов: [индекс,значение] - .keys() - создание итератора, который
.next() -перемещается и возвращает об, который.value -ключ элемента,.done - признак конца массива - .values() - создание итератора, который
.next() -перемещается и возвращает об, который.value -значение элемента,.done - признак конца массива, позволяет обходить цикл for(let перем of итератор){..} - for(let перем/[пер_кл,пер_знач] of масс[.keys()/.values()]){..} - цикл перебора всех элементов
- .
forEach (function(знач,[ключ,весь_масс]){код} ) - для кождого эл выполняется функция, получающая 1/2/3 аргумента
Set - коллекция из уникальных элементов любого типа (подобие массива)- new Set() / new Set([знач1,знач2,..]) - создание массива / со значениями
- .size - получить количество всех значений в массиве
- .add(знач) - добавление одного эл, возвращает сам массив (можно создавать цепочку)
- .has(знач) - проверка наличия эл по значению, возврат true/false
- .delete(знач) - удаление эл по ключу
- .clear() - удаление всех эл
- .entries() /.keys() / .values() - создание итератора, который
.next() -перемещается и возвращает об, который.value -значение элемента,.done - признак конца массива, позволяет обходить цикл for(let перем of итератор){..} - for(let перем of масс){..} - цикл перебора всех элементов
- .
forEach (function(знач,[знач,весь_масс]){код} ) - для кождого эл выполняется функция, получающая 1/2/3 аргумента, где 1 и 2 одинаковы
WeakMap - ассоциативный массив, где ключ - ссылка на объект, позволяет автоматически удалить пару если объект (ссылка передана в ключ) был удален за пределами- new WeakMap() / new WeakMap([[ключ1,знач1],[ключ2,знач2],..]) - создание массива / со значениями
- .set(ключ,знач) - добавление одной пары ключ-значение
- .get(ключ) - получение значения по ключу
- .has(ключ) - проверка наличия пары по ключу, возврат true/false
- .delete(ключ) - удаление пары по ключу
WeakSet - коллекция из уникальных элементов-объектов, позволяет автоматически удалить элемент если объект (ссылка передана в значение) был удален за пределами- new WeakSet() / new WeakSet([знач1,знач2,..]) - создание массива / со значениями
- .add(знач) - добавление одного эл
- .has(знач) - проверка наличия эл по значению, возврат true/false
- .delete(знач) - удаление эл по ключу
Function - объектный класс связанный с исполняемым кодом- function имя(аргум){код[return[значение];]} - объявление ф-ии и привязка к ее к контексту через
this (внешнему объекту где она запущена, для не метода в браузере - window, а при 'use strict' - {}), где производится поиск переменных, при их отсутствии - во внешнем, выполяется "поднятие" ф-ии - использовать ф-ю можно во всем текущем контексте - имя = function[имя_локальное](аргум){код} - встраиваемая функция определяется в месте присвоения (синтаксического анализа) и сохраняется в свойстве имя (имя_локаль - применяют только для рекурсивного вызова этой ф-ии)
имя = (аргум)=>{код} - функция определяется во время присвоения (синтаксического анализа) и сохраняется в свойстве имя, не имеет собственного this (при использовании - this берется из внешнего окружения, аналог имя.call(this) ), не имеет arguments, круглые скобки опускаются если один аргумент, если фигурные скобки у выражения опускаются - тело состоит только из {return выражениe}- имя = new Function(["арг1","арг2",..],"код") - создание глобальной функции во время исполнения при каждом вызове
имя_ф=(function(){var имя_пер,ф-я,..return function(){изменение имя_пер})() - создание ф-ии с закрытой (недоступной) переменной - замыкание- в памяти сохраняется объект области действия внутренней ф-ии, когда выполнение внешней - закончилось
- доступ ко всем внутренним переменным и функциям только через имя_ф
- каррированая ф-я - создание из ф-ии с аргументами другую ф-ю, которая и будет запускать первую
- .name - локальное имя функции (применяемое для рекурсии)
- .toString() - метод авто-преобразования в строковый тип, декомпиляция
- .valueOf() - метод авто-преобразования в числовой тип
- .length - количество аргументов указанных в объявлении (получить внутри функции - arguments.callee.length)
- .prototype - объект участвующий в функции-конструкторе применяя
new - .prototype.do - метод выполняемый при запуске ф-ии: имя()
- .имя_пер - создание статической открытой переменной (значение сохраняется между вызовами)
- .call(об_контекст,арг1,арг2,..)/.apply(об_контекст,[арг1,арг2,..]) - запуск функции в контексте объекта (как метод объекта) и этот об является this (обычно функции выполняются в контексте их определения) (можно любой об обрабатывать как массив: Array.prototype.Функц.call(об,арг) )
- .bind(об_контекст,арг1,арг2,..) - каррированая функция: создание новой ф-ии (например new_f) при выполении которой будет выполнять эту ф-ю (new_f(agr3,arg4,..) ) в указанном контексте выполнения с указанными аргументами и добавленными еще аргументами (аналогично .call(об,arg1,arg2,arg3,arg4,..)), new_f нельзя привязать к новому объекту
- .isGenerator() - проверка является ли ф-я генератором
- перем = obj.метод; перем(); - при присвоении, вычислении метод отвязывается от контекста объекта и становится самостоятельной ф-ей
- obj.метод = функц; obj.метод(); - при присвоении свойству объекта, тело ф-ии запускается как метод т.к. привязывается к объекту, аналог call, apply
- Внутри функции :
- arguments - ссылка на об/массив типа Arguments
- arguments[N]/ имя_арг - получение значения N-го/по имени аргумента
- arguments.length - количество аргументов полученных при выполнении (в нее можно писать)
- arguments.callee.caller(..) - (не работает в режиме 'use strict') ссылка на эту функцию не применяя имя функции (для рекурсивного вызова)
- this - ссылка на объект контекста(пространство имен) где выполнен метод/функция (для глобальных функций - window,для методов объектов - этот объект)
- (function(имя_перем){код обращения к библиотеке - имя_перем})(имя_библиотеки) - избежание конфликта имен
- with(объект){код} - выполнение кода при наличии объекта в области видимости (доступ к свойствам - напрямую)
- Функции-генераторы - это ф-ии выполняемые частично с помощью итератора
- function* имя(аргум){yield [значение]..[return[значение];]} - определение ф-ии-генератора, где yield возвращает значение value в об {value:.., done:..} аналогично return
- iter = имя(..) - получение об итератора ф-ии-генератора, а не выполнение ф-ии, содержит метод next()
- iter.next() - запуск часть ф-ии до оператора yield [значение] или return[значение], возвращает об {value:значение,done:true/false}, где done определяет завершение ф-ии или оператор конца return
- iter.next() - запуск часть ф-ии до оператора yield* ф-я-генертор1(), а далее выполняется другая ф-я-генертор до оператора yield [значение]
- iter.next(значен) - yield является переменной в которую передается значен и зпуск этой строки
- Асинхронные функции - функция после выполнения возвращает Promise-значение, но выполняется не сразу, а сначала останавливается перед await (ставится перед Promise), а после получения значений указанных после оператора
await продолжает вычисление- asinc function имя(аргум){..await..} - определение асинхронной ф-ии
- имя = asinc function [имя](аргум){..} - определение асинхронной ф-ии
- имя = new AsincFunction("арг1","арг2",..,"код") - определение асинхронной ф-ии
- имя(..).then(ф-я_успех,ф-я_ошибка) - обработчик (завершение выполнения) асинхронной ф-ии
- function имя(аргум){код[return[значение];]} - объявление ф-ии и привязка к ее к контексту через
Promise - объект имеющий три состояния: 1-ожидание выполнения, 2-успешное выполнение, 3-отклонено из-за ошибки, является micro-task, поэтому выполняется быстрее setTimeout(.., 0)имя = new Promise(ф-я(имя_успех,имя_отклон){ - создание, принимает ф-ию с 2-я аргументами ф-ями-колбэками (обычно Промис возвращают в ф-ии)
имя_успех(знач);
имя_отклон(знач);
})имя.then(ф-я_успех(арг){},ф-я_ошибка(арг){}) - установка 2-х обработчиков при успешном и неудачном выполнении, если успешная ф-я возвращает Промис/значение, можно строить цепочки из .then()имя.then(ф-я_успех(арг){}) / имя.then(null,ф-я_ошибка(арг){}) / имя.catch(ф-я_ошибка(арг){}) - установка 1-го обработчикаимя.finally(ф-я(){}), аналог имя.then(ф-я(арг) => resolve(арг), ф-я(арг) => reject(арг)) - обработчик завершения промиса не зависимо успешно или с ошибкой- Promise.all([промис1,промис2,..]).then(ф_успех(), ф_отклон()) - последовательное выполнение набора промисов и выполнение успешной ф-ии если все промисы успешны (then получает массив результатов), если хоть один промис отклонен - выполняет отклоненную ф-ю
- Promise.allSettled([промис1,промис2,..]).then(ф_успех()) - последовательное выполнение набора промисов и выполнение успешной ф-ии всех промисов: и успешных и отклоненных, (then получает массив результатов)
- Promise.race([промис1,промис2,..]).then(..) - параллельное выполнение набора промисов и резельтат самого ранее завершенного - если это успешная, выполнение успешной ф-ии, если это отклоненный, выполняется отклоненная ф-я
- Promise.resolve(знач).then(..) - зараннее созданный успешный промис (возвращает значение) для последующего выполнения промисов в then()
- Promise.resolve(знач_ошиб).then(..) - зараннее созданный промис с ошибкой (возвращает значение) для последующего выполнения промисов в then()/catch()
Date - объектный класс датыимя = new Date([год,месяц,[число,часы, минуты, секунды, мс]/"дата"/N-мс) - создание заданной / текущей даты (при отсутствии аргументов)Date () - получить текущую дату- .
get[UTC]+FullYear/Month/Date/Day/Hours/Minutes/Seconds/Milliseconds () - получить значения - .
get[UTC]Time () - время в мс - .
getTimezoneOffset () - разница между временем универсальным-UTF и местным временем - .
set[UTC]+FullYear/Month/Date/Day/Hours/Minutes/Seconds/Milliseconds (N) - установить новые значения - .
to[Locale]DateString ()/.toUTCString ()/.toString ()/.to[Locale]TimeString () - метод преобразования в строковый тип - .valueOf() - метод авто-преобразования в числовой тип
Date.UTC ([год,месяц,[число,часы, минуты, секунды, мс]) - получить N-мс UTCDate.parse ("дата") - преобразует в дату и получить мс
RegExp - объектный класс регулярного выраженияимя = new RegExp("значение(вместо\ - \\)","gim") / =/значение/gim - создание объекта регулярного выражения- Флаги
- i-"ignoreCase"не чувствовать регистр
- g-"global"получить все соответствия
- m-"multiline"много строчный поиск (признаки ^,$ - имеет каждая строки)
- .lastIndex - свойство результатов .exec()/.test() для "g" и повторного запуска(при поиске в новой строке: об.lastIndex=0)
- .source - (чтение)свойство строка рег.выражения
- .flags - (чтение)свойство строка всех флагов рег.выражения
- .global - свойство флага g поиск всех выражений
- .ignoreCase - свойство флага i игнорировать большие и маленькие буквы
- .multiline - свойство флага m рботать с многострочной строкой
- .toString() - метод авто-преобразования в строковый тип
- .valueOf() - метод авто-преобразования в числовой тип
- .exec("строка") - (нет - null) поиск первого (для g: можно повторно запускать с теми же данными для поиска второго,..) соотверствия массив [0]-найденная строка,[1,2..]-все под-выражения,
масс.index -позиция начала соответствия,масс.input -вся строка, для g -об.lastIndex (позиция символа после найденной,нет-0) - .test("строка") - (true/false) проверяет наличие первого (для g: повторно - второго,..) соотверствия, для g -
об.lastIndex (позиция символа после найденной,нет-0) - Грамматика регулярного выражения
ABCabcАБВабв123 - любые символы и цифры в установленном порядке\символ(0,t,n,v,f,r,..),\xFF,\uFFFF,\cA-\cZ - управляющие символы, Latin, Unicode, управляющий символ (ctrl+A - ctrl+Z)- . - любой символ не разделитель строки или страницы(не \n)
- \s,\S - 'space' любой символ пробела, табуляии, перевод строки и страницы, пробельные / не пробельный
- \w,\W - любой текстовый или цифровой ASCII (a-zA-Z0-9_) / не текстовый
- \d,\D - 'digit' цифры(0-9) / не цифры
- \b,\B - 'break' граница слова (место в вначале или в конце слова 0-й длины)/ не граница слова (до или после идет символ а не пробел)
^,$,.,*,+,?,=,!,:,|,\,/,(,),[,],{,} - спец-символы рег.выражения (для применения этого символа - спереди добавляют обратный слэш: \символ)- / - начало и конец литерала рег.выражения
- ^ - признак начала всей строки
- $ - конец строки
- [набор_символов],[^набор_символов],[симв1-симвN] - множество: только один символ из перечисленного набора/кроме пречисленного набора/из диапазона
- символ?,символ*,символ+,символ{N},символ{N,[M]} - повторение символа 0или1/0или более/1или более/N раз/отN[доM]раз
- символ повтор ? - дополнение повтора символом "?" выбирает наименший вариант
- выраж1 | выраж2 - поиск слева-направо вариантов выражений (как логическое ИЛИ)
(выраж) - сохранение в массиве ответа под-выражения для установки вариантов, повторений, нумерация под-выражений по первой скобке (\1,\2,.. - повторное использование в рег.выр уже найденных и сохраненных подвыражений когда они повторяются,RegExp.$1,RegExp.$2,.. -чтение подвыражений после операции, в replace применяют $1,$2,..)(?:выраж) - отделение под-выражения для установки вариантов, повторений, но не сохраняются(?=выраж) - проверяет наличие под-выражения, но оно не включено в найденное выражение и не сохранено(?!выраж) - проверяет отсутствиея под-выражени, но оно не включено в выборку
Error - объектный класс ошибок- конструкции для перехвата (нейтрализации) возникшей ошибки:
try{код} - код с предполагаемой ошибкой или с запуском throwcatch(имя_перемен){код} - код обработки полученного значения ошибкиfinally{код} - код выполняется всегда -throw значение_ошибки - способ искусственного создания ошибки (исключения - например new Error('строка об ошибке')) указанного типа для его перехвата
- Типы классов ошибок: Error(базовый тип), EvalError, RangeError, ReferenceError, SyntaxError, TypeError и URIError - различные типы ошибок
- new Error(["сообщение"]) - создание об ошибки для throw/try/catch
- .message - строка сообщения переданное в Error/сформировано автоматически
- .name - строка типа ошибки
- конструкции для перехвата (нейтрализации) возникшей ошибки:
XMLHttpRequest - класс объекта Ajax-запросов по протоколу HTTPnew XMLHttpRequest () - создание XHR-объекта (для IE - ActiveXObject("Msxml2.XMLHTTP")/ActiveXObject("Microsoft.XMLHTTP")/для IE8,9 - XDomainRequest)- Подготовка XHR-объекта к запросу
- responseType - (load) установка типа ожидаемого ответа в response: "DOMString"-строка или HTML, "arraybuffer"-массив байтов, "blob"-двоичный,"Document"-xml,"json"-строка json
- .setRequestHeader("заголовок","значение") - установка заголовков запроса (но удалить его нельзя), например установка типа передаваемых данных ('Content-Type', 'application/json' / 'application/x-www-form-urlencoded' / 'multipart/form-data' / 'text/plain')
- .timeout - время в мс прекращения связи
- .withCredentials - установка true для передачи в запросе куков и авторизацию
- автоматическая переписка браузера и сервера:
1.установка заголовка запроса:Origin: домен этой страницы
2.сервер читает заголовок и устанавливает заголовок ответа:
Access-Control-Allow-Origin: домен этой страницы/* - разрешение для браузера выполнения запроса Access-Control-Allow-Credentials: true - разрешение для браузера передачи куков и авторизации - автоматическая переписка браузера и сервера при методе отличном от GET/POST/HEAD, или применения дополнительных заголовков:
1.предварительный запрос методом OPTIONS:
Access-Control-Request-Method: не стандартный метод
Access-Control-Request-Headers: перечень заголовков
2.сервер читает заголовок и устанавливает заголовок ответа:
Access-Control-Allow-Method: метод
Access-Control-Allow-Headers: перечень разрешенных заголовков
Access-Control-Max-Age: N - количество секунд на которое запросы не будут требовать подтверждения
- .
open ("GET/POST/HEAD","url-адрес",[true-асинхронно(ум)/false-синхронно],["логин","пароль"]) - настройка способа запроса на сервер этого докумета(кроме file:\\) - .
send (null(или пусто)-GETзапроса/об_формы-POSTзапроса/json-строка_данных) - выполнение запроса на сервер и получение ответа
синхронный - метод завершается при получении ответа (при долгом ответе - зависание)
асинхронный - метод завершается сразу, а получение ответа проверяется в свойстве status - Проверка наличия ответа
- .onreadystatechange - установка ф-ии обработчика при изменении состояния запроса .readyState (устаревший метод)
- loadstart - начало запроса
- error/ .onerror - произошла ошибка
- timeout/ .ontimeout - обработчик при истечении времени timeout, если оно установлено
- progress/ .onprogress - обработчик при получении порции данных (об_соб:.
lengthComputable -true если известно .total, .position/loaded -байт предано, .total -всего байт (передается в заголовке Content-Length), .timeStamp -время завершения) - .upload.progress - обработчик при передачи порции данных на сервер (об_соб:.
lengthComputable -true если известно .total, .position/loaded -байт предано, .total -всего байт (передается в заголовке Content-Length), .timeStamp -время завершения) - load/ .onload/ - обработчик при успешном приеме информации
- .upload.onload - обработчик при успешной передаче информации
- loadend - запрос завершен (успешно или нет)
- .readyState - код состояния запроса (0-начало/ 1-запущен open/ 2-запущен send/3-начат прием/4-ответ получен(константа-XMLHttpRequest.DONE))
- .status - число состояния ответа (200-успех,больше 200-ошибка)
- .statusText - текстовое сообщение об ошибке
- .abort() - отмена запроса не дожидаясь ответа(запускают в setTimeout() при долгих запросах)
- Получение ответа
- .responseText - получить ответ в виде строки текста (HTML - можно вставить в .innerHTML, JSON - преобразовать в объекты и массивы eval())
- .responseXML - получить ответ в виде об Document / XML-документа (если сервер указал MIME-тип "text/xml"), можно сразу вставить в документ
- .response - (load) полученные д-е указанного типа
- .getAllResponseHeaders() - получить единую строку со всеми заголовками ответа
- .getResponseHeader("заголовок") - получить строку значения заголовка ответа
Canvas - объект для рисования на холсте (контекст экранной области - .getContext ("2d"))- Свойства контекста
- .canvas - ссылка об эл
- .getImageData(x,y,w,h) - получить часть изображения из координат в виде массива пикселей и значениями RGBA
- .putImageData(массив_рисунка_RGBA,x,y) - установить в холст изображение из массива данных
- createLinearGradient(x1,y1,x2,y2) - получить об линейного градиента, x1,y1,x2,y2 координаты начальной и конечной точки
- createRadialGradient(x1,y1,r1,x2,y2,r2) - получить об радиального градиента , x1,y1,r1, x2,y2,r2 координаты центра и радиус окр1,2
об_град.addColorStop ([0. - 1.],"цвет") - цвета точек перехода, где точка - от 0 до 1- createPattern(об_изобр, repeat/repeat-x/repeat-y/no-repeat) - получить об CanvasPattern шаблон для заполнения цвета из изображения (повтор:repeat-[x/y] / no-repeat)
- Настройки контекста перед рисованием
- Настройка линий и способа закраски
- fillStyle - (цвет,градиент,изображение) способ закраски фигуры
- strokeStyle - (цвет,градиент,изображение) способ закраски контуров и линий
- lineWidth - число пикселей толщины линий
- lineCap - (butt(ум)/round/square) форма конца линии (обрубренный/круг в точке/квадрат в точке )
- lineJoin - (round/bevel/miter(ум)) форма острого сгиба ломаной линии (округление/обрезание/удлинение)
- miterLimit - (при lineJoin = "miter") число определяет отношения толщины и длины среза (для обрезания слишком длинные соединения), 1-14(ум, обрезать), больше 14 (не обрезать)
- globalAlpha - (.0-.1) прозрачность
- setLineDash([N-линия,N-разрыв,..]) - пара(чаще одна) для определения пунктирной линии, установка пустой [] - сплошная
- getLineDash() - получить установленный массив пунктирной линии
- lineDashOffset - номер пикселя пары с которого начинается отрисовка пунктирной линии
- Установка тени
- shadowBlur - Величина размытия тени (ум-0)
- shadowColor - Цвет тени (ум - black)
- shadowOffset[X/Y] - Смещение тени по горизонтали/вертикали
globalCompositeOperation - способ смешивания цветов новой фигуры со старым изображением- способы смешивания
- copy - новая фигура затирает старую
- darker - цвет- разность цветов
- destination-atop - новая фигура рисуется сзади старой и является маской для старой
- destination-in - новая фигура является маской для старой
- destination-out - новая фигура в пересечении делает проздачной старую
- destination-over - новая фигура рисуется сзади старой
- lighter - в пересечении цвета суммируются
- source-atop - новая фигура рисуется сверху старой только в их пересечении
- source-in - новая фигура рисуется сверху старой только в их пересечении, остальное - прозрачное
- source-out - новая фигура рисуется не в пересечении со старой
- source-over(ум) - новая фигура рисуется сверху старой
- xor - в пересечении обе фигуры прозрачны
- Настройка осей
- save() - сохранение настройки осей, это делается перед изменениями
- restore() - восстановление настроек осей
- rotate(угол_рад) - поворот осей холста по час (меньше 0 - против час), угол_рад= угол_град*Math.PI/180
- scale(x,y) - масшабирование осей холста, множители на каждую ось x,y
- translate(x,y) - смещение начало координат 0,0 в точку x,y
- setTransform(scale_x,наклон_x,наклон_y,scale_y,translate_x,translate_y)/transform(..) - матрица преобразования
- currentTransform - установка/чтение матрицы преобразования в виде об {a,b,c,d,e,f}
- Настройка линий и способа закраски
- Рисование
- Рисование готовых фигур
- fillRect(x,y,ширина,высота) - Рисует закрашенный прямоугольник
- strokeRect(x,y,ширина,высота) - Рисует не закрашенный прямоугольник
- clearRect(x,y,ширина,высота) - Очищает указанную зону делая ее полностью прозрачной
- drawImage(об_изоб,[x-об,y-об,w-об,h-об],x,y,[w,h]) - вставить в коорд x,y размером w,h готовое изображение [вырезая часть x-об,y-об ,w-об,h-об]
- Рисование фигуры Path элементарными фигурами в 2 этапа: 1-рисование пути 2-закраска
- .beginPath()/.closePath() - начало/завершение пути элементарными фигурами (замыкает начальную и конечную точку между которыми строятся фигу)
- stroke() - закраска контура фигуры Path цветом strokeStyle
- fill() - закраска фигуры Path цветом fillStyle
- clip() - отсекает имеющийся рисунок по границе фигуры
- new Path2D([об_Path2D/'SVG-путь']) - создает об_путь как контекст новый/продолжает строить другой/использует SVG-путь, для продолжения строить путь и окрасить : fill/stroke(об_пути)
- isPointInPath([об_Path2D],x,y,"nonzero/evenodd") - определяет (true/false) находится ли точка в пределах пути обычного/Path2D
- isPointInStroke([об_Path2D],x,y) - определяет (true/false) находится ли точка на линии пути обычного/Path2D
- Элементарные фигуры для траектории - рисуют только линию для последующей окраски
- moveTo(x,y) - перемещает точку начала рисования
- lineTo(x,y) - прямая линия до координат
arc(x,y,радиус,нач_угол_рад,конеч_угол_рад,[true(прот час)/false(по час)]) - дуга окружности/круг с центром x,y (угол в радианах =(Math.PI/180)*градусы)- arcTo(x1,y1,x2,y2,радиус) - добавить дугу окружности от текущей точки выстраивая касательные линии к контрольным точкам x1,y1 и x2,y2
- ellipse(x,y,rx,ry,угол_радиан, угол_нач, угол_кон,по_час) - добавить дугу окружности между точками
- bezierCurveTo(x1,y1,x2,y2,x,y) - кривая Безье третьего порядка до точки x,y с контрольными точками x1,y1 и x2,y2
- quadraticCurveTo(x1,y1,x,y) - кривая Безье второго порядка до точки x,y с контрольной точкой x1,y1
- rect(x, y, ширина, высота) - прямоугольник
- Рисование текста
- fillText("текст",x,y,[длина_уменьш]) - текст в координатах, при необходимости - сжатие до ширины
- .textAlign - выравнивание по горизонтали относительно указанной точки начала (left/right/center/start/end)
- .textBaseline - выравнивание по вертикали относительно базовой линии (top/hanging/middle/alphabetic/ideographic/bottom)
- .font - строка определяет размер шрифта и название шрифта
- .direction - направление написания текста ("ltr"/"rtl")
- Рисование готовых фигур
- Эффекты
- .filter="none / ф-я1 ф-я2 .." - эффекты фильтром перечисляются через пробел
- url('файл_SVG-фильтр') - подключение внешнего файла с SVG-фильтром
- blur(N) - степень размывания фигуры/изображения
- brightness(N%) - осветление цветов
- contrast(N%) - контраст цветов
- drop-shadow(x,y,r,цвет) - отбрасывание тени
- grayscale(N%) - подавление цвета
- hue-rotate(N deg) - угол смещения цветов
- invert(N%) - инвертирование цветов
- opacity(N%) - не прозрачность
- saturate(N%) - насыщенность цветов
- sepia(N%) - сепия (подавление цветов)
- .filter="none / ф-я1 ф-я2 .." - эффекты фильтром перечисляются через пробел
- Свойства контекста
- Дополнительные объекты
JSON.stringify (об)/JSON.parse ("строка-об") - преоразователь строки в объект и наоборот- (
new DOMParser ()).parseFromString("XML-text", "text/xml"/"application/xml"/"application/xhtml+xml") - разбор XML-строки и получает об Document (для IE - document.loadXML(text)), XHR это делает автоматически XSLTProcessor - класс объекта для преобразования XSL-документа (разновидност XML) в фрагмент DOM- (
new XMLSerializer ()).serializeToString(об_узел) - класс для сериализации XML-документ в строку(для IE - об_узел.xml) new Image ([W,H]) - создание в кэше об изображения (свойство src - определяет файл из памяти для будущей вставки)URL - об для формирования url- createObjectURL(об_Blob) - создание формата url для записи в свойство url тэга IMG
- revokeObjectURL(..)
File - объект хранится в массиве свойства .files об тэга INPUT type=file- .name - прочитать имя файла
- .size - размер файла байт
- .type - вычисленный MIME-тип файла, если неизвестен - ""
- .lastModified,.lastModifiedDate - дата модификации файла N-мс,Date
- .slice(N-нач,L-длина) - получить ссылку на об Blob (часть ф-ла) а не на весь ф-л
- для передачи ajax: send(об_File),но будут переданы только байты файла, необходимо добавить заголовки
- .setRequestHeader("X-File-Name", file.fileName);
- .setRequestHeader("X-File-Size", file.fileSize);
BlobBuilder - класс бинарной строки- new BlobBuilder() - об бинарной строки
- .append(массив_байт) - добавление в конец масссива байт типа ArrayBuffer
- .getBlob('имя_файла_изобр'/'MIME-тип') - записать файл из двоичного ф-ла
FileReader - класс для чтения об File/часть файла в память в асинхронном режиме с хоста (не с локального диска)- new FileReader - создание об для чтения информации из об Fileфайла/Blob-часть файла
- readAsBinaryString(Blob/об_File) - чтение ф-ла в бинарном режиме - строка байтов
- readAsText(Blob/об_File, ["кодировка"]) - чтение ф-ла в текстовом режиме с указанной кодировкой (ум - UTF-8)
- readAsDataURL(Blob/об_File) - чтение ф-ла, получить об_url
- readAsArrayBuffer(Blob/об_File) - чтение ф-ла, получить об_ArrayBuffer массив байтов
- События при чтении (процесс асинхронный - завершается после запуска, необходимо настроить обработчики)
- onload - при удачном прочтении, ф-я(обр_соб), обр_соб.target.result - результат считанных данных: строка/url-файла/массив байтов
- onprogress - в процессе считывания
- onerror - при ошибке чтения
- onloadstart - при начале считывания
- loadend - окончание процесса считывания независимо от результата
- abort - при отмене считывания
FormData - класс данных формы (формирует все д-е формы в виде одного об)- new FormData([об_формы]) - создание об пустой/с данными формы для передачи ajax
- append("имя_св",значен) - добавление новых полей со значениями любого типа
- delete("имя_св") - удаление свойства
- get("имя_св") - получение значения
- getAll(..)
- has("имя_св") - проверка наличия свойства
- set("имя_св",значен) - установка нового значения
WebSocket - класс создания непрерывной связи с сервером online, обмен тектовыми сообщениями (для дополнения отсутствующих функций - Web-socket-js)- new WebSocket("ws://или"wss://..[IP/имя_серв]..[:порт]") - получить об соединения (по ум порт - 80, закодир порт - 443)
- onopen - обработчик при подключении к серверу
- onmessage - обработчик при получении сообщения (ф-я(d), d-полученные текстовые данные)
- onclose - обработчик при закрытии подключения
- send(данные) - передача текстовых данных серверу
- close() - закрытие соединения
EventSource - класс регулярного прослушивания сервера по событиям (при обрыве сервером - само восстанавливается)- сервер:
- должен готовить заголовок: "Content-type:text/event-stream"
- все сообшения передаются online в формате:
- id: 12345\n - идентификатор сообщения (не обязательно)
- retry: 100\n - время восстановления при обрыве,ошибках (не обязательно)
- data: 1-я строка\n - начало сообщения
- . . .
- data: N-я строка\n \n - конец сообщения
- new EventSource("http-запрос на сервер/..php") - конструктор создает запрос на соединение
- onmessage - обработчик при получении д-х сервера(одна строка "data: текст\n"), ф-я(об_соб), где об_соб.data - полученные д-е
- onopen - обработчик при открытии соединения
- onerror - обработчик при ошибках, ф-я(об_соб), где об_соб.eventPhase - состояние (константа EventSource.CLOSED/.CONNECTING/.OPEN)
- close() - обрыв связи клиентом
- сервер:
postMessage() - фунукция сообщения между скриптами разных доменов загруженных в окона,вкладки,фреймовы одного браузера- postMessage("сообщение", "http-запрос на сервер") - отправка сообщения скрипту на другой сервер
- window.onmessage - обработчик при получении д-х чужого сервера, ф-я(об_соб), где об_соб
- .origin - строка URL-домен откуда пришло сообщение (для организации фильтра)
- .data - полученные д-е
- .source - об Window окна откуда пришло сообщение
AudioContext - класс асинхронного воспроизведения истосников данных (файл/поток)- new AudioContext() - создание об_AudioContext
- decodeAudioData(об_ArrayBuffer,ф-я_успех(об_декодир_д-х),ф-я_ошибка()) - асинхронное декодирование д-х источника
- .createBufferSource() - получить пустой об данных для манипуляции
- .buffer - загрузки д-х в буффер
- .loop - true/false установка/отмена циклическое воспроизведение
- .connect(context.destination)
- .noteOn(N) - запуск воспроизведения с задержкой N сек
- .noteOff(N) - остановка воспроизведения с задержкой N сек
- .context - ссылка на об_AudioContext
- .noteGrainOn(timeState,timeState,1000)
- .destination
- .currentTime - текущее время воспроизведения
navigator.[moz/webkit]GetUserMedia() - функция для захвата потоков аудио и видео WebRTC- .[moz/webkit]GetUserMedia({audio:true,video:true},ф-я_удача(об_поток),ф-я_неудача(об_ошибка))
- об_поток - необходимо преобразовать в url и установить в об_video.src: об_video.src=URL.createObjectURL(об_поток)
RTCPeerConnection - класс для звязи потоков- new RTCPeerConnection({"имя_сервера":[{"url":"адрес сервера"}]}) - создание об 1-го учасника
- об_RTC.addStream(об_поток) - подключение потока к об
- об_RTC.createOffer() - (1-й)создание соединения для подключения 2-го учасника
- об_RTC.createAnswer() - (2-й)подтверждение соединения 2-го учасника
Worker - класс запуска JavaScript-программ в фоновом процессе- new Worker('имя_модуля.js') - запуск модуля, получить об_мод
- об_мод.message("сообщ") - отправка запущенному модулю сообщения
- об_мод.onmessage - обработчик при получении сообщения от фонового модуля,в ф-я(об_соб), об_соб.data-сообщение
- об_мод.terminate() - удаление из памяти фонового процесса
- Модуль имя_модуля.js :
- onmessage - обработчик при получении сообщения ф-я(об_соб)
- message("сообщ") - отправка сообщения родительскому модулю
- close() - прекращение работы
- setTimeout, setInterval - использавание таймеров
- XMLHTTP Request - ajax-запросы
- javascript-ф-ии и объекты
SharedWorker - класс запуска JavaScript-программ в фоновом процессе используют другие окна- new SharedWorker('имя_модуля.js') - запуск модуля, получить об_мод
- об_мод.port.start() - запуск процесса создателем
- об_мод.port.message("сообщ") - отправка запущенному модулю сообщения
- об_мод.port.onmessage - обработчик при получении сообщения от фонового модуля,в ф-я(об_соб), об_соб.data-сообщение
- об_мод.port.terminate() - удаление из памяти фонового процесса
- Модуль имя_модуля.js :
- onconnect - обработчик при получении сообщения ф-я(об_соб)
- об_событ.ports[0].message("сообщ") - отправка сообщения модулю-отправтелю
- close() - прекращение работы
- setTimeout, setInterval - использавание таймеров
- XMLHTTP Request - ajax-запросы
- javascript-ф-ии и объекты
Структуры программного кода
- Window - Глобальный объект облалает глобальной областью видимости текущего окна,
доступ к которой можно получить через свойство
window - Объявленная функция создает новую область видимости var-переменных и аргументов
- var имя - создание локальной переменной во всей функции со значением undefined, скрывает внешние одноименные переменные,нельзя удалить delete
- Условные разветвления
if (лог )инсрукция - если условие == true, выполняется инструкцияif (лог )инсрукция1 else инсрукция2 - если условие == true, то выполняется инструкция1, иначе выполняется инструкция2switch (выражение ) {case знач1 :инсрукция1 ;[break ;] . .defailt :инсрукцияN ;} - вычисление выражения и строгое сравнение его со значениями вариантов (выражение === значение), значение может быть вычеслено, при первом совпадении начинает выполняет все инструкции начиная с текущего вариана (неоходим выход оператором break), при наличии варианта defailt - выполняется при несовпадении ни одного варианталог ? выражение1 : выражение2 - если условие == true, то вычисляется и возвращается значение выражения1, иначе вычисляется и возвращается значение выражения2with (объект )инсрукция - выполнение кода, где свойства и методы доступны в текущем контексте, как глобальные переменные и функции, но this не передается и для создания методов добавляют об.(работает медленнее, применение в ES5 считается ошибкой)
- Безусловные переходы
goto имя_метки , где далееимя_метки :инсрукция - переход на блок имеющий метку который может находиться в любом местеbreak [имя_метки ] - выход из текущего [имеющего метку блока] в его конецcontinue [имя_метки ] - завершение иттерации текущего [имеющего метку цикла]
- Циклы
while (лог )инсрукция - циклическое выполнение инструкции пока условие == truedo инсрукция while (лог ) - выполнение инструкции, после проверка условия, если условие == true повторяется циклfor (инициал ;лог ;инкремент )инсрукция - после первоначальной инициализации проверяется условие, если условие == true, выполняется инструкция и потом инкремент, цикл повторяется с проверки условияfor (имя_переменная in объект )инсрукция - перечисление всех (собственных и наследуемых) свойств объекта и выполнение инструкции, в которой имя_переменная содержит название свойстваfor (имя_переменная of массив/итератор )инсрукция - перечисление всех элементов массива и выполнение инструкции, в которой имя_переменная содержит индекс/итератор/ключ ассоц массива
- Модуль.js файл модуля:var Модуль={}; Модуль.св1=function(..){..} - создание файла-модуля со своей областью видимости, функции (без this)
- Динамическое создание страниц
- 1) с помошью javascript:
- получение данных для создание страницы
document.getElementById( . . ) - доступ к элементу для внедрения.innerHTML="" - очистка элементаdocument.createElement( . . ) - создание новых элементов.appendChild( . . ) - добавление созданных элементов
- 2) jquery-шаблоны:
- получение данных для создание страницы
- получение HTML-шаблона в виде текстовой переменной: шаблон=".."
- хранение в пепеменной javascript: шаблон=".."
- хранение в HTML-тэге
SCRIPT type="text/x-jquery-tmpl" id="ID-шаблона" шаблон/SCRIPT для получения .getElementById().innerHTML, шаблон уже скомпилирован - получение шаблона с сервера по ajax-запросу
- .hidden=true - скрытие всех блоков страниицы подлежаащих изменению
- шаблон_с_данными=".." - подготовка строки шаблона с установленными данными
- .innerHTML=шаблон_с_данными - добавление информации во все готовые элементы одного блока
- .hidden=false - отображение одного блока страницы
- 3) EJS - шаблонизатор:
SCRIPT src="ejs.js" /SCRIPT - создает об: ejs- получение об данных для шаблона об_д-х={..}
- переменная со строкой шаблона: шаблон=".."
- ejs.render(шаблон, об_д-х) - получить HTML-строку
- 1) с помошью javascript:
Иерархичечская структура окна браузера и документа
Глобальный объект Window определяет рабочее окно браузера, доступен как свойство window,self,top(самый верхний уровень),parent(непосредственный родитель), свойства и методы можно вызывать без window.
eval("инсрукция") - преобразует строку в код и получает результат
uneval(выражение) - преобразует об любого типа в строку
encodeURI[Component]("строка")/decodeURI[Component]("строка") - кодирование/декодирование строки (замена некоторых символов)
print() - запуск на печать
fetch ('файл'/об_request,[об_опций]).then (ф-я1(response)).then (ф-я2(арг)).catch (ф-я(об_ошиб)) - создание Promise объекта для асинхронного запроса на файл/http-адрес и передает как resolve(арг) в ф-ю 1-го then(ф-я(ответ)), если ф-я возвращает результат, он через передается ф-ии следующих then(), если будет ошибка - переход к ф-ии в catch(ф-я(об_ошибк))
new Request() - создание объекта запроса для fetch(имя_req), позволяет изменять значения установленные по умолчанию
new Headers() - создание объекта заголовков для fetch(имя_req, {headers: имя_h}), позволяет изменять значения установленные по умолчанию
new Response() - создание объекта ответа полученного fetch(имя_req), позволяет изменять значения установленные по умолчанию
Работа с фреймами (доступ к потомкам имеется если документы загруж с одного сервера)
t=setTimeout(функция,N)/clearTimeout(t) - единоразовое выполнение/удаление задачи в фоновом режиме через N мс, вместо функции можно передавать строку для вычисления скрипта(как eval())
t=setInterval(функция,N)/clearInterval(t) - выполнение/удаление задачи в фоновом режиме через каждые N мс, вместо функции можно передавать строку для вычисления скрипта(как eval())
(FF)t=requestAnimationFrame (ф-я(пер_время),эл) / canselAnimationFrame (t) - установка/остановка ф-ии анимации
Диалоговые окна
getSelection()/document.getSelection() - получить об Selection с информацией о выделенном фрагменте в документе (не INPUT,TEXTAREA)
localStorage,sessionStorage (для одной сессии) - хранение текстовых значений для данной страницы (для сложных данных - перевод в JSON)
WebSQL хранение информации для данной страницы (устаревшее)
indexedDB объект хранения информации для данной страницы
Кэшироввание ресурсов
События Window
document - ссылка на об документа Document главного фрейма (имеет потомоков:1-Element,остальные - другие )
- Набор свойств с характеристиками окна браузера
- [screenX,screenY]/[screenLeft, screenTop],outerWidth,outerHeight - положение и размер окна браузера относительно рабочего стола (экрана)
- pageXOffset,pageYOffset - смещение скроллинга документа относительно окна рабочей области
- innerWidth,innerHeight - размер рабочей области окна браузера включая полосу прокрутки
- moveTo(x,y),moveBy(x,y),resizeTo(x,y),resizeBy(x,y) - изменение положения и размера окна абсолютно/относительно
- scrollTo(x,y),scrollBy(x,y) - прокручивание окна с доументом на величину пикселов абсолютно/относительно
- focus(),blur() - установка/потеря фокуса окна
- Открытие дополнительных окон/вкладок (доступ имеется если документы загружены с одного сервера)
- .
open (["url"],["имя_окна"(используют тэгом a/form target=)],["width=..;height=..;status=..;resizeable=.."],[true-обновлять историю])/.close () - открытие/закрытие окна/вкладки и возвращает новый об Window (для доступа к потомку) - .opener - ссылка на об Window окна, которое открыло текущее окно (для доступа к родителю)
- .closed - проверка закрытия окна
- .name - имя окна
- .
location - ссылка на об Location строки запроса на сервер(чтение/запись)- .href - весь текст аддресной строки(чтение/запись)
- .host(hostname+port),protocol,hostname,port,pathname - строка адреса с путем
- .search - строка с данными "?имя1=значен1?..."
- .hash - строка с меткой "#result"
- .reload([true]) - перезагрузка текущего документа с сервера/кэша памяти(проверка изменений в заголовке If-Modified-Since) [только с сервера]
- .replace("адрес") - загрузка нового документа без сохранения истории
- .toString() - возвращает текст href (поэтому можно получить вызвав только location)
navigator - ссылка на об Navigator позволяет управлять браузером.mimeTypes - массив об MimeType поддерживаемых типов данных, свойства MimeType:- description - строка описания данных
- enabledPlugin - ссылка на подключенный об Plugin/null
- suffixes - строка перечисленных расширений файлов
- type - MIME-тип уникальный в массиве (можно использовать как индекс)
- appCodeName,appName,appVersion,userAgent - имя и версия браузера
plugins - массив об Plugin модулей расширения- description - строка описания модуля расширения
- filename - строка имени подключаемого файла
- name - уникальное имя плагина (можно использовать как индекс)
- [N]/["имяMimeType"]/.имяMimeType - ссылка на об MIME-типа для работы с данными
- cookieEnabled - признак использования cookie для длительного хранения
- platform - строка платформы "Win32/MacPPC/Linux i586"
- onLine - (true/false) признак подключения к вэб-серверу текущей страницы (локальная/интернет), window.online/offline - обработчики
- javaEnabled() - проверка поддержки JAVA
[moz]Connection - об с информацией о сетевом соединении- bandwidth - пропускная способность в MB/s
- metered - признак ограничения скорости провайдером
- change - при изменении состояния соединения
geolocation - (для HTML5)об для местонахождения, при этом браузер спрашивает подтверждения.watchPosition(ф-я(об_позиц),ф-я(об_ошиб),[об_парам] ) - постоянно следить за текущую позицию (вызывается только при изменении), возвращает дескриптор- clearWatch(дескриптор) - приостановка постоянного слежения
.getCurrentPosition(ф-я(об_позиц),ф-я(об_ошиб),об_парам) - получить текущую позицию единоразовооб_позиц.coords - .longitude - широта
- .latitude - долгота
- .altitude - высота над поверхностью зетли
- .accuracy - точность (зависит от доступа:IP-город,WiFi-20м,мобильник-10м-1000м)
- .altitudeAccuracy - погрешность широты
- .heading - направление движения в град от севера по ч.стрелке
- .speed - скорость движения
- .Timestamp - дата измерения
- об_ошиб - информация об ошибке
- message - текст ошибки
- code - код ошибки (0-неизвестно,1-нет прав для определения позиции,2-Браузер не может определить позицию,3-истекло время ожидания)
- об_парам - дополнительные параметры
- enableHighAccuracy:true - разрешает исп-ть высокую точность через GPS(если устройство поддерживает)
- timeout:N - мс, время ожидания
- maximumAge:N - мс, срок кэширования гео-д-х
vibrate - об работы с вибрацией- .vibrate(N/[N1,N2,N3,...]) - включить вибрацию на Nмс/чередование N1(вибрация),N2(пауза),..
- .vibrate(0) - отключение всех вибраций
[moz-]battery - об доступа к сведениям о заряде батареи (важно для мобильных устройств) (в 2013 - только Firefox)- level - получить уровень заряда батареи 0.-1.
- charging - (true/false) - признак подключения к зарядному устройству
- chargingTime - получить кол-во времени до полной зарядки
- dischargingTime - сек, получить остаток времени работы от батареи
- onchargingchange - обработчик при изменился заряд батареи
- onchargingtimechange - обработчик при изменился остаток времени до полной зарядки
- ondischargingtimechange - обработчик при изменился времени работы до полной разрядки
- onlevelchange - обработчик при изменился уровен заряда батареи
history - ссылка на об-массив History хранит переходы по адресам сайтов браузера- back()/go(-1) - перейти на 1 шаг назад
- forward()/go(1) - после шага назад перейти на 1 шаг в перед
- go(N) - перейти на N шагов вперед/-N назад
- length - получить количество хранимых адресов
- pushState(об_данных,"заголовок",[url-ф-л]) - установка новой позиции в истории (история хранит об_данных любого типа)
- .replaceState(об_данных,"заголовок",[url-ф-л]) - замена текущего адреса без замены истории (аналог location.replace())
- popstate - событие window при добавлении истори, об_Event содержит св-во state: об_данных
screen - ссылка на об Screen с информацией о оборудовании дисплея- width,height - ширина и высота экрана в px
- [availLeft,availTop],availWidth,availHeight - [координаты] и размер эрана без панели задач и панели быстрого доступа в px
- colorDepth - глубина цвета экрана
- [moz]orientation - св-во ориентации экрана ([portrait(книж)/landscape(альбом)]-[primary(основн)/secondary])
- on[moz]orientationchange - обработчик при изменении значения ориентации
- lockOrientation(знач_ориент) - фиксация ориентации
- UnlockOrientation() - разблокировка зафиксированой ориентации
- об_опций
- method – метод запроса,
- headers – заголовки запроса (объект),
- body – тело запроса: FormData, Blob, строка и т.п.
- mode: «same-origin»/ «no-cors»/ «cors»-не позволяет делать запросы на другие сервера, указывает, в каком режиме кросс-доменности предполагается делать запрос.(если сервер вернет header: Access-Control-Allow-Origin: имя_домена/ *, то браузер не выполняет запрос)
- credentials – одно из: «omit», «same-origin», «include», указывает, пересылать ли куки и заголовки авторизации вместе с запросом.
- cache – одно из «default», «no-store», «reload», «no-cache», «force-cache», «only-if-cached», указывает, как кешировать запрос.
- redirect – можно поставить «follow» для обычного поведения при коде 30x (следовать редиректу) или «error» для интерпретации редиректа как ошибки.
- cache -
- context -
- credentials -
- destinations -
- headers -
- method-
- mode -
- redirect -
- referrer -
- url -
- referrerPolicy -
- append() -
- delete() -
- entries() -
- get() -
- has() -
- keys() -
- set() -
- values() -
- Headers.getAll() -
- headers -
- ok - true/false признак успешного запроса 200-299 / другой
- redirected -
- status - 200 при успешном
- statusText -
- type -
- url -
- useFinalUrl -
- body -
- bodyUsed -
- clone() - клонирование ответа/потока (дубликат)
- error() - преобразование ответа/потока как ошибочного
- redirect() -
- arrayBuffer() - преобразование ответа/потока в массив байтов
- blob() - преобразование ответа/потока в набор байтов (изображения)
- formData() - преобразование ответа/потока в об данных формы
- json() - преобразование ответа/потока в JSON
- text() - преобразование ответа/потока в текст
- frames - ссылка на массив всех фреймов как объектов Window находящихся в подчиненных фреймах
- parent - ссылка на объект Window окна где данное окно является фреймом (нет родителя - self)
- top - ссылка на объект Window окна самого верхнего уровня, где данное окно является фреймом (нет родителя - self)
- name - имя текущего объекта Window окна/фрейма (используют тэгом a/form target=)
- .имя_фрейм - имя фрейма-потомка как объекта Window
- Доступ к фрейму как к элементу через DOM имеют дополнительные свойства:
- contentDocument - ссылка на об Document который загружен в фрейм (доступно при одном домене)
- src - адрес загруженного документа(аттрибут), при записи загружает новый документ
- frameBorder - аттрибут, строка размера рамки
- longDesc - адрес описания
- marginHeight - верхнее,нижнее поле
- marginWidth - левое,правое поле
- noResize - "true" запрет изменения размера
- scrolling - "auto/yes/no" прокрутка
- height,width - (для IFRAME) высота и ширина окна фрейма
- alert(текст) - окно с текстом (преобразованый в текст) и одной кнопкой "OK"
- confirm(текст) - окно с текстом и двумя кнопками "OK","Отмена", возвращает true/false
- prompt(текст) - окно с текстом и строкой ввода и двумя кнопками "OK","Отмена", возвращает введенную строку
- toString() - выделенный текст
- length - количество сохраненных данных
- ["имя"]="знач" / .setItem("имя","знач") - запись значений
- ["имя"] / .getItem("имя")/.key(N) - получение значений
- removeItem("имя") - удаление значений одного значения
- clear() - удаление всех данных
- openDatabase("имя_БД","№_версии_БД","текст_имя_табл",кол_ячеек,ф-я_при_открыт(),ф_при_созд() ) - создать/открыть БД, получить об_БД
- об_БД.transaction(ф-я(об_транз) ) - выполняет запрос (транзакцию), выполняет ф-ю получающую об_транз
- об_транз.executeSql("SQL-запрос_[шаблон_с_?]",[масс_знач_вместо_?],[ф-я(об_транз,результат)]) - выполняет SQL-запрос [с использование арг вместо ?] [ф-я при получении результата]
- результат.rows - массив строк результата(.length-количество строк,.item(N)-одна строка)
- строка.свойство - одно свойство об строки
- строка.insertId - уникальный ключ об строки
- indexedDB.open("имя_БД",N-версия) - создать/открыть запрос_БД, получить об_БД
- indexedDB.deleteDatabase("имя_БД") - закрыть БД, результат получает в обработчике
- запрос_БД.onerror=ф-я(об_ошибк) - обработчик при неудачном открытии
- запрос_БД.onupgradeneeded=ф-я(об_событ) - обработчик при отсутствии базы с этим номером версии (обычно - создание БД)
- запрос_БД.onsuccess=ф-я(об_событ) - обработчик при удачном открыти и е
- об_событ.target.result / запрос_БД.result - удачно открытая БД (.version - получить версию БД, .name - имя БД,.objectStoreNames - массив хранилищ, .close() - закрыть БД)
- БД.createObjectStore("имя_табл",[{keyPath: "myKey"}]) / БД.deleteObjectStore("имя_табл") - создать и открыть/удалить хранилище "имя_табл", получить его об_табл, с указанием имя свойства-ключа в keyPath (при отсутствии - создается новое свойство с ключом)
- ТБ.createIndex("имя_свой","имя_свой",{unique: true/false}) / ТБ.deleteIndex() - создать/удалить индекс по указанному свойсву с/без уникальности, их может быть несколько
- ТБ.index("имя_свой") - получить об_индекс для быстрого доступа по имя_свой как по ключу (.get(), ) с обработчиками onsuccess,onerror
БД.transaction("имя_табл"/масс_имен_табл, "readonly(ум)/readwrite/versionchange") - получить об транзакции для операций над БД и флагами доступа к хранилищам- об_тран.objectStore("имя_табл") - открыть хранилище "имя_табл", получить его об_операц для операций
- об_операц.get(ключ) - получить об данных по ключу
- об_операц.[вендор]getAll() - получить массив всех об данных (присутствует не во всех браузерах)
- об_операц.add(об_данных) - добавление д-х (если ключа еще нет), получает об_операц .onsuccess - событие при удачном добавлении д-х, ф-я(об_событ), где об_событ.result - уникальный ключ д-х
- об_операц.put(об_данных) - запись/перезапись(если такой ключ есть) одного об данных
- об_операц.delete(ключ) - удаление одного об данных по ключу
- об_операц.clear() - удаление всех об данных
- об_операц.abort() - отмена транзакции
- об_операц.count() - количество объектов в хранилише
об_операц.openCursor()/openKeyCursor() - получение курсора для перемещения по хранилищу и получения хранимого об/ключа- об_курс.onerror=ф-я(об_ошиб) - событие при удачном установке курсора
об_курс.onsuccess=ф-я(об_событ) - событие при удачном полчении курсора- об_событ.target.result:
- .value - получить значение
- .key - получить значение ключа
- .continue() - переход к следующему значению и повторный вызов onsuccess/onerror)
- HTML manifest="имя.manifest" - установка файла манифеста для кэширования
- Файл имя.manifest:
CACHE MANIFEST - первая строка
CACHE: путь/имя - ресурс загружаемый локально
NETWORK: путь/имя - ресурс загружаемый с сервера
FALLBACK: путь/имя - ресурс загружаемый с сервера, а при отсутствии доступа к серверу - локально applicationCache - об доступа к кэшу- .status - состояние кэша
- onchecking,onobsolete,onupdateready,ondownloading - обработчики при изменении состояния кэша
- .update() - обновление ресурсов в кэше (при начальной загрузку страницы или изменении ф-ла манифеста)
- .swapCache() - переход к ресурсам по схеме нового манифеста
- .abort() - отмена доступа к кэшу
- hashchange - при изменении хэша (для старых браузеров - jquery)
- online - при восстановлении связи с сервером (откуда загружена страница)
- offline - при обрыве связи с сервером (откуда загружена страница)
deviceorientation - при изменении ориентации экрана устройства в пространстве, где ф-я(об_соб)- об_соб.alpha - угол поворота по вертикальной оси Z
- об_соб.beta - поворот по оси X
- об_соб.gamma - поворот по оси Y
- об_соб.absolute - признак возможности определения углов
devicemotion - при движении устройства в пространстве, где ф-я(об_соб)- об_соб.acceleration.x/.y/.z - ускорения по осям
- об_соб.accelerationIncludingGravity.x/.y/.z - ускорения по осям с учем силы тяжести(z+9.8)
- об_соб.rotationRate.alfa/.beta/.gamma - углы поворота по осям
- об_соб.interval - интервал измерения данных
- compassneedscalibration - при необходимости выполнения колибровки компаса, где ф-я(об_соб)
- об_соб.preventDefault() - отмена калибровки
- devicelight - при изменении освещенности (от датчика), где ф-я(об_соб)
- об_соб.value - числовое значение в люксах
- lightlevel - при изменении освещенности (от датчика) 3 уровня, где ф-я(об_соб)
- об_соб.value - значение в виде строки "dim/normal/bright"
- userproximity - при обнаружении вблизи такого же устройства (от датчика) 3 уровня, где ф-я(об_соб)
- об_соб.near - (true/false) признак обнаружения
- deviceproximity - при изменении расстояния до такого же устройства (от датчика) 3 уровня, где ф-я(об_соб)
- об_соб.value - дистанция в см
- об_соб.min/.max - погрешность дистанции в см
- .defaultView - ссылка на об Window текущего документа
- .doctype - ссылка на узел типа документа класса DocumentType - тэг !DOCTYPE
- .documentElement - ссылка на корневой элемент всего докумета (для html - HTML,xml - корень)
- .head - ссылка эл заголовка HEAD
- .body - ссылка на эл BODY
- .title - название текущего документа в тэге TITLE, позволяет записывать
- .activeElement - активный элемент в текущий момент, имеющий фокус ввода
- .forms - массив об Form - всех тэгов FORM документа,каждый содержит массив elements с объектами элементов ввода
- .имя_формы - об Form с аттрибутом name="имя_формы"
- .anchors - массив об Anchor - меток для перехода, тэги (A name="")
- .links - массив всех ссылок тэгов (A href=""),AREA
- .images - массив всех тэгов IMG
- .имя_изобр - об Image с аттрибутом name="имя_изобр"
- .applets - массив об Applet - всех тєгов APPLET (устаревшее свойство)
- .all - (для IE) массив (числовой и текстовый) всех тєгов документа
- .elementFromPoint(x, y) - возвращает самый глубоко вложенный блок по указанным координатам клиентского окна документа
.styleSheets - массив всех об CSSStyleSheet - таблиц стилей подключенных тэгами STYLE,LINK- styleSheets[N].type/.href/.title/.media/.disabled - аттрибуты тэга с талицей стиля
- styleSheets[N].insertRule("селек+правило",N-позиц)/.deleteRule(N-позиц) или addRule("селек","правило",[N-позиц])/removeRule(N-позиц)(для IE) - добавление/удаление привила таблицы
styleSheets[N].cssRules / styleSheets[N].rules(для IE) - массив всех об CSSRule - правил стилей- selectorText - строка селекстора этого правила
- style - об CSS2Properties с установленными стилями
- cssText - текстовое представление селектора со стилями
- type - N тип строки правила
- .location/.URL - адрес загруженного документа (чтение),т.к. сервер может вернуть другой документ
- domain - получить имя сервера загрузки документа (записать можно окончание имени сервера, а при совпадении этих значений можно получить прямой доступ к документу фрейма)
- lastModified - дата модификации этого документа (передается сервером в заголовке Last-Modified)
- referrer - url-адрес с которого был переход браузера по гиперссылке
- .hasFocus(об_эл) - проверка наличия фокуса
- .open()/.close() - открытие/закрытие разбора HTML-текста в новом окне (после создания нового окна)
- .write("строка"),.writeln("строка")(для pre) - запись строки в текущий HTML-документ и последующий разбор (до завершения загрузки документа)
- Выборки об-элементов
- .getElementById("ID") - получить один эл с аттрибутом id="ID"/неудача null(для XML применяют при типе !DOCTYPE id)
- .getElementByTagName[NS](["простр_имен"/null],"ТЭГ/тэг/*") - "живая"(в переменной всегда актуальное количество) коллекция (псевдомассив) об указанных тэгов [с пространством имен] /неудача - []
- .getElementByName("имя") - "живая"(в переменной всегда актуальное количество) коллекция (псевдомассив) об с аттрибутом name="имя" (для HTML) /неудача - []
- .getElementsByClassName("имя_класса") - (html5) "живая"(в переменной всегда актуальное количество) коллекция (псевдомассив) об имеющие класс
- .querySelector("селектор") - (html5)получение одного эл по селектору
- .querySelectorAll("селектор") - (html5) "статичная"(количество постоянно) коллекция об по селектору
.cookie - строка присвоеных наборов "имя=значение"(значение может состоять из пар разделенных ":") для этого документа (запрет - ;,разделители) хранимая в браузере, возвращается целиком разделенных ";" и передаваемая на сервер при запросах- document.cookie - получить единую строку сохраненных пар данных (ключ=значение) разделенных ";"
- document.cookie='ключ=значение[ ;настройки]' - сохранить пару (ключ=значение) [с применением настроек] Дополнителные настройки одной переменной cookie добавляемые в хранилище:
- ;expires=Date.toGMTString() / ;max-age=N - срок/длительность(сек) хранения cookie этого сайта (по умолчанию - одна сессия) значения хранятся в файле
- ;path=путь - указание пути домена в которых страницы имеют доступ к этим cookie
- ;domain=домен - часть имени домена с конца имеющих доступ к текущему cookie(по умолчанию - точно этот домен)
- ;secure - cookie будут передаваться на сервер только протоколом HTTPS
.implementation - ссылка на объект DOMImplementation для проверки модулей- .hasFeature("модуль","версия"/"") - проверка поддержки модулей (Core,HTML,XML,StyleSheets, CSS,CSS2,Events,UIEvents,MouseEvents,HTMLEvents,MutationEvents,Range,Traversal,Views)
- .createDocument(["простр_имен"/null],"об_эл_корневой"/"",об_типа/null) - создать об Document [с корневым об] для формирования HTML или XML-документа(для IE - new ActiveXObject("MSXML2.DOMDocument"))
- .createHTMLDocument - создание об Document для HTML
- .createDocumentType("имя_типа",откр_идент/null,сист_идент/null) - создание тэга !DOCTYPE
- .async - true(ум)/false признак асинхронной(обработчик onload) загрузки (при создании об Document - createDocument() )
- .load("URL-документа") - выполнение загрузки нового докуметна HTML/XML формата любым протоколом методом GET (при создании об Document - createDocument() )
- .onload - обработчик загрузки в асинхронном режиме документа
- .readyState - статус загрузки документа: 'loading', 'interactive', 'complete', изменение состояние выполняется событием readystatechange
- Тэг
XML в документе содержат XML-данные - отображаютя, их надо скрывать стилем xml{display:none;} - Фабрики для создания новых узлов,элементов
- .createTextNode("текст") - создание нового текстового узла
- .createElement[NS](["простр_имен"/null],"имя_тэга") - создание нового узла HTML/XML
- .createDocumentFragment() - временный корень для подготовки и внедрения иерархии узлов
- .createAttribute[NS](["простр_имен"/null],"имя_аттр") - создание об Attr
- .createCDATASection("данные") - узел хранимых данных (для XML)
- .createComment("строка") - узел комментария
.createProcessingInstruction("об_цель","инструкц") - (для XML)узел Processing- data - строка XML - в угловых скобках
- target - строка цели XML - после первой скобки
.createRange() - об_Range с начальными точками в начале (при изменениях внутри об_Range остается актуальным)- .collapsed - проверка совмещения начальной и конечной точки - т.е. пустая
- commonAncestorContainer - получить общий узел содержит внутри и начальную и конечную точки
- endContainer - получить узел содержит внутри конечную точку
- startContainer - получить узел содержит внутри начальную точку
- endOffset - получить позицию конечной точки внутри endContainer
- startOffset - получить позицию начальной точки внутри startContainer
- collapse([true]) - переносит начальную или конечную точки в одну - [в начальную]
compareBoundaryPoints(N,об_Range) - сравнение двух областей по константе, возврат -1/0/1- START_TO_START = 0
- START_TO_END = 1
- END_TO_END = 2
- END_TO_START = 3
- deleteContents() - удаление контента находящегося в выделенной области
- cloneContents() - получить копию фрагмента типа DocumentFragment
- extractContents() - открепление контента выделенной области, возвращает об DocumentFragment
- insertNode(об_узла) - вставка узла в начало области и он становится начальной точкой
- selectNode(об_узла) - внутри документа выбирается один узел, который и становится всей областью
- selectNodeContents() - внутри документа выбирается один узел, потомки которого определяют всю область
- setEnd[After/Before](об_узла,[N]) - установка конечной точки на указанный узел сосмещением или после/перед указанного
- setStart[After/Before](об_узла,[N]) - смещение начальной точки на указанный узел сосмещением или после/перед указанного
- surroundContents() - обертывание области указанным узлом
- toString() - текстовое представление области
- cloneRange() - получить копию об Range с тем же фрагментом
- detach() - отказ от использования области
- .createExpression("XPath-строка",функция_простр_имен/null) - создание XPath-выражения
- .evaluate(эл_контекст,узел_цель,функция_простр_имен/null,N-тип_ответ, XPath-ответ/null) - выполнение XPath-запроса в контексте элемента, ответ возвращает новый/вставляет в старый
- язык XPath для выборки элементов, похож на комбинацию селекторов
- имя - набор всех тэгов с именем "имя" в корне
- имя[N] - N-й тэг из всех с именем "имя" в корне
- имя[last()-N] - N-й с конца тэг из всех с именем "имя" в корне
- имя1/имя2 - набор всех тэгов с именем "имя2" вложеных в "имя1" в корне
- имя1/имя2[N] - набор всех N-х тэгов с именем "имя2" вложеных в "имя1" в корне
- . - контекстный тэг
- .//имя - набор всех тэгов с именем "имя" независимо от вложености в корень
- имя/@аттриб - набор значений аттрибута "аттриб" всех тэгов с именем "имя" в корне
- имя[@аттриб="значен"] - набор всех тэгов с именем "имя" в корне содержащих аттрибут аттриб="значение"
- имя/text() - набор текстовых значений внутри всех тэгов с именем "имя" в корне
- префикс:имя - набор всех тэгов с именем "имя" и префиксом "префикс" в корне
- count(..) - получить число количества найденных тэгов
- .importNode(об_узла,true-потомки) - создание копии любого узла без событий (кроме Document,DocumentType)
- .cloneNode(true-потомки) - создание копии текущего узла для внедрения
Объект узлов и элемента
- Параментры всех узлов
nodeType - (N) тип узла соответствуют константам- 1 - ELEMENT_NODE
- 2 - ATTRIBUTE_NODE
- 3 - TEXT_NODE
- 4 - CDATA_SECTION_NODE
- 5 - ENTITY_REFERENCE_NODE
- 6 - CENTITY_NODE
- 7 - PROCESSING_INSTRUCTION_NODE
- 8 - COMMENT_NODE
- 9 - DOCUMENT_NODE
- 10 - DOCUMENT_TYPE_NODE
- 11 - DOCUMENT_FRAGMENT_NODE
- 12 - NOTATION_NODE
- nodeValue - значение узла (текстовый - текст, аттрибут - значение, комментарий - текст, остальные - null)
- data - текстовое содержимое узла (аналог nodeValue)
- textContent - текстовое содержимое элемента и его потомков, при записи строки тэгов не преобразуются в элементы, отображаются угловыми скобками
- innerHTML - текстовое представление содержимого тэга причтении, создание элементов внутри текущего элемента
- outerHTML - текстовое представление текущего тэга с содержимым, запись не рекомендуется
- nodeName/tagName(только тэг) - имя узла/элемента в верхнем регистре
- localName,namespaceURI,prefix (для XML) - строка локального имени,пространства имен,префикс узла
- isSupported("модуль","версия") - проверка поддержки узлом версии модуля
- normalize() - удаление у потомков пустых и объединение смежных текстовых узлов (после манипуляций)
- Перемещение по иерархии узлов(между элементами могут находиться текстовые узлы, их нет если html - в строку без пробелов, комментарии)/элеменов (document - не элемент)
- ownerDocument - ссылка на об Document текущего узла
- childNodes / children - массив всех дочерних узлов/элементов
- hasChildNodes() - проверка наличия дочерних узлов/элементов
- firstChild/firstElementChild - первый дочерний узел/элемент
- lastChild/lastElementChild - последний дочерний узел/элемент
- nextSibling/nextElementSibling - следующий узел/элемент
- previousSibling/previousElementSibling - предыдущий узел/элемент
- parentNode/parentElement - родительский узел/элемент
- append(об1/фрагм/текст,..) - вставка текста или узла/всего фрагмента в конец всех дочерних
- pretend(об1/фрагм/текст,..) - вставка текста или узла/всего фрагмента в конец всех дочерних
- before(об1/фрагм/текст,..) - вставка текста или узла/всего фрагмента перед текущим узлом как сосед
- after(об1/фрагм/текст,..) - вставка текста или узла/всего фрагмента после текущего узлоа как сосед
- replaceWith(нов_об/фрагм/текст) - замена текущего узла на новый, возвращает удаленный
- appendChild(об1/фрагм) - (устаревший) перенос узла/всего фрагмента в конец всех дочерних
- removeChild(об1) - (устаревший) открепление дочернего узла, возвращает его
- remove() - открепление текущего узла, возвращает его
- replaceChild(нов_об/фрагм,доч_об) - (устаревший) замена дочернего узла на новый, возвращает удаленный
- insertBefore(нов_об/фрагм,доч_об) - (устаревший) добовление узла/всего фрагмента перед указаным дочерним
- cloneNode(true-потомки)/document.importNode(об_узла,true-потомки) - создание копии текущего узла для внедрения
- insertAjacentHTML('положение','HTML-строка') - вставка HTML-строки (с разбором HTML) в указанное место относительно текущего эл:
- beforebegin - перед откр.тэгом элемента
- afterbegin - перед первым дочерним
- beforeend - после последнего дочернего
- afterend - после элемента
- insertAjacentText('положение','строка') - вставка простой строки в указанное место относительно текущего эл:
- beforebegin - до элемента
- afterbegin - перед первым дочерним
- beforeend - после последнего дочернего
- afterend - после элемента
- insertAjacentElement('положение',об_эл) - вставка об_эл в указанное место относительно текущего эл:
- beforebegin - до элемента
- afterbegin - перед первым дочерним
- beforeend - после последнего дочернего
- afterend - после элемента
- contains(об_эл) - проверка указанного узла является потомком для текущего независомо от уровня
compareDocumentPosition(об_эл) - определение местоположения указанного узла к текущему, возврщает число- Константы об Node
- 1 - DOCUMENT_POSITION_DISCONNECTED
- 2 - DOCUMENT_POSITION_PRECEDING
- 4 - DOCUMENT_POSITION_FOLLOWING
- 8 - DOCUMENT_POSITION_CONTAINS
- 16 - DOCUMENT_POSITION_CONTAINED_BY
- 32 - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
- isEqualNode(об_узел) - проверка узлов на идентичность по: тип узла, имя тэга, текст внутри
- isSameNode(об_узел) - проверка узлов что они являются ссылками на один и тот же узел
- closest("селектор") - получение ближайшего предка (может быть сам узел) соответствующий селектору
- Набор свойств с характеристиками области элемента
- offsetParent - (важно для не static) ссылка на об_эл относительно которого вычисляются координаты и размеры top,left.., это BODY или TD/TH/TABLE или ближайший предок со стилем position: не static, равно null для скрытых (display:none), для BODY/HTML, для position:fixed
- offsetLeft,offsetTop - вычисленные местоположение относительно offsetParent (числовой тип в пикселах без размерности)
- offsetWidth,offsetHeight - вычисленные общие размеры элемента, включая границы (числовой тип в пикселах без размерности)
- clientLeft,clientTop,clientWidth,clientHeight - (только чтение) начало отступа от границ (толщина границы + ширина прокрутки) и видимые размеры элемента (без ширины прокрутки)
- scrollLeft, scrollTop - прокрутка (для BODY - всего документа), можно записывать (0/Infinity - прокручивает до конца)
- scrollHeight, scrollWidth - размер всего элемента, при наличии прокрутки - больше видимого, при отсутствии равна clientWidth,clientHeight
- getClientRects() - получение массива об с координатами эл (если это текст - каждой строки) {left, top, right, bottom, x, y, width, height}
- getBoundingClientRect() - получение об со всеми координатами эл {left, top, right, bottom, x, y, width, height}
- tabStop - проверка, может ли элемент получать фокус
- scrollTo() - смещение документа чтобы текущий элемент был в левом верхнем углу
- focus() - получение фокуса ввода и элемент формы становится видимым
- scrollIntoView([false-низ]/об_настр) - прокручивает документ чтобы тэг стал выдимым сверху(ум)/снизу
- location.hash="#метка" / location.replace("#метка") - смещение документа к метке
- setCapture() и releaseCapture() (для IE) - установка/отмена перехвата событий мыши в обработчике этого элемента
- [moz/webkit]RequestFullScreen() - расположение элемента на весь экран
- document.[moz]CancelFullScreen() - отмена полноэкранного режима любых элементов
- requestPointerLock() - удаление курсора с экрана
- animate([{стиль1:знач,[easing: 'ease-out']},..,{стильN}],N-длит/об_настр) / animate({стиль1:[знач1,знач2]},..,стильN:[знач1,знач2]},N) - анимация
- .getElementsByTagName[NS]([простр_имен],"тэг") - массив потомков об-эл с указанным именем тэга
- .getElementsByClassName("класс") - массив потомков об-эл с указанным именем класса
- .querySelector("селектор") - первый потомок об-эл указанным селектором
- .querySelectorAll("селектор") - массив потомков об-эл указанным селектором
- .matches("селектор") - проверка на соответствие селектору возвращает true/false
- .closest("селектор") - возвращаем ссылку на ближайшего родителя с соответствующим селектором, если такого нет - null
- .selectNodes()/selectSingleNode() (для IE) - выполнение XPath-запроса
- .transformNode()/transformNodeToObject() (для IE) - применение XSLT-стилей
- Свойства установленные как аттриуты тэга (кроме XML), аналог вызова .getAttribut('имя_аттр'), установки .setAttribut('имя_аттр',значение)
- id - имя итентификатора, содержимое аттрибута id
- name - содержимое аттрибута name, для элементов форм, фреймов, изображений, меток
- className - содержимое аттрибута class
- href - абсолютный адрес загружаемого файла (для A,AREA)
- align - горизонтальное выравнивение
- hidden - тэг исчезает с экрана
- disabled - элемент формы недоступен, при наличии в тэгах STYLE,LINK - отключает
- src - URL-адрес с запросом на любой сервер (для img-возвращает двоичный файл,frame,script-возвращает javascript-код и исполняет его,iframe-возвращает HTML-документ,при общем сервере есть доступ к содержимому),
- height,width - размеры высоты и ширины в пиксетах (для Canvas,svg)
- dir - направление текста
- lang - язык
- title - текст подсказки
- draggable - возможность перетаскивания
- dataset.имя - аттрибут пользователя "data-имя" для хранения строки информации, "data-имя-имя2" - обрящаться dataset.имяИмя2
- contentEditable - превращает текстовый элемент в редактируемое поле
- spellcheck - для редактируемых полей проверка грамматики
- Свойства и методы работы с аттриутами, название аттрибута не зависят от регистра, при записи в html - будут в нижнем
- hasAttributes() - true/false проверка что узел - элемент и наличие аттрибутов
- hasAttribute[NS](["простр_имен"/null],"имя_аттр") - true/false проверка наличия аттрибута
- getAttribute[NS](["простр_имен"/null],"имя_аттр"), setAttribute[NS](["простр_имен"/null],"имя_аттр","знач"), removeAttribute[NS](["простр_имен"/null],"аттр") - чтение,установка,удаление аттрибутов
- getAttributeNode[NS](["простр_имен"/null],"имя_аттр"), setAttributeNode[NS](об_Attr), removeAttributeNode(["простр_имен"/null],об_Attr) - получить,установка,удаление об Attr
- getAttributeNames() - получить массив с именами всех аттрибутов
attribures - массив всех аттрибутов об Attr(есть свой интерфейс), Attr имеет сойства:- name - получить строку имени аттрибута
- ownerElement - ссылка на об элемент к которому привязан аттрибут/null
- specified - true при установке явно,false значение предусмотрено по умолчанию
- value/textContent/firstChild.data - текстовая строка значения
classList - массив (позволяет перечислять for..of ) классов в аттрибуте class, имеет интерфейс- .add('имя_класса'/масс_класс) - добавление одного/несколько классов
- .remove('имя_класса'/масс_класс) - удаление одного/несколько классов
- .item(N) - получить класс по номеру
- .toggle('имя_класса',[true/false]) - установка или удаление класса, второй аргумент превращает в метод add/remove
- .contains('имя_класса') - проверка наличия класса
- .replace('стар_имя_класса','нов_имя_класса') - замена класса на новый
- CSS-стили тэгов
- style.имя_стиля/style[имя_стиля] - получить/установить один стиль для этого тэга в виде строки (свойство cssFloat - стиль float, а IE - styleFloat), в варианте style[имя_стиля] имя_стиля применяют с дефисати: style['font-size'], но style.fontSize, удалить стиль - присвоить пустую строку ='', при установке множественного стиля (margin) браузер распаковывает его (marginTop, marginLeft,..)
- style.cssText - получить/установить всю строку стилей (аттрибут style) для текущего тэга одной строкой
- window.getComputedStyle(об_эл,"псевдо"/null).имя_стиля/.currentStyle.имя_стиля(для IE) - вычислить и прочитать все стили для этого элемента/ или для псевдо элемента ('::before'/'::after'), в фиксированых значениях и распакованных стилях, стиль :visited вычислить невозможно в целях конфиденциальности
- Возможности перетаскивания эл (HTML5) - аттрибут draggable
- События при перетаскивании
dragstart - начало перетаскивания об,ф-я(об_соб),об_соб.originalEvent.dataTransfer имеет свойства для установки- effectAllowed - установка вида указателя мыши:"move"
- setData('MIME-тип','значение') - запись в эл любых д-х с типом (text/plain - простой текст,text/html - строка html, text/uri-list - текст адреса,DownloadURL-указание файла с передачей значеия "MIME-тип:имя_файла:путь")
setDragImage('путь + ф-л.(png/jpg/..)',x,y) - установка полупрозрачного изоражения под курсором при перетаскивании с относит коорд x,y(при отсутствии - полупрозрачный эл)- addElement (об_эл, х, у) - изображение элемента под курсором (вместо setDragImage())
- dragend - прекращение перемещения об
- dragenter - (для приемника)об вошел в приемник
- dragover - перемещение над при осинус, продолжается (по ум - отображение файла) об_соб.stopPropagation(); об_соб.preventDefault()
- dragleave - (для приемника)над приемником и выходит за его границу
- drag - процесс перетаскивания об
drop - (для приемника)об в приемнике при прекращении перетаскивания (отпускание мыши)- effectAllowed - установка вида указателя мыши:"move"
- files - массив об File переданных файлов
- getData('MIME-тип') - получить записаные д-е
- types - массив всех MIME-типов записаных данных (где "Files" - при наличии файлов)
- События при перетаскивании
- Возможности копирования и вставки буффера обмена
- События
beforecopy - перед копированием,ф-я(об_соб),об_соб.originalEvent.clipboardData (для IE - window.clipboardData) имеет свойства для установки- setData('MIME-тип','значение') - запись в эл любых д-х с типом (text/plain - простой текст,text/html - строка html, text/uri-list - текст адреса,DownloadURL-указание файла с передачей значеия "MIME-тип:имя_файла:путь")
- сору - копирование
- beforecut - перед вырезанием
- cut - вырезание
beforepaste,paste - перед вставкой и вставка- getData('MIME-тип') - получить записаные д-е
- files - массив об File переданных файлов
- types - массив всех MIME-типов записаных данных (где "Files" - при наличии файлов)
- События
- Обработчики событий
- В виде свойства элемента
.on имя_события = имя_функции/function(){..} - установка свойству объекта функции-обработчика события, возврат false - отменяет действие по умолчанию - on имя_события = "код в аттрибуте" - в виде аттрибутов тэга, получают строку-код и присваивает свойству способом: элемент.on имя_события = function(event){[код в аттрибуте]}, код внедряется в метод элемента (this-об_элем), аргумент с именем "event" уже внедрен и может быть использован в коде
- .onerror - (аналог try/catch)обработчик всех ошибок (body) т.к. по умолчанию они игнорируются(где функция(перем-сообщение_о_ошике,перем-имя_файла_с_ошибкой,перем-N_строки_с_ошибкой),возврат true-обработка завершена)
- onabort/onerror - при обрыве/ошибке загрузки изоражения (img)
- onfocus / onblur - получение/потеря фокуса (button,input,label,select,textarea,body)
- onchange - после потери фокуса значение изменено (input,select,textarea)
- onselect - выполнено выделение текста (input,textarea)
- onclick/ondblclick/onmousedown/onmouseup/onmouseover/onmouseout/onmousemove/onwheel - нажатие/отпускание кнопки и перемещение мыши
- onkeypress/onkeydown/onkeyup - клавиша нажата/отпущена
- onload/onunload - загрузка/выгрузка заверщена документа/фрейма/изображения (body,frameset,img)
- onreset/onsubmit - при нажатии кнопки reset/submit (Form) запускает метод reset()/submit()
- onresize - изменены размеры окна (body,frameset)
- onlosecapture(для IE) - после setCapture() при появлении системного соощения и прерывании перехвата мыши
- События в три этапа 1-"перехват" от Document к узлу(у IE после setCapture()), 2-в узле, 3-всплытие от узла к предкам до Document (focus не всплывает),
эл.addEventListener ("имя_события", функция(об_событ)/ {handleEvent(об_событ){..}}, [опции]) - установка объекту обработчика события в виде ф-ии/объекта с методом handleEvent (attachEvent ("on имя_события",функция())-для IE), this - об_элем регистрации
опции
{once:true} - удаление обработчика после срабатывания
{capture:true} или true, false-ум - перехват события при погружении, по умолчанию - при всплытии
{passive:true} - сообщение браузеру никогда не вызывать preventDefault(), чтобы действие по умолчанию началось немедленноэл.removeEventListener ("имя_события", функция(об_событ), [опции]) - удаление у объекта обработчика события(detachEvent ("on имя_события",функция())-для IE),безымянную ф-ю удалить нельзя- Создание искусственного события
- new Event("тип_событ", опции={bubbles:false, calcelable:false}) - создание простого искусственного об события bubbles:true-событие запускается к предкам, bubbles:false - (по ум) к потомкам, calcelable:true - возможность отменить действие по умолчанию
- new MouseEvent("тип_событ",{..clientX, clientY}) - создание события мыши с координатами
- CustomEvent("тип_событ", опции={bubbles:false, calcelable:false, detail:..}) - пользовательский конструктор событий позволяет передавать в detail любые данные
- UIEvent, FocusEvent, MouseEvent, WheelEvent, KeyboardEvent, CustomEvent - другие конструкторы событий
- document.createEvent("HTMLEvents/MouseEvents/UIEvents")/ document.createEventObject() (для IE) - искусственное создание об события
- об_событ.initEvent("имя_событ"-стандарт/любое , true/false-всплыт , true/false-отмен ум)/.initUIEvent(..)/.initMouseEvent(..много) - инициализация об события(кроме IE)
- эл.dispatchEvent(об_событ), где об_событ=new Event('имя_событ')/ эл.fireEvent("on имя_событ",об_событ) - запуск искусственного события в узле, возвращаеи false если в обработчике было запущенно preventDefault() (для установки в очередь - setTieout())
- Типы событий
- abort,error - остановка действия, ошибка
- focus,blur - получение/потеря фокуса - не всплывают
- focusin,focusout - получение/потеря фокуса - всплывают, присваивать только через addEventListener
- change - выполнено изменение д-х после потери фокуса
- input - выполнено изменение д-х при вводе/мышкой сразу, event.preventDefault() выполнить невозможно
- select - выполнен выбор в эл SELECT
- click, mousedown, mousemove, mouseout, mouseover, mouseup,wheel -
- DOMContentLoaded, load, beforeunload ,unload - 1-загружено html, DOM, без ресерсов, 2-закончена загрузка ресурсов, закончена выгрузка ресурсов (при раздушении)
- reset,submit - нажата кнопка reset,submit
- resize,scroll - выполнено изменение размера эл, смещение прокрутки
- DOMActivate,DOMFocusIn,DOMFocusOut - событие любого элемента
- DOMAttrModified, DOMCharacterDataModified, DOMNodeInserted, DOMNodeInsertedIntoDocument, DOMNodeRemoved, DOMNodeRemovedFromDocument, DOMSubtreeModified -
- keypress/keydown/keyup - клавиша нажата/отпущена
- cut/copy/paste - событие ClipboerdEvent, функция вырузать/копировать/вставить
- transitioned - окончание движения transition-анимации через css-стили (подключается к элементу только через .addEventListener() )
- contextmenu - нажание правой кнопкой мыши
- touchstart - прикасание пальцем к экрану (аналог mousedown)
- touchend - отпускание пальца от экрана (аналог mouseup)
- touchmove - движение пальцем по экрану (аналог scroll)
- touchcancel - отмена нажания (при нажатой кнопке - другим пальцем нажать за пределами кнопки)
- об_script.onload - при создании тэга script и внедрении в DOM и он загрузился и выполнился, в обработчике доступна функция _()
- об_script.onerror - ошибка при загрузке скрипта
- Свойства объекта события в функции обработчике (один аргумент обработчика/ window.event или event-для IE)
- .isTrusted - true для настоящих браезерных событий, false - искусственное
- .stopPropagation() - остановка распространения события к предкам, но все обработчики текущего элемента выполнятся если их несколько
- .stopImmediatePropagation() - остановка распространения события к предкам и прекращает выполнение всех остальных обработчиков текущего элемента если их несколько
- (для IE).сancelBubble- установка true отключает всплытие
- .preventDefault() - отменяет действие по умолчанию
- (для IE).returnValue - установка false отменяет действие по умолчанию
- .cancelable - признак возможности отменить действия по умолчанию .preventDefault()
- .defaultPrevented - true если функция .preventDefault() уже была запуена и отменено действие по умолчанию
- .type - строка имени типа события
- .currentTarget / this - объект-элемент регистрации и обработки события, ловит все события потомков доступных через event.target
- .target / srcElement(для IE) - объект-элемент где произошло событие
- .eventPhase - N признак этапа события (об_соб.CAPTURING_PHASE/.AT_TARGET/.BUBBLING_PHASE)
- .bubbles - true/false признак всплытия
- .timeStamp - время происхождения события типа Date
- .view - (событ UIEvent) об Window где произошло событие
- .detail - (событ UIEvent) дополнительная информация (для click, mousedown, mouseup - количество щелчков:1/2/3, для DOMActivate-способ активации:1/2(гипер-ссылка))
- .button - (для mousedown,mouseup,click) указатель кнопки мыши:0(лев)/1(сред)/2(прав) (для IE значения складываются:1(лев)/2(прав)/4(сред))
- .altKey, .ctrlKey, .shiftKey, .metaKey(кроме IE) - признак удержания нажатой клавишу Alt,Ctrl,Meta,Shift
- Координаты курсора мыши относительно
- .offset[X/Y] - левого верхнего угла элемента
- page[X/Y] - области просмотра
- client[X/Y] - рабочего окна браузера
- screen[X/Y] - экрана
- clipboardData - объект данных для событий cul/copy/paste с методами: .getData('text/plain') - получить из памяти данные указанного типа
- dataTransfer - при событии drag&drop хранит объект с данными
- .relatedTarget (для IE fromElement/toElement) - дополнительный объект-элемент (для mouseover - покинутый элемент,для mouseout - куда переходит)
- .keyCode - ASCII-код нажатой клавиши(для keydown,keyup) или печатаемого Unicode-символа (для keypress)
- .charCode (кроме IE) - код печатаемого Unicode-символа (для keypress)
- .which - код печатаемого Unicode-символа
- (для IE).x,.y - координаты элемента относительно документа/самого внутреннего динамического
- changedTouches - массив объектов при событии каждого прикасания touchstart/touchend при их изменении
- page[X/Y] - координаты прикосновения пальца относительно области просмотра
- touches - массив данных о всех прикасаниях к экрану
- targetTouches - массив данных о прикасаниях к текущему элементу
- В виде свойства элемента
- Свойства об текстового/комментария узла
- .data - строка текста является узлом
- .length - длина строки
- .appendData("строка")/insertData(N-нач,"строка") - вставка в конец/позицию N подстроки
- .deleteData(N-нач,N-длина)/.replaceData(N-нач,N-длина,"строка") - удаление/замена подстроки
- .substringData(N-нач,N-длина) - получение подстроки
- splitText(N) - разбивает текст узла до позиции и с позиции, возвращает ссылку на второй
- Свойства об тэга FORM
- .elements - массив всех элементов формы и fieldset (кроме LABEL)
- .elements.имяFieldset - массив всех элементов внутри fieldset - является подвидом формы
- .имя_элемента - об-элемент с аттрибутом name="имя_элемента" (элементы с одинаковым именем помещаются в массив)
- length / elements.length - кличество элементов в форме
- .action,.encoding/enctype, .method,.target,.acceptCharset, - значения аттрибутов тэга FORM
- .onsubmit/.onreset/.submit()/.reset() - обработчики(return false - отменяет методы ум) и методы по ум запроса на сервер/сброс значений элементов
- Свойства об-элементов формы
- type - строка типа элемента (в INPUT - значение аттрибута, в textarea,select-one,select-multiple,button - имя тэга)
- form - ссылка на об тэга FORM, в котором содержится элемент
value (кроме BUTTON,SELECT - в OPTION) - аттрибут, текущее значение элемента, передается на сервер (текст INPUT и TEXTAREA/текст на кнопке),у file - для чтения- defaultValue - значение установленное в HTML
- checked - true/false признак установки элемента (radio,checkbox)
- defaultChecked - признак установки аттрибута checked (radio,checkbox)
- multiple (для SELECT,file) - признак установки аттрибута
- size - (для input,select) ширина в кол-ве символов / кол-во видимых меню
- src - (для image, audio, video)
- useMap - (для image) ссылка на эл MAP
- alt - (для image) текст если эл не отображается
- tabIndex - порядок обхода при TAB (значение >= 0), при наличии свойства позволяет получить фокус любому элементу .focus() (определяется css псевдоклассом :focus)
- htmlFor (для LABEL) - аттрибут for, указана строка id
validity - ссылка на об ValidityState проверки валидности поля, при предусмотренной проверке аттр (об_эл.willValidaty==true)- badInput - ошибка не правильного типа
- customError - проверка вызова ошибки пользователя методом об_эл.setCustomValidity('сообщ'), очистка с сообщ ""
- patternMismatch - проверка правильного заполнения (при наличии pattern)
- rangeOverflow/rangeUnderflow - проверка числового значения (при наличии min/max)
- stepMismatch - проверка числового значения (при наличии step)
- tooShort/tooLong - проверка количества символов (при наличии minlength/maxlength)
- typeMismatch - проверка типа при заполнении полей mail, number, url
- valueMissing - проверка заполнения (при наличии require)
- valid - результат всех проверок валидности
- checkValidity() - принудительное выполнение проверки валидности эл
- reportValidity() - отобразить системное сообщение при невалидном значении
- setCustomValidity('сообщение') - установка пользовательского сообщенияпри ошибке
- willValidity - проверка на подвержденин проверки валидности
- cols,rows (для TEXTAREA) - размер высота,ширины в кол-вах строк/символов
- maxLength (для INPUT) - аттрибут максимально возможное кол-во символов
- accessKey - (для input,label,legend) - комбинация клавиш для получения фокуса
- accept - (для file) список MIME-типов
- files (для file) - массив об File
- readOnly - true запрет изменять
- autofocus - признак установки первого фокуса при загрузке html страницы
- autocomplete - авто-заполнение полей (но в браузере может быть отключено)
- required - признак проверки пустого поля
- placeholder - текст отображенный при пустом поле
- select() - выделение всего имеющегося текста (для INPUT и TEXTAREA)
- focus() - перевод фокуса на элемент
- blur() - снимает фокус с элемента
- Свойства об-элементов меню
- options (для SELECT) - массив об Option
- new Option([меню],[значение],[true-defaultSelected],[true-selected]) - создание
- add(об_Option,об_Option-перед/null)/remove(N) - (для SELECT) добавление перед указанным или в конец/удаление
- index - получить индекс элемента
- selectedIndex - (для SELECT) индекс выбранного элемента (не multiple)
- selected - (для OPTION) признак выбранного элементы меню (для multiple)
- text - (для OPTION) строка меню
- defaultSelected - (для OPTION) признак установки аттрибута selected
- label - (для OPTGROUP) - аттрибут строка группировки
- value - значение которое получает переменная SELECT, отправляется на сервер
- length/options.length - количество меню
- Свойства об-элементов текстовых полей
- required - проверка не пустого поля
- readOnly - запрет изменения
- placeholder - строка при пустом поле
- pattern - проверка сответствия рег.выражению
- defaultValue - (для input,textarea) первоначальное значение записаное в HTML
- Свойства об-элементов числового поля
- min/max - аттриуты наименшее/наибольшее значение
- Свойства об-элементов Image изображения
- src - URL-адрес изображения (при записи нового - загружает и заменяет)
- onload/onerror/onabort - обработчик при окончании/ошибке/прерывание загрузки изображения в память
- complete - true после процесса загрузки - после событий (onload/onerror/onabort)
- height,width,alt,longDesc,(border,align,hspace,vspace - устарели) - свойства-аттрибутные
- useMap - ссылка на об карты MAP
- isMap - true при использовании карты
- data[] - массив из значений каждого пикселя R -data[i],G -data[i+1],B -data[i+2],A -data[i+3]
- Map - карта, контейнер для гиперссылок
- Свойства об-элементов Link гиперссылки, кнопка карты (A,AREA)
- href - абсолютный путь строки запроса, даже если в html относительный, чтобы получить как в html - getAttribute()
- href,protocol,host,hostname,port,pathname,search,hash - строка запроса
- accessKey,charset,hreflang,rel,rev,tabIndex,target,type - свойства-аттрибуты
- coords,shape - (для AREA) свойства-аттрибуты
- Свойства об типа документа DocumentType (чаще применяют для XML)
- internalSubset - строка внутреннего подмножества - в скобках []
- name - строка имя типа - после !DOCTYPE
- publicId - строка открытого внешнего подмножества
- systemId - строка системного внешнего подмножества
- Свойства об таблицы
- caption,tHead,tFoot,tBodies-масс - (для TABLE) ссылки на об-эл талицы
- border,cellPadding,cellSpacing,frame,rules,width,summary - (для TABLE) свойства-аттрибуты
- [create/delete][THead/TFoot/Caption]() - (для TABLE) создание/удаление об контейнера шапки/итогов/заголовка
- rows,insertRow(N), deleteRow(N) - (для TABLE,tbody,tfoot,thead) весь массив/добавление/удаление об строк
- align, ch, chOff, vAlign - (для tbody,tfoot,thead) свойства-аттрибуты
- rowIndex,sectionRowIndex,cells-масс, align,ch,chOff,vAlign,insertCell(N),deleteCell(N) - (для TR) свойства-аттрибуты и методы
- cellIndex,abbr,align,axis,ch,chOff,colSpan,headers,height,noWrap,rowSpan,scope,vAlign,width - (для TD,TH) свойства-аттрибуты
- Свойства об-элементов AUDIO/VIDEO
- controls - true/false признак
- src - файл ресурса
- currentTime - сек, текущая позиция воспроизведения
- defaultPlaybackRate - начальный коэффициент скорости для воиспроизведения (обычная скорость=1)
- playbackRate - текущий коэффициент для воиспроизведения
- duration - сек, вся длительность воспроизведения
- ended - получить true/false признак окончания воиспроизведения
- paused - получить true/false признак приостановки
- canPlayType("MIME-тип") - "probably"-да/"maybe"-возможно/""-нет проверка возможности воспроизведения ф-ов с MIME-тип
readyState - получить строку о текущем состоянии загрузки- uninitialized - ф-л не загружен
- loading - ф-л в процессе загрузки
- loaded - ф-л полностью загружен (но о готовности произвести неизвестно)
- interactive - есть воможность произвести (о полноте загрузки неизвестно)
- complete - ф-л полностью загружен и готов произвести
- seeking - true при выполнении пользователем прокрутки
- startTime - сек, позиция начала воизпроизвеедения ролика
- volume - установить/получить текушую громкость (0. - 1.)
- play() - пуск воспроизведения
- pause() - приостановка воспроизведения
- load() - загрузка в память ф-ла записанного в src с замещением предыдущего
- height - (для VIDEO)пкс, установленная высота ролика
- width - (для VIDEO)пкс, установленная ширина ролика
- poster - (для VIDEO) url-ф-л - картинка до воспроизведения
- videoHeight - (для VIDEO)пкс, натуральная высота ролика, хранится в файле
- videoWidth - (для VIDEO)пкс, натуральная ширина ролика, хранится в файле
- События загрузки ресурса
- loadstart - начало загрузки д-х
- durationchange - при получении инф о длительности (часть мета-д-х)
- loadedmetadata - при загрузке мета-д-х
- loadeddata - часть д-х загружены, что можно запустить
- canplay - часть д-х загружены, что можно успешно запустить
- canplaythrough - часть д-х загружены, что можно успешно запустить и возможен просмотр без приостановок
- progress - в процессе загрузки ресурса(для отображения загрузки)
- waiting - воспроизведение приостановлено для подгрузки д-х
- stalled - через 3 сек после остановки подгрузки
- load - после полной загрузки ролика
- error - при сбое загрузки ролика
- abort - пользователь останавливает загрузку ролика
- readystatechange - изменено занчение св-ва readyState
- emptied - после вызова метода load(), а старый ф-л уже вызружен
- События воспроизведения
- playing - начато воспроизведение (кнопкой пользователя, методом play() )
- timeupdate - в процессе воспроизведения при изменении позиции времени
- ended - при завершении воспроизведения
- События зависящие от пользователя или выполняемого метода
- play - вызван метод play()
- pause - приостановка воспроизведения методом pause() или пользователем
- seeking - при перемещении пользователем текущей позиции
- seeked - при окончании перемещении пользователем текущей позиции
- volumechanged - при изменении пользователем громкости или отключении звука
- ratechange - изменено скорость воспроизведения - св-во playbackRate
Просмотр значений
Введите объект
JQuery - модуль управления html-объектами через javascript-код
- jQuery - ($ - синоним) единый об содержащий все ф-ии и методы
(function($){javascript-код})(jQuery) - применяют для избежания конфликта с именем $ других модулей$(селект,[контекст]) - создание jQuery-обертки хранящий массив из ссылок выбранных об_эл- document - поиск во всем документе (по умолчанию)
- об_эл - поиск в контейнере указанного эл
- jQuery-элемент - поиск в контейнерах указанного массива jQuery-элементов, можно указать еще одну ф-ию $(..)
- "селектор" - контекст создается по эл селектора (вместо записи $(..))
- CSS-селекторы и псевдоклассы
- jQuery-псевдоклассы
:first - первый эл из всего списка:last - последний эл из всего списка:odd - каждый нечетный эл из списка: 1,3,5,7,9,...:even - каждый четный эл из списка: 0,2,4,6,8,10,...:first-child - каждый первый эл для каждого подмножества эл:last-child - каждый последний эл для каждого подмножества эл:only-child - каждый единственный эл у каждого подмножества эл:nth-child([N/odd/even/формула-n]) - каждый N-й/нечетный/четный/по_формуле_от_n эл у каждого подмножества эл (счет начинается с 1):eq(N) - по счету N-й эл (счет начинается с 0):gt(N) - все эл расположенный по счету после N-го (счет начинается с 0):lt(N) - все эл расположенный по счету перед N-ым (счет начинается с 0):checked - выбор все выбранные эл (проверяет фактически выбор дляinput type="checkbox/radio" ):disabled - выбор все неактивные эл (проверяет фактически отключенные):enabled - выбор все активные эл (проверяет фактически не отключенные):not(селект1) - выбор все эл, не содержащие ни одного соотв селект1:radio - выбор все выбранные элinput type="radio" :checkbox - выбор все эл флажкиinput type="checkbox" :animated - все эл управляемые анимацией:button - все эл кнопок:button ,input type="button/submit/reset" :contains("строка") - все эл которые содержат текст "строка":file - выбор все элinput type="file" :has(селект1) - выбор все эл-родителей, содержащие хотя-бы одно соотв селект1:header - выбор все эл заголовков:h1 доh6 :hidden - выбор все элinput type="hidden" :image - выбор все элinput type="image" :input - выбор все эл форм:input, select, textarea, button:parent - выбор все эл содержащие дочерние (не пустые):password - выбор все элinput type="password" :reset - выбор все элinput type="reset" :selected - выбор все выбранные эл меню (проверяет фактически выбор дляoption ):submit - выбор все элinput type="submit" :text - выбор все элinput type="text" :visible - выбор все видимые эл
- контекст
- Селекторы применяемые для отбора ссылок на об_эл
$("строка тэга",[об_аттриб]) - создание одного нового jQuery-элемента [с установкой аттрибутов, стилей, обработчиков]ТЭГ - создание эл из одного тэгаТЭГ / - создание эл из одного само-закрывающегося тэгаТЭГ /ТЭГ - создание эл из двух тэговТЭГ контент/ТЭГ - создание эл из двух тэгов с контентом- имя_аттриб:значение - установка значения аттрибута
- css:{свойство_css1:знач1,свойство_css2:знач2,..} - установка стилей css
- имя_событ:ф-я() - установка обработчика собития
- строка тэга
- об_аттриб
- Методы обертки возвращают обертку (для продолжения применять методы)
- eq(N) - получить обертку для одного N-го эл
- first() - получить обертку для одного 1-го эл
- last() - получить обертку для одного последнего эл
add ("селектор CSS"/"<эл> [контент] эл>",[об_эл/"селектор"/$(запрос)]) - получить из текущей обертки новую обертку добавлением других/новых эл- not(["селектор CSS"/об_эл/массив_эл/ф-я]) - получить обертку удаляя эл удовлетворяющих условиям (ф-я(){this-эл return true-удален})
- filter(["селектор CSS"/об_эл/массив_эл/ф-я]) - получить обертку отбирая эл удовлетворяющих условиям (ф-я(){this-эл return true-включен})
- slice(N-нач,[N-конца]) - получить обертку отбирая эл по индексам от N-нач до конца/(N-конца - 1)
- has(["селектор CSS"/об_эл]) - получить обертку отбирая эл содержащие потомков удовлетворяющих условиям
- children(["селектор CSS"]) - получить обертку из доченних эл которые соотв селектору
- closest(["селектор CSS"]) - получить обертку из эл имеющие единого предка соотв селектору
- contents() - получить обертку из содержимого эл - аналог innerHTML
- next(["селектор CSS"]) - получить обертку из эл - следующего брата текущего набора эл, соотв селектору
- nextAll(["селектор CSS"]) - получить обертку из эл - всех следующих братьев текущего набора эл, соотв селектору
- nextUntil(["селектор CSS"]) - получить обертку из эл - всех следующих братьев текущего набора эл пока не соотв селектору
- prev(["селектор CSS"]) - получить обертку из эл - предыдущего брата текущего набора эл, соотв селектору
- prevAll(["селектор CSS"]) - получить обертку из эл - всех предыдущих братьев текущего набора эл, соотв селектору
- prevUntil(["селектор CSS"]) - получить обертку из эл - всех предыдущих братьев текущего набора эл пока не соотв селектору
- siblings(["селектор CSS"]) - получить обертку из эл - всех предыдущих и следующих братьев текущего набора эл соотв селектору
- offsetParent() - получить обертку из одного корневого родителя 1-го эл
- parent(["селектор CSS"]) - получить обертку из всех родителей текущего набора эл
- parents(["селектор CSS"]) - получить обертку из всех родителей текущего набора эл и все иерархии родителей кроме корневого
- parentsUntil(["селектор CSS"]) - получить обертку из всех родителей текущего набора эл и все иерархии родителей кроме корневого пока не соотв селектору
- find(["селектор CSS"]) - получить обертку из всех выбранных по селектору эл-потомков из текущего набора эл
- end() - откат к предыдущей обертке (до выполнения метода фильтрации)
- Методы обертки возвращают не обертку
- [N] - получение N-го по счету об_эл полученной обертки
- .length - количество выбранных об_эл в обертке
- get([N]) - получить один_N-й об_эл/простой_массив_всех об_эл (-N - позиция от конца)
- toArray() - получить простой массив всех эл (аналог get() )
- index(об_эл/селектор) - получить индекс эл в обертке в виде числа
- is(["селектор CSS"]) - получить true если хоть один эл обертки соотв селектору
- map(ф-я) - получить обертку, где в массиве вместо элементов вставляются значения ф-ии (this-эл ф-я(N,об_эл) возвращает любое значение или null-не включается), получить простой массив - .get()
- each(ф-я) - обход всех эл обертки для выполнения ф-ии (this-эл ф-я(N,об_эл) )
- data(нов_имя_св,["знач"]) - сохранение/получение нового св-ва эл-та(эл-т играет роль хранилища д-х любого типа), когда д-х нет - undefined
- removeData(нов_имя_св) - удаление д-х из эл
- attr("атрибут",["значен"/ф-я]) - получить/установить атрибута эл - аналог [get/set]Attribute() ф-я (this-эл ф-я(N_эл,знач_аттр){return нов_знач} )
- attr(об_спис_аттриб) - об_спис_аттриб {имя_аттр1:"знач1",имя_аттр2:"знач2",...,событ1:ф-я1,...}
- removeAttr("атрибут") - удалить атрибут эл, но св-во эл остается
- prop("свойство",[true/false/ф-я]) - получить/установить свойство эл checked, disabled, или selected ф-я (this-эл ф-я(N_эл,знач_свой){return нов_знач} )
- prop(об_спис_свойств) - об_спис_свойства {имя_св1:"знач1",имя_св2:"знач2",...}
- removeProp("свойство") - удалить свойство эл, но св-во эл остается
- addClass("имя_кл"/"спис_кл"/ф-я) - добавление эл дополнительный один/нескольно классов/по ф-ии (this-эл ф-я(N,знач_кл){return дополнзнач_кл} )
- removeClass("имя_кл"/"спис_кл"/ф-я) - удаление у эл один/нескольно классов/по ф-ии (this-эл ф-я(N,знач_кл){return удал_знач_кл} )
- toggleClass("имя_кл"/"спис_кл"/ф-я,[логич-true/false]) - удаление(при присутствии)/добавление(при отсутствии) у эл один/нескольно классов/по ф-ии (this-эл ф-я(N,знач_кл){return удал_знач_кл} ) [может быть логически указано выполнение: true-добавление false-удаление]
- hasClass("имя_кл") - true/false проверка наличия хотябы у одного эл набора обертки класса имя_кл
- css("параметрCSS"[,"значение"/ф-я]) - вычислить/установить строку стиля эл (this-эл ф-я(N,знач){return нов_знач} )
- css(об_парам_CSS) - установить стиль эл с помощью об {парамCSS1:"знач1",парамCSS2:"знач2",...}
- width([N-знач/"знач_размерн"/ф-я]) - получить(вычислить в px для первого)/установить значение ширины в пикс/по размерности(px/em/%) /по ф-ии
- height([N-знач/"знач_размерн"/ф-я]) - получить(вычислить в px для первого)/установить значение высоты в пикс/по размерности(px/em/%) /по ф-ии
- innerHeight() - получить(вычислить в px) значение высоты для первого (от рамки до рамки) в пикс
- innerWidth() - получить(вычислить в px) значение ширины для первого (от рамки до рамки) в пикс
outerHeight (true/false(ум)) - получить(вычислить в px) значение высоты включая рамку (true - включая margin) для первого в пиксouterWidth (true/false(ум)) - получить(вычислить в px) значение ширины включая рамку (true - включая margin) для первого в пикс- offset([об_коорд/ф-я]) - получить для первого эл об {top:знач_верх,left:знач_лев} с вычиленными значениями в пикс относительно всего документа (this-эл ф-я(N,об_коорд_стар){return об_коорд_нов} )
- position() - получить для первого эл об {top:знач_верх,left:знач_лев} с вычиленными значениями в пикс относительно родительского эл
- scrollLeft([N-знач]) - получить(вычислить в px для первого)/установить(для всех) значение прокрутки эл по горизонтали
- scrollTop([N-знач]) - получить(вычислить в px для первого)/установить(для всех) значение прокрутки эл по вертикали
- val(["значение"/ф-я]) - получить для первого /установить для всех эл обертки значение атрибута value (для эл формы) (this-эл ф-я(N,знач){return нов_знач} )
- val(масс_знач) - отметить все эл обертки (радио,флажки,меню) когда их атрибут value равен одному из значений массива (для эл формы)
- Методы изменяют контент элементов
- html(["строка"/ф-я]) - получить(для первого)/установить всем HTML-текст контента эл (аналог - innerHTML) (ф-я(N,HTML-знач){this-эл return нов_знач} )
- text(["строка"/ф-я]) - получить единую строку всех текстовых контентов/установить текст всем эл (при установке аналог - innerHTML) (ф-я(N,HTML-знач){this-эл return нов_знач} )
append ("HTML-строка"/об_эл/$(запрос)/ф-я ) - добавление ко всем эл обертки (перенос) дочерний эл (или набор через запятую) после всех имеющихся дочерних, новый/удаляется из источника (ф-я(N,"HTML-строка-эл"){this-эл return "добав_знач"} )prepend ("HTML-строка"/об_эл/$(запрос)/ф-я ) - добавление ко всем эл обертки (перенос) дочерний эл перед всеми имеющихся дочерних, новый/удаляется из источника (ф-я(N,"HTML-знач"){this-эл return "нов_знач"} )before ("HTML-строка"/об_эл/$(запрос)/ф-я ) - добавление ко всем эл обертки (перенос) как соседа перед эл, новый/удаляется из источника (ф-я(){this-эл return "нов_знач"} )after ("HTML-строка"/об_эл/$(запрос)/ф-я ) - добавление ко всем эл обертки (перенос) как соседа после эл, новый/удаляется из источника (ф-я(){this-эл return "нов_знач"} )- appendTo("селектор"/об_эл) - перенести (скопировать если селект)) все текущие эл обертки как дочение к указаному об_эл/всем_по_селектору в конец имеющихся дочерних
- prependTo("селектор"/об_эл) - перенести (скопировать если селект)) все текущие эл обертки как дочение к указаному об_эл/всем_по_селектору перед имеющимися дочерними
- insertBefore("селектор"/об_эл) - перенести (скопировать если селект) все текущие эл обертки как братья перед указаным(и) об_эл/всем_по_селектору
- insertAfter("селектор"/об_эл) - перенести (скопировать если селект)) все текущие эл обертки как братья после указаного(ых) об_эл/всем_по_селектору
- wrap("
тэг /тэг "/об_эл) - выполняет обертывание кажого эл в копию указаного эл (добавление дополнительного родителя) - wrapAll("
тэг /тэг "/об_эл) - получить один эл обертки содержащий как дочерние все эл текущей обертки и родителль указаного эл (обертка в один родитель) - wrapInner("
тэг /тэг "/об_эл) - выполняет обертывание кажого содержимого эл в копию указаного эл (замена родителя для содержимого ) - unwrap([селектор]) - замена эл обертки из содержимым (удаление обертывания)
- remove([селектор]) - получение открепленных от документа всех/по селектору эл обертки
- detach([селектор]) - получение открепленных от документа всех/по селектору эл обертки сохраняя д-е и события
- empty() - получение обертки с удалеными у эл всех дочерних
clone ([true/false(ум)],[true/false(ум)]) - получение обертки с копиями всех эл с потомками, 1true - копировать и обработчики событий, 2true - копировать и обработчики событий дочерних элементов- replaceWith("HTML-строка"/об_эл/ф-я) - замена у обертки всех выбранных эл на указанный эл (копии если в обертке их много) (ф-я(){this-эл return "нов_знач"} ) возвращает обертку из замещенных эл
- replaceAll("селектор") - замена эл из селектора значениями всех эл обертки (копии если в обертке их много), возвращает те же эл но вставленные, замещенные удаляются
- Обработчики событий
on ("тип_событ"/"спис_событ_через_пробел",[селектор][д-е (для св-ва data:)],ф-я) - установка слушателя одноразового события) ф-я(об_событ_jQuery.Event){код this-эл} [об_событ имеет св-во data:"д-е"]bind ("тип_событ"/"спис_событ_через_пробел",[д-е (для св-ва data:)],ф-я/false) - установка слушателя события (без перехвата) ф-я(об_событ_jQuery.Event,[арг1,арг2,..]){код this-эл} [об_событ имеет св-во data:"д-е"] об_событ_jQuery - для перехода к JavaScript-событию =об_событ_jQuery.orginalEvent, арг1,арг2,..дополнительные аргументы искусственного события, false-отменяет действие по ум- bind({"тип_событ1":ф-я1,"тип_событ2":ф-я2,...}) - установка слушателей событий (без перехвата) ф-я(об_событ_jQuery.Event){код this-эл} "тип_событ" - может иметь пространство имен в виде суффикса: "тип_событ.имя_событ"
- unbind("тип_событ"/об_событ_jQuery.Event,[ф-я]) - удалить слушателя [только одну указанную ф-ю (не анонимную)], можно применять пространство имен, без аргументов - удаляет всех слушателей эл
- blur/focus/keyup/mousemove/resize/change/focusin(для форм)/load/mouseout/scroll/click/focusout(для форм)/mousedown/ mouseover/select/dblclick/keydown/mouseenter/mouseup/submit/error/keypress/mouseleave/ready/unload(ф-я)/hover - установка ф-ии для события в сокращенной ф-ии
- this.blur,focusin,mousedown,resize,change,focusout,mouseenter,scroll,click,keydown,mouseleave,select,dblclick,keypress,mousemove,submit, error,keyup,mouseout,unload,focus,load,mouseover() - выполнение обработчика, установленные по умолчанию
live ("тип_событ",[д-е (для св-ва data:)],ф-я) - (устаревший метод) сохнанение слушателя события для селектора обертки ф-я(об_событ_Event){код this-эл}die ("тип_событ",[ф-я]) - (устаревший метод) удалить слушателя live [только одну ф-ю]trigger ("тип_событ",[д-е (для св-ва data:)]) - выполнение ф-ии слушателя - искусственное событиеtriggerHandler ("тип_событ",[д-е (для св-ва data:)]) - выполнение ф-ии слушателя без распространения вверх иерархии и выполненияф-ии по умолчанию - искусственное событие- hover(ф-я_вх,ф-я_вых)/(ф-я) - установка обработчиков наведения (mouseenter) и выведения (mouseleave) мышки, событ вложенных эл игнорируются
delegate (селект_дочер,"тип_событ",[д-е (для св-ва data:)],ф-я) - слушатель установлен в дочерний эл найденый по селектору- undelegate(селект_дочер,"тип_событ"/об_событ_jQuery.Event,[ф-я]) - удалить слушателя [только одну указанную ф-ю (не анонимную)], можно применять пространство имен, без аргументов - удаляет всех слушателей эл
- off("тип_событ"/об_событ_jQuery.Event,селект_дочер,[ф-я]) - удалить слушателя [только одну указанную ф-ю (не анонимную)], можно применять пространство имен, без аргументов - удаляет всех слушателей эл
- Объект события
jQuery.Event - похож на об Event но платформо независимый- altKey, ctrlKey,metaKey,shiftKey - true при нажатии клавиши
- originalEvent - переход к событию JavaScript
- currentTarget - текущий эл обработки
- delegateTarget - эл обработки
- target - эл происходящего события
- data - значение передаваемое в bind()
- screen[X/Y] - координата курсора относительно экрана
- page[X/Y] - координата курсора относительно элемента
- offset[X/Y] - координата курсора относительно страницы
- relatedTarget - эл границу которого пересек курсор
- result - последнее значение обработчика
- timeStamp - значение сист часов в мс
- type - строка типа события
- which - код клавиши (для клавы), код кнопки мыши 1-лев,2-ср,3-пр (для мыши)
- keycode - не однозначен
- view - ссылка на об window
- preventDefault() - отмена действий по ум
- isDefaultPrevented() - true при вызове preventDefault()
- stopPropagation() - отмена всплытия события (кроме дополнит обр)
- isPropagationStopped() - true при вызове stopPropagation()
- stopImmediatePropagation() - отмена всплытия события и дополнит обр
- isImmediatePropagationStopped() - true при вызове stopImmediatePropagation()
- Анимация и эффекты, методы выполняются асинхронно, а анимация выполняется в очереди анимации (по ум - fx)
- hide() - мгновенно скрыть эл (услановка св-ва style.display="none")
- hide(N/"slow/normal/fast",[ф-я]) - скрыть размером и прозр эл за N мс/фиксир_время, в конце выполняется style.display="none" [после выполн. ф-я]
- show() - мгновенно отобразить эл (style.display="block/inline")
- show(N/"slow/normal/fast",[ф-я]) - отобразить размером и прозр эл за N мс/фиксир_время, в начале выполняется style.display="block/inline" [после выполн. ф-я]
- toggle() - установка видимости/скрытности, мгновенно сменяются по очереди
- toggle(N/"slow/normal/fast",[ф-я]) - установка видимости, сменяются за N мс/фиксир_время по очереди [после выполн. ф-я]
- toggle(true/false) - установка видимости: true-оторазить, false-скрыть
fadeIn (N/"slow/normal(ум)/fast",[ф-я]) - отобразить прозрачностью эл за N мс/фиксир_время, в начале выполняется style.display="block/inline" [после выполн. ф-я]fadeOut (N/"slow/normal(ум)/fast",[ф-я]) - скрыть прозрачностью эл за N мс/фиксир_время, в конце выполняется style.display="none" [после выполн. ф-я]fadeTo (N/"slow/normal(ум)/fast",(0.-1.),[ф-я]) - изменить прозрачность эл за N мс/фиксир_время, на указаное [после выполн. ф-я]- slideDown(N/"slow/normal/fast",[ф-я]) - отобразить верт размером эл за N мс/фиксир_время, в начале выполняется style.display="block/inline" [после выполн. ф-я]
- slideUp(N/"slow/normal/fast",[ф-я]) - скрыть верт размером эл за N мс/фиксир_время, в конце выполняется style.display="none" [после выполн. ф-я]
- slideToggle(N/"slow/normal/fast",[ф-я]) - скрыть/отобразить верт размером эл за N мс/фиксир_время с изменением style.display [после выполн. ф-я]
stop (true(все)/false,true(заверш)/false) - остановка true1-все/текущий эффект, true2-завершить начатый текущий эффект- $.fx.off=true - отмена всех эффектов - теперь выполняются мгновенно
animate ({парам1:знач1,парам2:знач2,...},[N/"slow/normal(ум)/fast"],[фикс_функ_эфф],[ф-я]) - анимация изменения набора параметров CSS в очереди fx (знач: N, +=N, -=N) (для opacity возможно: hide,show,toggle) ф-я могут пускать новый эффектanimate ({парам1:знач1,парам2:знач2,...},{длительн,фикс_функ_эфф,ф-я_конца,true-очередь fx/false-параллел,ф-я_этапа}) - анимация изменения набора параметров CSS в очереди fx- фикс_функ_эфф:
- linear - линейный
- swing - колебательный
queue ("имя_очереди"/"fx"(ум),ф-я/масс_ф-ий) - добавить ф-ю в очередь ф-ий/замена всех ф-ий очереди "имя_очереди" и подключить ко всем эл (ф-я(){this-эл код} )queue ("имя_очереди"/"fx"(ум)) - получить масс ф-ий из очереди "имя_очереди" подключенных к 1-му элdequeue ("имя_очереди"/"fx"(ум)) - выполнение 1-й ф-ии из очереди "имя_очереди" удаляя ее из очередиclearQueue ("имя_очереди"/fn(ум)) - очистка всей очереди "имя_очереди" без выполнения ф-ийdelay (N/"slow/fast",["имя_очереди"/fn(ум)]) - установка задержки N мс/фиксир_время при выполнении ф-ий очереди "имя_очереди"
- Статические св-ва и ф-ии
.support - об для проверки особенностей браузера- boxModel - true при блочной модели (у IE - false)
- cssFloat - true при использовании св-ва cssFloat (у IE - false)
- hrefNormalized - true при обращении к href возвращает значение указаное в HTML(у IE - false)
- htmlSerialize - true при учитывании таблиц CSS как св-во innerHTML эл (у IE - false)
- leadingWhitespace - true при сохранении ведущих пробелов после записи в innerHTML (у IE - false)
- noCloneEvent - true при копировании эл обработчики не копируются (у IE - false)
- objectAll - true при getElementsByTagName("*") возвращает все вложенные эл (у IE - false)
- opacity - true при корректном св-ве opacity (у IE - false)
- scriptEval - true при возможности выполнять script созданных appendChild() или createTextNode() (у IE - false)
- style - true при возможности получить встроенные стили через атрибут style (у IE - false)
- tbody - true при отсутствии автоматического добавления эл tbody во время записи в innerHTML (у IE - false)
- .noConflict([true]) - возвращает объект jQuery-библиотеки, отменяет псевдонима - $, использовать - jQuery, при true - отмена и jQuery
- .trim("строка") - получение строки с отсеченными пробелами
- .each(масс/об, ф-я) - выполнение ф-ии для всех эл масс/об в цикле (this-знач_эл ф-я(N/имя_св,знач_эл){код} ), возвр об-конт
.grep (масс,ф-я,[true/false(ум)]) - выборка эл массива по ф-ии: false(ум) - при ф-ии()==true, true - при ф-ии()==false- .map(масс, ф-я) - получить массив из значений ф-ии от всех знач эл (this-знач_эл ф-я(знач_эл,N) значен null - не влючается
- .inArray(знач,масс) - поиск: получить позицию эл массива знасение которого совпало с указаным, если нет -1
- .makeArray(об_масс) - получить массив из эл об похожего на массив (у которого цифровые св-ва)
- .unique(масс) - получить массив из уникальных эл масс
- .merge(масс1,масс2) - получить масс1 с добавленными эл масс2 (могут повторяться)
extend ([true/false(ум)],об_результ, об_источ1,об_источ2,...) - получить об(2-й арг) с копированием св-в из источников, true-полное/false-поверхн.param (масс_эл/$(оберт_эл)/{об},[true-стар/false(ум)]) - получить строку запроса с преобразованием символов из эл форм или об ("имя_эл_name"="знач_value")/("имя_св"="знач_св")- .isArray(арг) - true если арг - простой массив
- .isEmptyObject(арг) - true если арг - об без собственных св-в (только в прототипе)
- .isFunction(арг) - true если арг - ф-я
- .isPlainObject(арг) - true если арг - об создан как {...} или new Object(...)
- .isXMLDoc(об_эл) - true если об_эл - эл/документ XML
- .noop() - ф-я-пустышка типа function(){} (исп для пустой подставки в методах)
- .contains(эл_родит,эл_потом) - true если эл_потом является потомком для эл_родит
- .data(эл,имя_св,["значен"]) - установить/получить эл значения нового св-ва как хранилища
- .removeData(эл,имя_св) - удалить у эл св-во как хранилища
- .proxy(ф-я,об,[аргум1,аргум2,...]) - получить ф-ю получающую указанный об как контекст, функция выполняется как метод об
- .proxy(об,"имя_ф",[аргум1,аргум2,...]) - получить ф-ю получающую указанный об как контекст, функция выполняется как метод об
- .parseJSON("строка-JSON") - анализ строки на соответствие формату JSON и возврат результат ее вычисления, алог JSON.parse()
- .globalEval("строка-JSON") - выполнение в глобальном контексте (eval()-выполняется в текущем)
- Запросы на сервер и получение ответов
- $(...).load("url-имя_ф-ла",["д-е_запрос"/об{св1:зн1,св2:зн2,...}/масс_об],[ф-я]) - отправка запроса GET/POST(при отправке данных) и загрузка html-строки/файла во все эл обертки методом .html() "url-имя_ф-ла" может содержать: "закодир_запрос"," селектор"(выборка из полученных д-х), ф-я после загрузки ф-я("ответ",переменная_статуса(обычно-"success"),об-XMLHttpRequest){код, this-эл}
- $(...).serialize() - получить готовую строку запроса из всех эл-форм обертки (применяют как д-е для load() )
- $(...).serializeArray() - получить массив об-ов из всех эл-форм обертки об{имя_эл1:знач_эл1,имя_эл2:знач_эл2,...} (применяют как д-е для load() )
- $.get("url-имя_ф-ла",["отправ_д-е_запрос"/об{св1:зн1,св2:зн2,...}/масс_об],[ф-я_успех],["html/text/xml/json/script/jsonp"]) - отправка запроса GET и получение ответа - об-XMLHttpReque ф-я после загрузки ф-я("ответ",перем_статус(обычно-"success"),об-XMLHttpRequest){код, this-эл}, тип текста ответа - для ф-ии, $.get возвращает об_jqXHR имеющий обработчики .done(), .fail(об_jqXHR,об_уст_ajax,текст_ошибки) и .then(), или их устаревшие копии.success(), .error() и .complete()
- $.post("url-имя_ф-ла",["д-е_запрос"/об{св1:зн1,св2:зн2,...}/масс_об],[ф-я],[html/text/xml/json/script/jsonp]) - отправка запроса POST и получение ответа - об-XMLHttpReque ф-я после загрузки ф-я("ответ",статус(обычно-"success"),об-XMLHttpRequest){код, this-эл}, тип текста ответа - для ф-ии
- $.getScript("url-имя_ф-ла",[ф-я]) - запрос GET "url-имя_ф-ла" загружает и выполняет ф-л сценария, возврат об XMLHttpRequest [ф-я выполн после загрузки (ф-я(текст_скрипта,success){код})]
- $.getJSON("url-имя_ф-ла",["д-е_запрос"/об{св1:зн1,св2:зн2,...}/масс_об],[ф-я]) - отправка запроса GET и получение JSON-данных, ответа - об-XMLHttpReque JSON - тип текста ответа - для ф-ии, ф-я после загрузки ф-я("ответ",перем_статус(обычно-"success"),об-XMLHttpRequest){код, this-эл},
- $.ajax(об_запроса) - отправка запроса и получение ответа - об-XMLHttpReque
- url:"url-имя_ф-ла", - строка путь и имя ф-ла, по ум - текущая страница
- type:"POST/GET(ум)/DELETE/HEAD/OPTIONS" - тип запроса
- data:"д-е_запрос"/об{св1:зн1,св2:зн2,...}/масс_об - д-е запроса отправляемые на сервер
- dataType: xml/html/json/jsonp/script/text - тип получаемых д-х, (если не установлен - jquery ) сервер устанавливает заголовок content-type xml - данные анализируются как XML-документ html - д-е не преобразуются, а "
- об_запроса
script .." - выполняется
json - д-е анализируются как JSON, формируется объект
jsonp - д-е анализируются как JSON, формируется сценарий
script - д-е анализируются как JavaScript
text - д-е текста
- mimeType:"MIME-тип" - установка типа ожидаемых данных
- cache:true(ум)/false - установка/отмена кэшировения
- context:об - установка контекста this для ф-ии
- timeout:N мс - установка времени ожидания ответа, после вызывается ф-я error:
- headers:об_заголовков - установка дополнительных заголовков запроса, по ум {}
- global:true(ум)/false - разрешает/запрещает вызов глобальных обработчиков (ajaxStart, ajaxStop,...)
- contentType:"тип_д-х_запроса" - по ум application/x-www-form-urlencoded; charset=UTF-8
- success:ф-я - выполнение при удачном приеме ф-я("ответ",код_статус(обычно-"success"),об-XMLHttpRequest){код, this-эл}
- error:ф-я - выполнение при неудачном приеме ф-я(об-XMLHttpRequest,перем_статус="error/timeout/notmofified/parseerror",сообщ_ошибки){код}
- complete:ф-я - выполнение после запроса ф-я(об-XMLHttpRequest,"success/error"){код}
- beforeSend:ф-я - выполнение перед send() (для установки заголовков) ф-я(об-XMLHttpRequest){код}, при =false - отмена запроса
- async:true/false(ум) - запрос синхронный/асинхронный
- processData:true(ум)/false - кодирование/не кодирование д-х в формат URL ( application/x-www-form-urlencoded)
- dataFilter:ф-я - выполнение предварительной фильтрации ответа ф-я("ответ",dataType-знач){код}
- ifModified:true/false(ум) - проверка/без сравнение с заголовком Last-Modified предыдущего ответа true-запрос успешный если они различны
- jsonp:"имя_ф-ии" - имя ф-ии при запросе jsonp (по ум - "callback")
- jsonpCallback:ф-я - ф-ия обработки ответа при запросе jsonp (по ум - "callback")
- username:"логин" - логин доступа при необходимости
- password:"пароль" - пароль доступа при необходимости
- scriptCharset:"кодировка" - исп-ся для script и jsonp если кодировки на сервере разные
- xhr:ф-я - ф-я для создания об-XMLHttpRequest (у IE - ActiveXObject)
- traditional:true/false(ум) - исп традиционную сериализыцию/нет
- statusCode:об - об типа {код1:ф-я1,код2:ф-я2,..} обработчик при получении кодов статус, по ум - {}
- ajaxSend(ф-я(об_соб,об-XMLHttpRequest,об_настр_ajax)) - перед отправкой на сервер, применяется для document
- ajaxStart(ф-я) - при запуске запроса, применяется для document
- ajaxSuccess(ф-я(об_соб,об-XMLHttpRequest,об_настр_ajax)) - при получении успешного ответа от сервера, применяется для document
- ajaxError(ф-я(об_соб,об-XMLHttpRequest,об_настр_ajax,текст_ошибки)) - при получении ответа от сервера с ошибкой, применяется для document
- ajaxStop(ф-я) - после всех этапов запроса, применяется для document
- ajaxComplete(ф-я(об_соб,об-XMLHttpRequest,об_настр_ajax)) - при получении любого ответа от сервера, применяется для document
jQueryUI - дополнительный модуль к jQuery расширяющий возможности:эффекты, виджеты, перетаскивание
effect(тип_эффекта,об_парам,[N/"slow/normal(ум)/fast"],[ф-я]) - анимация изменения параметров CSS в очереди fx- тип_эффекта
- blind - появление/исчезновение шторкой (парам - direction и mode)
- bounce - изменение положения в направлении (парам - direction,distance,mode,times)
- clip - захлопывание/распахивание (парам - direction,mode)
- drop - смещение/появление за пределы документа (direction,distance,mode)
- explode - разбиение/сборка эл на мелкие фрагменты (mode,pieces)
- fade - появление/исчезновение прозрачностью (mode)
- fold - захлопывание/распахивание пар сторон (horizFirst,mode,size)
- highlight - короткое изменением фона/исчезновением (color,mode)
- puff - появление/исчезновение увеличением и прозрачностью (mode,percent)
- pulsate - пульсация прозрачностью (mode,times)
- scale - изменение размеров в % (direction,fade,from,mode,origin,percent,scale)
- shake - дрожание (direction,distance,duration,mode,times)
- size - изменение размеров до величины (from,to,origin,scale,restore)
- slide - заезжание/выезжание на страницу (direction,distance,mode)
- transfer - перемещение контура эл в контур другого (className,to - место)
- об_парам {парам1:знач1,парам2:знач2,...}(знач: N, +=N, -=N)(для opacity возможно: hide,show,toggle)
- direction: horizontal/vertical(ум)/both, up/down/left/right - направление
- mode: show/hide/toggle/effect - появление/исчезновение/фиксир_ф-я
- distance: N - кол-во пикселей
- times: N - кол-во раз
- pieces: N - кол-во фрагментов
- easing: ф-я - фиксированая ф-я перехода
- horizFirst: true/false(ум) - первая горизонталь/нет
- size: N - размер
- color:цвет -
- percent: N - кол-во процентов
- fade: true/false(ум) - при изменении размеров изменяется прозрачность
- from/to: {N-height, N-width} - об начальные размеры
- className: имя_класса - имя перемещаемого контура (при отсутствии - ui-effects-transfer)
- to: "селектор" - место куда перемещается эл
- origin: [top/middle(ум)/bottom , left/center(ум)/еght] - массив точки исчезновения
- scale: box/content/both(ум) - цель применения эффекта рамка/контент
- duration: N - длительность мс
- restore: true/false(ум) - восстановление значений после эффекта
- ф-я - при завершении эффекта, могут последовательно запускать новый эффект
- тип_эффекта
- animate() - расширенные возможности базовой jQuery, кроме CSS:backgroundColor,border[Bottom/Left/Right/Top]Color,color,outlineColor
- show(тип_эффекта,об_парам,[N/"slow/normal(ум)/fast"],[ф-я]) - появление эл
- hide(тип_эффекта,об_парам,[N/"slow/normal(ум)/fast"],[ф-я]) - скрытие эл
- toggle(тип_эффекта,об_парам,[N/"slow/normal(ум)/fast"],[ф-я]) - появление/скрытие эл
- addClass("имя_кл",[N/"slow/normal(ум)/fast"],[ф-я_переход],[ф-я]) - добавление класса изменяет CSS с эффектом
- removeClass("имя_кл",[N/"slow/normal(ум)/fast"],[ф-я_переход],[ф-я]) - удаление класса изменяет CSS с эффектом
- toggleClass("имя_кл",[true/false],[N/"slow/normal(ум)/fast"],[ф-я_переход],[ф-я]) - добавление/удаление класса изменяет CSS с эффектом (принудительное добавление/удаление)
switchClass("имя_кл_доб","имя_кл_удал",[N/"slow/normal(ум)/fast"],[ф-я_переход],[ф-я]) - добавление и удаление классов изменяет CSS с эффектом- ф-я_переход
- linear -
- aseInOutQuart -
- easeOutCirc -
- swing -
- easeInQuint -
- easeInOutCirc -
- jswing -
- easeOutQuint -
- easeInElastic -
- easeInQuad -
- easeInOutQuint -
- easeOutElastic -
- easeOutQuad -
- easeInSine -
- easeInOutElastic -
- easeInOutQuad -
- easeOutSine -
- easeInBack -
- easeInCubic -
- easeInOutSine -
- easeOutBack -
- easeOutCubic -
- easeInExpo -
- easeInOutBack -
- easeInOutCubic -
- easeOutExpo -
- easeInBounce -
- easeInQuart -
- easeInOutExpo -
- easeOutBounce -
- easeOutQuart -
- easeInCirc -
- easeInOutBounce -
position(об_коорд) -- об_коорд
- my: "гориз вертик" - координаты тек.эл для позиционирования: top,left,bottom,right,center
- at: "гориз вертик" - координаты другого эл для приравнивания: top,left,bottom,right,center
- of: селектор/об-Event - отбор эл для установки/собатие с координатами мыши
- offset: "N-лево N-право" - установка смещения от другого эл
- collision: flip/fit/none - установка правила при выходе за пределы другого эл (переход к противоположному/коррекция в пределах)
- using: ф-я - ручное изменение координат эл ф-я(об{N-лев,N-прав}){код}
draggable(["disable/enable/destroy"/об_парам/("option",имя_парам,значен)]) - запретить/разрешить/отключить способность перетягивания/ установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра- об_парам
- addClasses: true/false - разрешить/запретить создание класса ui-draggable
- appendTo: эл/селектор - указалие эл куда будет перетянут эл (ум - родитель)
- axis: "N-гориз N-вертик" - ограничение движения по осям X,Y (ум - не ограничено)
- cancel: селектор - указание эл временно не участвующие в данном перетаскивании (ум - ":input,option")
- connectToSortable: селектор - указание эл содержащий список (добавляют пар-р helper: "clone")
- containment: "об_эл"/селектор/масс[x1,y1,x2,y2] - ограничение движения в пределах эл / области указаных координат массива
- cursor: "курсор" - установка указанного стандатного курсора при перетаскивании (ум - "auto")
- cursorAt: об_коорд - установка пределы координат курсора для захвата {left/right : N-гориз, top/bottom : N-вертик}
- delay: N - задержка в мс для начала перетаскивания (ум - 0)
- distance: N - кол-во пкс для начала перетаскивания (ум - 1)
- drag: ф-я - обработчик события drag
- grid: [N-гориз N-вертик] - массив установки сетки фиксированых позиций (ум - не ограничено)
- handle: об_эл/селектор - указание дочернего к текущему эл, при наведении происходит захват
- helper: "original/clone"/ф-я - определение текущего/копии/по ф-ии эл используемый при перетаскивании
- ifarmeFix: true/селектор - указание всех/по селектору эл для iframe> запрещает перетаскивание (событие mousemove)
- opacity: 0.-1. - установка прозрачности об во время перетаскивания (ум - прозр не изм)
- refreshPositions: true - при необходимости перерасчета позиции
- revert: true/"invalid"/"valid"/false - эл возвращается на старое место всегда/не на указанном месте/на указаном месте/не возвращается
- revertDuration: N - мс длительность времени возврата на исходное место (ум - 500)
- scope: "связь" - устаноска свсязи между эл перетаскивания и приемником
- scroll: true/false - разрешить/запретить автоматическую прокрутку при перетаскивании
- scrollSensitivity: N - px расстояние от курсора до границы для начала авто-прокрутки (ум - 20)
- scrollSpeed: N - скорость авто-прокрутки (ум-20)
- snap: true/селектор - установка всех/по селектору эл возможности прилипать к границам
- snapMode: "outer/inner/both(ум)" - разрешение прилипать к внешней/внутренней/к обеим мсороне границы
- snapTolerance: N - px расстояние притягивания при прилипании (ум - 20)
- stack: об{z-index:знач, min:знач} - установка значений CSS на время перетаскивания
- start: ф-я - обработчик события dragstart
- stop: ф-я - обработчик события dragstop
- zIndex: N - значение парам CSS - z-index на время перетаскивания
- События при перетаскивании
- dragstart - ф-я при начале перетаскивания
- drag - ф-я в процессе перетаскивания (mousemove)
- dragstop - ф-я при окончании перетаскивания
ф-я(об_событ_мыши, об_инф) - обработчик- об_инф
- helper: $(эл) - обертка перетаскиваемого эл
- position: об{top:N, left:N} - позиция эл относительно родителя (при dragstart - неизвестно)
- offset: об{top:N, left:N} - позиция эл относительно документа (при dragstart - неизвестно)
- об_парам
droppable(["disable/enable/destroy"/об_парам/("option",имя_парам,значен)]) - запретить/разрешить/отключить способность принимать/ установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра- об_парам
- accept: селектор/ф-я - дополнительный отбор из обертки по селектору/ф-я(об_эл){return true/false} true-отбирает
- activate: ф-я - обработчик события в начале перетаскивания (dropactivate)
- activeClass: имя_класса - добавление класса на время перетаскивания в начале
- addClasses: true/false - - разрешить/запретить создание класса ui-droppable
- deactivate: ф-я - обработчик события в конце перетаскивания (dropdeactivate)
- drop: ф-я - обработчик события во время перетаскивания (drop)
- greedy: true - запрещает распространение события к вложенным эл
- hoverClass: имя_класс - добавление класса в момент нависания эл над приемником
- out: ф-я - обработчик события (dropout) эл перетягивается мимо текущего и выходит за его пределы в соответствии с tolerance
- over: ф-я - обработчик события (dropover) в момент готовнгости в соответствии с tolerance
- scope: "связь" - устаноска свсязи между эл перетаскивания и приемником
- tolerance: fit/pointer/touch/intersect(ум) - готовность принять в момент: дад приемником весь эл/курсор/эл прикасается/половина эл
- События при перетаскивании
- dropactivate - ф-я при начале перетаскивания
- dropdeactivate - ф-я при окончании перетаскивания
- dropover - ф-я при готовности приемника принять эл
- dropout - ф-я при готовом приемнике эл выходит за пределы
- drop - - ф-я при окончании перетаскивания и эл над приемником
ф-я(об_событ_мыши, об_инф) - обработчик- об_инф
- helper: $(эл) - обертка вспомогательного перетаскиваемого эл
- draggable: $(эл) - обертка перетаскиваемого эл
- position: об{top:N, left:N} - позиция эл относительно родителя (при dragstart - неизвестно)
- offset: об{top:N, left:N} - позиция эл относительно документа (при dragstart - неизвестно)
- об_парам
sortable(["disable/enable/destroy/cancel/refresh/refreshPositions/serialize/toArray"/об_парам/("option",имя_парам,значен)]) - запретить/разрешить/отключить способность сортировать/отмена операции/обновление эл/обновление кэш эл/строка для запроса/ массив id/установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра- об_парам
- activate: ф-я - обработчик события (sortactivate)
- appendTo: эл/селектор - указалие эл куда будет перетянут эл (ум - родитель)
- axis:"N-гориз N-вертик" - ограничение движения по осям X,Y (ум - не ограничено)
- beforeStop: ф-я - обработчик события (sortbeforeStop)
- cancel: селектор - указание эл временно не участвующие в данном перетаскивании (ум - ":input,option")
- change: ф-я - обработчик события (sortchange)
- connectWith: селектор - связь с принмником куда переносятся эл
- containment: "об_эл"/селектор/масс[x1,y1,x2,y2] - ограничение движения в пределах эл / области указаных координат массива
- cursor: "курсор" - установка указанного стандатного курсора при перетаскивании (ум - "auto")
- cursorAt: об_коорд - установка пределы координат курсора для захвата {left/right : N-гориз, top/bottom : N-вертик}
- deactivate: ф-я - обработчик события (sortdeactivate)
- delay: N - задержка в мс для начала перетаскивания (ум - 0)
- distance: N - кол-во пкс для начала перетаскивания (ум - 1)
- dropOnEmpty: true(ум)/false - перемещение в приемник только если он пустой
- forceHelperSize: true/false(ум) - каждый эл имеет определенный размер
- forcePlaceholderSize: true/false(ум) - место для перемещения эл имеет определенный размер
- grid: [N-гориз N-вертик] - массив установки сетки фиксированых позиций (ум - не ограничено)
- handle: об_эл/селектор - указание дочернего к текущему эл, при наведении происходит захват
- helper: "original/clone"/ф-я - определение текущего/копии/по ф-ии эл используемый при перетаскивании
- items: селектор - отбор эл для упорядочения (ум - "Т> *")
- opacity: 0.-1. - установка прозрачности об во время перетаскивания (ум - прозр не изм)
- out: ф-я - обработчик события (sortout)
- over: ф-я - обработчик события (sortover)
- placeholder: имя_клас - имя класса которое присваивается месту для переноса эл
- receive: ф-я - обработчик события (sortreceive)
- remove: ф-я - обработчик события (sortremove)
- revert: true/"invalid"/"valid"/false - эл возвращается на старое место всегда/не на указанном месте/на указаном месте/не возвращается
- scroll: true/false - разрешить/запретить автоматическую прокрутку при перетаскивании
- scrollSensitivity: N - px расстояние от курсора до границы для начала авто-прокрутки (ум - 20)
- scrollSpeed: N - скорость авто-прокрутки (ум-20)
- sort: ф-я - обработчик события (sort)
- start: ф-я - обработчик события (sortstart)
- stop: ф-я - обработчик события (sortstop)
- tolerance: fit/pointer/touch/intersect(ум) - готовность принять в момент: дад приемником весь эл/курсор/эл прикасается/половина эл
- update: ф-я - обработчик события (sortupdate)
- zIndex: N - значение парам CSS - z-index на время перетаскивания
- События при перетаскивании
- sort - ф-я при процессе сортировки
- sortactivate - ф-я при начале процесса
- sortbeforeStop - ф-я перед окончание м процесса
- sortchange - ф-я при изменении положения эл
- sortdeactivate - ф-я после окончания упорядочения
- sortout - ф-я при выходе эл за пределы списка
- sortover - ф-я при входе эл в пределы нового списка
- sortreceive - ф-я при принятии эл из другого списка
- sortremove - ф-я при удалении эл из одного списка в другой
- sortstart - ф-я при начале процесса
- sortstop - ф-я при окончании процесса
- sortupdate - ф-я при окончании процесса позиция эл изменилась
- ф-я(об_событ_мыши, об_инф) - обработчик
- об_инф
- position: об{top:N, left:N} - позиция эл относительно родителя (при dragstart - неизвестно)
- offset: об{top:N, left:N} - позиция эл относительно документа (при dragstart - неизвестно)
- helper: $(эл) - обертка вспомогательного перетаскиваемого эл
- item: $(эл) - обертка перетаскиваемого эл
- placeholder: $(эл) - обертка места для перетаскиваемого эл
- sender: $(эл) - обертка родителя перетаскиваемого эл
- об_парам
resizable(["disable/enable/destroy"/об_парам/("option",имя_парам,значен)]) - запретить/разрешить/отключить способность изменять мышкой размеры эл/ установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра- об_парам
- alsoResize: селектор/обертка/об_эл - определение эл изменяющие размер одновременно с текущим
- animate: true/false(ум) - применение для увеличения размера анимации
- animateDuration: N/"slow/normal(ум)/fast" - длительность анимации
- animateEasing: ф-я_перехода
- aspectRatio: true/вещ - сохранить прополции полностью/установить новые: width / height
- autoHide: true - автоматическое исчезновение ручки для изменения размеров
- cancel: селектор - дополнительнй отбор эл (ум - ":input,option")
- containment: селектор/об_эл - установка родительского эл для ограничения
- delay: N - задержка в мс для начала перетаскивания (ум - 0)
- distance: N - кол-во пкс для начала перетаскивания (ум - 1)
- ghost: true/false(ум) - при процессе используется полупрозрачный эл
- grid: [N-гориз N-вертик] - массив установки сетки фиксированых позиций (ум - не ограничено)
- handles: "n,ne,e,se,s,sw,w,nw,all"/об{n:селект,ne:..,e:.,se:.,s:.,sw:.,w:.,nw:.} - установка направлений изменения размеров (ум - "e,se,s")
- helper: "имя_кл" - установить класс для ручки (ум - ui-resizable-helper)
- maxHeight: N - ЊЂ• высота
- maxWidth: N - ЊЂ• ширина
- minHeight: N - Њ€Ќ высота
- minWidth: N - Њ€Ќ ширина
- resize: ф-я - обработчик события (resize)
- start: ф-я - обработчик события (resizestart)
- stop: ф-я - обработчик события (resizestop)
- События при изменении размеров
- resizestart - начало изменения размеров
- resize - процесс
- resizestop - окончание изменения размеров
ф-я(об_событ_мыши, об_инф) - обработчик- об_инф
- position: об{top:N, left:N} - позиция эл относительно родителя
- size: об{width:N, height:N} - размеры эл
- originalPosition: об{top:N, left:N} - первоначальная позиция эл относительно родителя
- originalSize: об{width:N, height:N} - первоначальные размеры эл
- helper: $(эл) - обертка вспомогательного перетаскиваемого эл
- об_парам
selectable(["disable/enable/destroy/refresh"/об_парам/("option",имя_парам,значен)]) - запретить/разрешить/отключить/обновить способность выделять мышкой эл/ установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра- об_парам
- autoRefresh: true(ум)/false -
- cancel: селектор - дополнительнй отбор эл (ум - ":input,option")
- delay: N - задержка в мс для начала перетаскивания (ум - 0)
- distance: N - кол-во пкс для начала перетаскивания (ум - 1)
- filter: селектор - дополнительный отбор эл для выделения
- selected: ф-я - обработчик события (selected)
- selecting: ф-я - обработчик события (selecting)
- start: ф-я - обработчик события (selectablestart)
- stop: ф-я - обработчик события (selectablestop)
- tolerance: fit/touch - для выделения область болжна обхватывать эл полностью/часть эл
- unselected: ф-я - обработчик события (unselected)
- unselecting: ф-я - обработчик события (unselecting)
- События при перетаскивании
- selectablestart - начало выделения
- selecting - перед моментом выделения (ф-я(об_соб,об{selecting:об_эл} ) )
- selected - в момент выделения (ф-я(об_соб,об{selected:об_эл} ) )
- unselecting - перед моментом отмены выделения (ф-я(об_соб,об{unselecting:об_эл} ) )
- unselected - в момент отмены выделения (ф-я(об_соб,об{unselected:об_эл} ) )
- selectablestop - окончание выделения
- об_парам
button/buttonset(["disable/enable/destroy"/об_парам/("option",имя_парам,значен)]) - запретить/разрешить/отключить оформления кнопки или радио,флажков/ установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра- об_парам
- icons: об{primary:"станд_изобр_лев",secondary:"станд_изобр_прав"} - установка изображений на кнопке справа,слева
- label: "текст" - установка текста на кнопке (для радио и флажнов - в
label ) - text: true(ум)/false - разрешение / запрещение отображения текста с изобр
slider(["disable/enable/destroy"/об_парам/("option",имя_парам,значен)/("value",[знач])/("values",индкс/масс_инд,[знач])]) - запретить/разрешить/отключить оформленияdiv как ползунка/ установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра/ установка/получение значения с одним полз / получить значение одного / установить знач одного/по массиву ползункам- об_парам
- animate: true/false(ум)/"slow,normal,fast"/N - установка/отмена/установка с длительностью анимации
- change: ф-я - обработчик события (slidechange)
- max: МАХ значение (ум - 100)
- min: МИН значение (ум - 0)
- orientation: horizontal(ум)/vertical - положение ползунка
- range: true/false(ум)/ - использовать/нет стилизир эл заполнения (для одного/двух)
- start: ф-я - обработчик события (slidestart)
- slide: ф-я - обработчик события (slide)
- step: N - установка шага перемещения (ум - 1)
- stop: ф-я - обработчик события (slidestop)
- value: N - установка значения 1-го (ум - Њ€Ќ)
- values: масс - массив значений для нескольких
- События использовании ползунка
- slidestart - начало изменения рычажка ползунка
- slide - процесс изменения (при возврате false - рычажок не двигается)
- slidechange - изменение рычажка курсором или програмно
- slidestop - окончание изменения рычажка ползунка
ф-я(об_событ_мыши, об_инф) - обработчик- об_инф
- handle: об_эл - ссылка на эл
a рычажка - value: N - значение рычажка
- values: масс - массив значений рычажков
- handle: об_эл - ссылка на эл
- об_парам
progressbar(["disable/enable/destroy"/об_парам/("option",имя_парам,значен)/("value",[знач])]) - запретить/разрешить/отключить оформленияdiv как прогресса/ установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра/ установка/получение значения прогресса- об_парам
- change: ф-я - обработчик события (progressbarchange)
- value: N - установка значения 0-100 (ум - 0)
autoProgressbar(["stop/destroy"/об_парам/("value",[знач])]) - остановить/отключить оформленияdiv как авто-прогресса/ установка набора параметров в об / установка/получение значения прогресса- об_парам
- pulseUrl: "url" - запрос не сервер, возвращающий число 0-100
- pulseData: об - д-е для запроса отправляемые на сервер url
- interval: N - мс интервал времени для проверки позиции прогресса
- change: ф-я - обработчик события (progressbarchange) ф-я()
autocomplete(["disable/enable/destroy/close/widget"/об_парам/("option",имя_парам,значен)/("search",[знач])]) - запретить/разрешить/отключить оформленияinput / закрыть список/полкчить текущ виджет/установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра/ установка/получение значения прогресса- об_парам
- change: ф-я - обработчик события (autocompletechange)
- close: ф-я - обработчик события (autocompleteclose)
- delay: N - мс длительность задержки перед появлением (ум - 300мс)
- disabled: true/false - создается не активный список / активный
- focus: ф-я - обработчик события (autocompletefocus)
- minLength: N - кол-во символов для начала открытия списка
- open: ф-я - обработчик события (autocompleteopen)
- search: ф-я - обработчик события (autocompletesearch)
- select: ф-я - обработчик события (autocompleteselect)
- source: "url"/масс_знач/ф-я - получение списка найденных значений, ф-я(об{term:знач},ф-я) возвращает массив из об{label:знач_меню,value:знач_текст}
- События использовании ползунка
- autocompletechange - изменения значения текста
- autocompleteclose - закрытие меню
- autocompletefocus - получение фокуса эл меню (при возврате true - перенос значения в текстовое поле)
- autocompleteopen - когда д-е прочитаны и готовы открыть меню
- autocompletesearch - перед активацие поиска
- autocompleteselect - при выборе значения в меню (при возврате false - значение не переносится в текстовое поле)
- об_парам
datepicker(["disable/enable/destroy/isDiasabled/show/getDate/widget"/об_парам/("option",имя_парам,значен)/ ("dialog",имя_диалог,значен)/("dialog","дата"/об_дата,[ф-я_выбора],об_парам,[N-лев,N-верх]/об_событ)/ ("hide",[N/"slow/normal(ум)/fast"])/("setDate","дата"/об_дата)]) - запретить/разрешить/отключить оформленияinput ,div ,span / проверка активного состояния/открыть вдж/ получить выбранную дату/полкчить об текущ виджет/установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра/ выбор даты в диалоге/ закрыть вдж- об_парам
- altField -
- altFormat -
- appendText -
- autoSize -
- beforeShow -
- beforeShowDay -
- buttonImage -
- buttonImageOnly -
- buttonText -
- calculateWeek -
- changeMonth -
- changeYear -
- closeText -
- constrainInput -
- currentText -
- dateFormat -
- dayNames -
- dayNamesMin -
- dayNamesShort -
- defaultDate -
- disabled -
- duration -
- firstDay -
- gotoCurrent -
- hideIfNoPrevNext -
- isRTL -
- maxDate -
- minDate -
- monthNames -
- monthNamesShort -
- navigationAsDateFormat -
- nextText -
- numberOfMonths -
- onChangeMonthYear -
- onClose -
- onSelect -
- prevText -
- selectOtherMonths -
- shortYearCutoff -
- showAnim -
- showButtonPanel -
- showCurrentAtPos -
- showMonthAfterYear -
- showOn -
- showOptions -
- showOtherMonths -
- showWeek -
- stepMonths -
- weekHeader -
- yearRange -
- yearSuffix -
- $.datepicker.setDefaults(об_парам) - установка значений даты по умолчанию
$.datepicker.formatDate("формат_даты",об_даты,об_парам) - получить строку с датой- об_парам
- dayNames: -
- dayNamesShort: -
- monthNames: -
- monthNamesShort: -
$.datepicker.parseDate(format,value,options) - об_парам
- shortYearCutoff: -
- dayNames: -
- dayNamesShort: -
- monthNames: -
- monthNamesShort: -
- $.datepicker.iso8601Week(об_даты) -
tabs([("disable",N-индекс)/("enable",N-индекс)/"destroy"/length/abort/widget"/об_парам/("option",имя_парам,значен)/ ("add","#метка"/url,"имя_вклад",[N-индес])/("remove",index)/("select",index)/("load",index)/("url",index,url)/ ("rotate",N мс,true/false)]) - запретить/разрешить доступ к вкладке/отключить оформление/ кол-во вкладок/ отмена ajax и анимации/ полкчить об текущ виджет/установка набора параметров в об / получить для 1-го эл/установка для всех эл указаного параметра/ добавить вкладку в N-индес или конец/ удаление N-индес вкладки/перейти на N-индес вкладку/загрузка содержимого N-индес вкладки/ установка нового url для N-индес вклад/ авто-смена вкладок установить/отключить- об_парам
- add: -
- ajaxOptions: -
- cache: -
- collapsible: -
- cookie: -
- disable: -
- disabled: -
- enable: -
- event: -
- fx: -
- idPrefix: -
- load: -
- panelTemplate: -
- remove: -
- select: -
- selected: -
- show: -
- spinner: -
- tabTemplate: -
- События использовании ползунка
- tabsadd
- tabsdisable
- tabsenable
- tabsload
- tabsremove
- tabsselect
- tabsshow
ф-я(об_событ_мыши, об_инф) - обработчик- об_инф
- index: -
- tab: -
- panel: -
- Структура кладок
1)
div ul - набор вкладокli a href="#метка1" вкл1/a /li .../ul div id="метка1" контент1/div ... - панели с информацией .../div 2)div ul - набор вкладок информация с сервера добавляется автоматическиli a href="url" вкл1/a /li .../ul /div
- об_парам
- об_парам
- active: -
- animated: -
- autoHeight: -
- clearStyle: -
- change: -
- changestart: -
- collapsible: -
- disabled: -
- event: -
- fillSpace: -
- header: -
- icons: -
- navigation: -
- navigationFilter: -
- События использовании ползунка
- accordionchangestart -
- accordionchange -
ф-я(об_событ_мыши, об_инф) - обработчик- об_инф
- options: -
- oldHeader: -
- newHeader: -
- oldContent: -
- newContent: -
- Структура вкладки - гармошки
div h1 a href="#" вкл1/a /h1 - одна вкладкаdiv id="метка1" контент1/div - одна панель с информацией ... - следующие вкладки и содержимое/div
- jQuery.tmpl('html-строка ${св1} ${св2} ..',{св1:зн1,св2:зн2,..}/масс_об) - получение строки/масс_строк с вычисленныти значениями
- $("#ID-шаблона").tmpl(об) - получение новой вычисленной обертки (обертка - шаблон в контенте тэга SCRIPT с аттрибутом type="text/x-jguery-tmpl")
- Содержание html-шаблона
- ${перем} / ${ф-я(перем)} - вычисление переменной,ф-ии в шаблоне
- {{if св}} .. {{else}} .. {{/if}} - вычисление условия и подстановка текста
{{each об-масс}} .. {{/each}} - цикл повторений текста с перебором всех эл об(св={..})/масс(эл=[..])- ${$value} - применяемое значение эл об-масс
- ${$index} - применяемый индекс эл об-масс
Bootstrap - расширение билиотеки JQuery и классификация отображаемых элементов
Библиотеку можно подключить целиком (bootstrap.js) или в виде отдельных модулей
- Разиение блока на части по горизонтали и вертикали
- div class="container" - блок по размеру которого вычисляется разбивка (на 12 частей)
- div class="row" - набор горизонтальных блоков для объединения колонок
- div class="col-XX-N" - блок одной колонки, классов может быть несколько (для каждого размера экрана)
- XX - размер дисплея для которого указана разбивка на колонки
- xs - (Extra small) ширина меньше 768px
- sm - (Small devices) ширина больше 768px и меньше 992px
- md - (Medium devices) ширина больше 992px и меньше 1200px
- lg - (Large devices) ширина больше 1200px
- N - количество 1/12 частей от общей ширины из которых вычисляется ширина колонки
- XX - размер дисплея для которого указана разбивка на колонки
- class="col-XX-offset-N" - добавление для экрана XX слева пустого промежутка размером N частей
- class="col-XX-N1 col-XX-push-N2" и class="col-XX-N2 col-XX-push-N1" - колонки меняются местами
- div class="col-XX-N" - блок одной колонки, классов может быть несколько (для каждого размера экрана)
- div class="clearfix visible-XX - пустой блок устанавливает класса clearfix только для экрана XX - прекращает обтекание (устанавливают между колонками)
- div class="row" - набор горизонтальных блоков для объединения колонок
- div class="pull-left" - приклеивание блока влево (CSS=float:left), остальной контент обтекает
- div class="pull-right" - приклеивание блока вправо (CSS=float:right), остальной контент обтекает
- div class="clearfix" - пустой блок для прекращения обтекания
- div class="center-block" - центриравание блока по центру (CSS=display:block,margin-right,left: auto;)
- div class="jumbotron" - блок растягивается по всей ширине, выходя за границы
- div class="container" - блок по размеру которого вычисляется разбивка (на 12 частей)
- Скрытие/отображением
- div class="show" - видимый блочный контейнер (CSS=display:block)
- div class="hidden" - скрытый блочный контейнер (CSS=display:none)
- тэг class="sr-only" - тэг видимый только на мониторах (CSS=position:absolute,clip:rect(0,0,0,0))
- div class="visible/hidden-XX" - видимый(CSS=display:block)/скрытый(CSS=display:none) контейнер для экранов указаного размера
- xs - для экранов меньше 768px
- sm - для экранов больше 768px и меньше 991px
- md - для экранов больше 991px и меньше 1200px
- lg - для экранов больше 1200px
- тэг class="visible/hidden-print" - тэг видимый/скрыт только при печати на принтере
- Шрифты для тэгов
- small - серым цветом с относительным уменьшением
- strong - жирный шрифт
- em - курсив
- class="lead" - тонкий но абсолютно увеличенный шрифт
- сlass="text-left/center/right" - выравнивание контента в блоке влево/центр/вправо
- class="text-muted" - серый цвет
- class="text-primary" - голубой цвет
- class="text-success" - зеленый цвет
- class="text-info" - синий цвет
- class="text-warning" - коричневый цвет
- class="text-danger" - красный цвет
- blockquote class="pull-right" - выравнивание вправо
- ul class="list-unstyled" - удаление маркера у списка
- ul class="list-inline" - блоки списка выстроены горизонтыльно
- dl class="dl-horizontal" - пояснение начинается на той же строке
- code - красные буквы и песочный фон текста
- pre - песочный фон блока
- Таблицы
- table class="table" - обязательный класс: талица по всей ширине, без вертикальных линий, с выровненными ячейками
- table class="table-striped" - строки чередуются цветами фона
- table class="table-bordered" - отрисовываются все линии
- table class="table-hover" - под курсором подсвечивается фон строки таблицы
- table class="table-condensed" -
- tr/th/td class="active" - подсветка фона песочным цветом
- tr/th/td class="success" - подсветка фона зеленым цветом
- tr/th/td class="warning" - подсветка фона ярко-песочным цветом
- tr/th/td class="danger" - подсветка фона красным цветом
- div class="table-responsive" - создание блока с горизонтальной прокруткой для встраивания таблицы, если она не помещается по ширине
- Формы ввода
- form role="form" - контейнер объединяющий элементы
- form class="form-inline" - добавление класса, где div class="form-group" расположены горизонтально (CSS=display:inline-block) с вертикальным центрированием
- form class="form-horizontal" - добавление класса, где div class="form-group" являются контейнерами для разделения LABEL/DIV-блоков по колонкам применяя 1/12 части:col-XX[-offset]-N
- div class="form-group" - контейнер одного элемента и его вспомогательных элементов (для выстраивания по вертикали)
- div class="has-success" - дополнительный класс окрашивает весь элемент в зеленый цвет
- div class="has-warning" - дополнительный класс окрашивает весь элемент в коричневый цвет
- div class="has-error" - дополнительный класс окрашивает весь элемент в красный цвет
- class="form-control" - класс текстовых полей input-текстовых/textarea/select для подсвесивания
- class="input-XX" - дополнительный класс определяет размер шрифта элемента ввода
- input-lg - увеличенный размер
- input-sm - уменьшенный размер
- label class="control-label" - добавление окраски в зависимости от валидации
- div class="checkbox" - контейнер для одного блочного checkbox и его label
- div class="radio" - контейнер для одного блочного radio и его label
- div - контейнер для группы inline-элементов checkbox или radio
- label class="checkbox-inline" - контейнер для одного элемента checkbox или radio и текста label
- p class="form-control-static" - подставление вместо элемента ввода простого текста
- тэг class="help-block" - любой текстовый тэг (и строчные) делается блочным темно-серым цветом как подсказка
- Кнопки (a или button или input type="button")
- class="btn" - стандарсный класс для простой кнопки
- установка дополнительного класса для окраски фона
- class="btn-primary" - фон синего цвета
- class="btn-success" - фон зеленого цвета
- class="btn-info" - фон голубого цвета
- class="btn-warning" - фон желтого цвета
- class="btn-danger" - фон красного цвета
- class="btn-link" - фон прозрачного цвета без контура, при нажатии похожа на ссылку (посчеркивание и контур фокуса)
- class="btn-default" - фон белого цвета
- class="active" - цвет фона чуть темнее с тенью объема
- установка дополнительного класса для размера кнопки
- class="btn-lg" - увеличенный размер кнопки и шрифта
- class="btn-sm" - уменьшенный размер кнопки и шрифта
- class="btn-xs" - уменьшенный размер кнопки и шрифта
- class="btn-block" - 100% ширина
- изображения
- контур изображения
- class="img-rounded" - контур с закругленными углами
- class="img-circle" - - контур круглый
- class="img-thumbnail" - контур с закругленными углами с белой границей
- контур изображения
- специальные иконки
- button type="button" class="close" с контентом & times; - крест-кнопка для закрытия
- span class="caret" без контента - устанавливает стрелку вниз для открытия меню
- иконки GLYPHICON
- span class="glyphicon glyphicon-имя_иконки" без контента - устанавливает иконку по ее имени
- $(document).off('.data-api') - отключение всей библиотеки
- $(document).off('.имя_библ.data-api') - отключить одну часть библиотеки по имени
- $.fn.имя_модуля.Constructor - получение конструктора
- $(селектор).data('имя_модуля') - особая сущность модуля
- $.fn.имя_модуля.noConflict() - получение пространства имен модуля для избежания конфликта с другими библиотеками (после - возвращают с новым именем $.fn.новое_имя=простр_имен)
- $(селектор).on('show.имя_событ.имя_модуля',ф-я(об_событ)) - выполнение ф-ии события перед указанным событием
- $(селектор).on('shown.имя_событ.имя_модуля',ф-я(об_событ)) - выполнение ф-ии события после указанного события
- Иерархия элементов и их классы
- a data-toggle="modal" href="#myModal" - кнопка вызова модального окна из любого места
- div class="modal fade" - главный блок (скрытое модальное окно)
- div class="modal-dialog" - определение диалогового окна - отцентриновано, имеет фиксированую высоту и ширину
- div class="modal-content" - блок содержащий информацию в блоках header,body,footer разделенных тонкой линией
- div class="modal-header" - блок заголовка с первой кнопкой скрытия
- button type="button" class="close" data-dismiss="modal" aria-hidden="true" - кнопка закрытия
- h4 class="modal-title" id="myModalLabel" - заголовок
- div class="modal-body" - блок основного содержимого
- div class="modal-footer" - блок подвала (для кнопок управления)
- button type="button" class="btn btn-default" data-dismiss="modal" - кнопка закрытия
- button .. - остальные кнопки
- div class="modal-header" - блок заголовка с первой кнопкой скрытия
- div class="modal-content" - блок содержащий информацию в блоках header,body,footer разделенных тонкой линией
- div class="modal-dialog" - определение диалогового окна - отцентриновано, имеет фиксированую высоту и ширину
- .modal([об_парам]) - открытие окна без/с параметрами
- backdrop:true(ум)/false - задняя панель темнеет (аналог аттрибута data-backdrop)
- keyboard:true(ум)/false - скрытие окна кнопкой вызова (аналог аттрибута data-keyboard)
- show:true(ум)/false - отображение окна при инициализации (аналог аттрибута data-show)
- remote:true/false(ум) - содержание окна подгружается из ф-ла указанного в атрибуте кнопки-ссылки href (аналог аттрибута data-remote)
- .modal('show/hide/toggle') - программное выполнение отображения/скрытия окна
- События
- show.bs.modal - перед отображением окна (нажата кнопка или вызван метод)
- shown.bs.modal - сразу после отображения окна
- hide.bs.modal - перед скрытием окна (нажата кнопка или вызван метод)
- hidden.bs.modal - сразу после скрытия окна
- Иерархия элементов и их классы
- div class="dropdown" - главный блок (окно с выпадающим меню)
- a data-toggle="dropdown" href/data-target="#" - определение кнопкидля віпадающего меню
- span class="caret" - класс вставляет в пустой тэг стрелку вниз (добавляют в конце текста кнопки)
- ul class="dropdown-menu" role="menu" aria-labelledby="dLabel" - контейнер для віпадающих пунктов
- li - набор выпадающтх пунктов
- a role="menuitem" tabindex="-1" href="#" - пункт меню для выполнения действия
- li class="dropdown-header" - текст - заглавие пунктов меню которые не выбираются
- li class="divider" - горизонтальная черта вместо текста
- li - набор выпадающтх пунктов
- div class="dropdown" - главный блок (окно с выпадающим меню)
- .dropdown(['toggle']) - программное выполнение отображения/скрытия окна
- События
- show.bs.dropdown - перед отображением окна (нажата кнопка или вызван метод)
- shown.bs.dropdown - сразу после отображения окна
- hide.bs.dropdown - перед скрытием окна (нажата кнопка или вызван метод)
- hidden.bs.dropdown - сразу после скрытия окна
- Иерархия элементов и их классы
- div class="ID-навигации" - блок навигации
- ul class="nav nav-tabs" - список навигационных кнопок
- li - одна навигационная кнопка
- a href="#ID-метки" - кнопка перехода к метке
- li - одна навигационная кнопка
- ul class="nav nav-tabs" - список навигационных кнопок
- тэг data-spy="scroll" data-target="#ID-навигации" - главный блок текста для прокручивания, содержит метки
- тэг id="ID-метки" - метка для прокрутки
- div class="ID-навигации" - блок навигации
- .scrollspy('refresh') - программное прокрутка после внесенных изменений DOM (т.к. положение текущего видимого эл может измениться)
- События
- activate.bs.scrollspy - при активации нового эл
- Иерархия элементов и их классы
- ul class="nav nav-tabs" - список навигационных кнопок
- li - одна навигационная кнопка (предварительная активация class="active", иначе не выбрана)
- a href="#ID-блока" data-toggle="tab" - кнопка перехода к блоку при выбранной вкладки
- li - одна навигационная кнопка (предварительная активация class="active", иначе не выбрана)
- тэг class="tab-content" - блок как контейнер для набора блоков вкладок
- тэг id="ID-блока" class="tab-pane" - набор блоков вкладок
- ul class="nav nav-tabs" - список навигационных кнопок
- эл_a.tab('show') - программное нажатие на кнопку
- События
- show.bs.tab - перед переключением на выбранную кнопку
- shown.bs.tab - сразу после переключения на выбранную кнопку
- Иерархия элементов и их классы
- a data-toggle="tooltip" title="текст" - обязательные аттрибуты
- data-placement="left/top/bottom/right" - место насположения подсказки от элемента, при отсутствии - по ум
- эл.tooltip([об_парам]) - подключение нового формата подсказки
- animation:true(ум)/false - появление не мгновенное (аналог аттрибута data-animation)
- html:true/false(ум) - текст с html-форматированием (аналог аттрибута data-html)
- placement:"left/top/bottom/right/auto(ум)"/ф-я - место отображения подсказки (аналог аттрибута data-placement), "auto" можно добавлять в начале для избежания скртия
- selector:"селектор"/false(ум) - подключение другого эл (аналог аттрибута data-selector)
- title:"строка"/ф-я - при отсутствии аттрибута title - вычисляет (аналог аттрибута data-title)
- trigger:"click/hover(ум)/focus/manual" - условие отображения подсказки:клик/курсор/фокус/ (аналог аттрибута data-trigger)
- content:"строка"/ф-я - отображение контента при его отсутствии (аналог аттрибута data-content)
- delay:N/{ show:N1,hide:N2} - задержка отображения,скрытия (аналог аттрибута data-delay)
- container:"имя_тэга"/false(ум) - фильтр по имени тэга внутри которого устанавливаются подсказки (аналог аттрибута data-container)
- эл.tooltip("show/hide/toggle/destroy") - подсказку показать/скрыть/изменить/удалить
- События
- show.bs.tooltip - перед отображением подсказки
- shown.bs.tooltip - сразу после отображения подсказки
- hide.bs.tooltip - перед скрытием подсказки
- hiden.bs.tooltip - сразу после скрытия подсказки
- Иерархия элементов и их классы
- a data-toggle="popover" title="текст" - обязательные аттрибуты
- data-content="дополнительный текст" - дописываемый текст
- эл.popover([об_парам]) - подключение нового формата подсказки
- animation:true(ум)/false - появление не мгновенное (аналог аттрибута data-animation)
- html:true/false(ум) - текст с html-форматированием (аналог аттрибута data-html)
- placement:"left/top/bottom/right/auto(ум)"/ф-я - место отображения подсказки (аналог аттрибута data-placement), "auto" можно добавлять в начале для избежания скртия
- selector:"селектор"/false(ум) - подключение другого эл (аналог аттрибута data-selector)
- title:"строка"/ф-я - при отсутствии аттрибута title - вычисляет (аналог аттрибута data-title)
- trigger:"click(ум)/hover/focus/manual" - условие отображения подсказки:клик/курсор/фокус/ (аналог аттрибута data-trigger)
- content:"строка"/ф-я - отображение контента при его отсутствии (аналог аттрибута data-content)
- delay:N/{ show:N1,hide:N2} - задержка отображения,скрытия (аналог аттрибута data-delay)
- container:"имя_тэга"/false(ум) - фильтр по имени тэга внутри которого устанавливаются подсказки (аналог аттрибута data-container)
- эл.popover("show/hide/toggle/destroy") - подсказку показать/скрыть/изменить/удалить
- События
- show.bs.popover - перед отображением подсказки
- shown.bs.popover - сразу после отображения подсказки
- hide.bs.popover - перед скрытием подсказки
- hiden.bs.popover - сразу после скрытия подсказки
- Иерархия элементов и их классы
- тэг class="alert" - обязательные аттрибуты блока
class="alert-success" - дополнительный класс блока - добавление зеленого фона
class="alert-warning" - дополнительный класс блока - желтый фон
class="fade in" - дополнительный класс блока - добывляет анимационное исчезновение прозрачностью- a href="#" class="close" data-dismiss="alert" - первый элемент - кнопка удаления блока в последней колонке
- остальные элементы - текст сообщения в первой колонке
- тэг class="alert" - обязательные аттрибуты блока
- эл.alert(['close']) - [удаление блока сообщения]
- События
- close.bs.alert - перед закрытием сообщения
- closed.bs.alert - сразу после закрытия сообщения
- Иерархия элементов и их классы
- Одиночные кнопки
- button type="button" class="btn" - обязательные аттрибуты кнопки
- class="btn-default" - дополнительный класс кнопки - кнопка с белым фоном
- class="btn-primary" - дополнительный класс кнопки - основкая кнопка с синим фоном
- class="btn-danger" - дополнительный класс блока - красный фон
- data-toggle="button" - дополнительный аттрибут кнопки - фиксация нажатия цветом (цвет темнеет), подобие флажка
- data-loading-text="Loading..." - дополнительный аттрибут кнопки - текст устанавливаемый при выполнении загрузки
- Группа фиксируемых кнопок объединенных в блок (из флажков)
- div class="btn-group" data-toggle="buttons" - контейнер для группы кнопок
- label class="btn" - набор кнопок, контейнер для флажка и теста
- input type="checkbox" - флажок фиксации кнопки
- текст - текст на кнопке
- label class="btn" - набор кнопок, контейнер для флажка и теста
- div class="btn-group" data-toggle="buttons" - контейнер для группы кнопок
- Группа с одной фиксируемой кнопкой объединенных в блок (из радио-кнопок)
- div class="btn-group" data-toggle="buttons" - контейнер для группы кнопок
- label class="btn" - набор кнопок, контейнер для флажка и теста
- input type="radio" name="имя" - радио-кнопки одиночной фиксации с одинаковым именем
- текст - текст на кнопке
- label class="btn" - набор кнопок, контейнер для флажка и теста
- div class="btn-group" data-toggle="buttons" - контейнер для группы кнопок
- Одиночные кнопки
- эл.button() - подключение ф-й и обработчиков событий (после программного добавления)
- эл.button('toggle') - переключение кнопки если установлен аттрибут data-toggle="button"
- эл.button('toggle') - переключение кнопки если установлен аттрибут data-toggle="button"
- эл.button('loading') - замена текста кнопки на текст аттрибута data-loading-text="текст" и зпарещает доступ
- эл.button('reset') - восстановление первоначального текста кнопки после замены скриптом эл.button('loading')
- эл.button('строка') -
- Иерархия элементов и их классы
- Одиночные гармошки
- button type="button" class="btn" data-toggle="collapse" data-target="#ID-текста" - обязательные аттрибуты кнопки открытия/закрытия
- div id="demo" class="collapse in" - блок с текстом открываемы й кнопкой
- class="in" - дополнительный класс блока - открыт при инициализации
- Группа гармошек при открытии закрывает другие
- div class="panel-group" id="ID-контейнер" - контейнер для группы гармошек
- div class="panel panel-default" - набор панелей-гармошек
- div class="panel-heading" - видимый блок, содержит кнопку
- h4 class="panel-title" - оформление видимого блока в виде гаголовка
- a class="accordion-toggle" data-toggle="collapse" data-parent="#ID-контейнер" href="#ID-блока" - кнопка связанная с блоком текста и главным контейнером
- h4 class="panel-title" - оформление видимого блока в виде гаголовка
- div id="ID-блока" class="panel-collapse collapse [in]" - внешний блок с ф-ями распахивания [открыт при инициализации], на время процесса открытия/закрытия класс collapse меняется на collapsing
- div class="panel-body" - лок текста
- div class="panel-heading" - видимый блок, содержит кнопку
- div class="panel panel-default" - набор панелей-гармошек
- div class="panel-group" id="ID-контейнер" - контейнер для группы гармошек
- Одиночные гармошки
- эл.collapse([об_парам]) - подключение ф-й и обработчиков событий (после программного добавления)
- parent:"селектор"/false(ум) - указание объединяющего контейнера (аналог аттрибута data-parent)
- toggle:true(ум)/false - открытие блока текста (аналог аттрибута data-toggle)
- эл.collapse('show/hide/toggle') - открытие/закрытие/переключение гормошки
- События
- show.bs.collapse - перед открытием гармошки
- shown.bs.collapse - сразу после открытия гармошки
- hide.bs.collapse - перед закрытием гармошки
- hidden.bs.collapse - сразу после закрытия гармошки
- Иерархия элементов и их классы
- div id="ID-контейнер" class="carousel slide" - блок контейнера со слайдами
- ol class="carousel-indicators" - список индикатора
- li data-target="#ID-контейнер" data-slide-to="N-номер" class="[active]" - набор индикаторов для каждого слайта, у одного класс active - активирован
- div class="carousel-inner" - контейнер со слайдами
- div class="item [active]" - набор блоков содержащих слайды, у одного класс active - активирован
- img src=".." - изоражение для слайда
- div class="carousel-caption" - текст накладываемый на изображение
- div class="item [active]" - набор блоков содержащих слайды, у одного класс active - активирован
- a class="left carousel-control" href="#ID-контейнер" data-slide="prev" - кнопка перехода на предыдущий слайд
- span class="icon-prev" - пустой блок с установленным скриптом стрелки влево
- a class="right carousel-control" href="#ID-контейнер" data-slide="next" - кнопка перехода на следующий слайд
- span class="icon-next" - пустой блок с установленным скриптом стрелки вправо
- ol class="carousel-indicators" - список индикатора
- div id="ID-контейнер" class="carousel slide" - блок контейнера со слайдами
- эл.carousel([об_парам]) - подключение ф-й и обработчиков событий (после программного добавления)
- interval:N-число/5000(ум) - указание времени задержки перед запуском автоматического пролистывания (аналог аттрибута data-interval)
- pause:"hover(ум)/.." - указание причины отстановки авто-пролистывания (аналог аттрибута data-pause)
- wrap:true(ум)/false - установка циклической связи первого и последнего слайда (аналог аттрибута data-wrap)
- эл.carousel('prev/next') - переход к предыдущему/следующему слайду
- эл.carousel(N-число) - переход к N-му слайду
- эл.carousel('pause/cycle') - остановка/запуск автоматического пролистывания
- События
- slide.bs.carousel - перед перелистыванием слайда
- slid.bs.carousel - сразу после перелистывания слайда
- Иерархия элементов и их классы
- class="container" - блок контейнера с колонками
- div class="col-md-N" - блок колонки с блоком который должен плавать
- тэг data-spy="affix" class="affix" data-offset-top="N-число" - блок за которым установлено слежение, перемещается если до верхнего края отсталось Npx
- div class="col-md-N" - блок высокой колонки вдоль которой будет плавать блок слежения
- div class="col-md-N" - блок колонки с блоком который должен плавать
- class="container" - блок контейнера с колонками
- эл.affix([об_парам]) - подключение ф-й и обработчиков событий (после программного добавления)
- offset:N/{top:N1/ф-я,bottom:N2/ф-я}/ф-я - настройка слежения за свойством[и] блока (аналог аттрибута data-offset-top/bottom), но можно установить ф-ю вычисления N
AngularJS - модуль внедряет в HTML функциональность работающую в отдельносм цикле, интерактивную шаблонизацию, средства тестирования (не конфликтует с jQuery, ее подключают первой)
Модули для быстрого создания приложений на AngularJS
lineman - готовое приложение на AngularJS
- git clone https://github.com/davemo/lineman-angular-template.git имя-app - клонировать всю систему каталогов и файлов используя git
- cd имя-app - перейти в созданный каталог
- npm install - установка зависимых программ с помощью npm в папку node_modules
- авмоматически будет запущена команд bower install - установка зависимых программ с помощью bower в папку app/bower_components
- lineman run - запуск приложения, которое запускает локальный web-сервер http://localhost:8000/app/index.html
angular-seed - готовое приложение на AngularJS
- git clone https://github.com/angular/angular-seed.git - клонировать всю систему каталогов и файлов используя git
- cd angular-seed - перейти в созданный каталог
- npm install - установка зависимых программ с помощью npm в папку node_modules
- авмоматически будет запущена команд bower install - установка зависимых программ с помощью bower в папку app/bower_components
- npm start - запуск приложения, которое запускает локальный web-сервер http://localhost:8000/app/index.html
- тестирование
- npm test - запуск всех Jasmine-тестов установленых в папке test/unit/ с настройкой karma-runner в файле test/karma.conf.js
- npm run имя_теста - запуск одного ф-ла Jasmine-теста
- Обновление
- npm upbate - обновление зависимых модулей записанных в package.json
- bower upbate - обновление зависимых модулей записанных в bower.json
- npm run update-index-async - асинхронное обновление
Yeoman - генержатор приложения на AngularJS
- npm i -g yo - установка оболочки
- npm i -g generator-angular - установка генератора
- mkdir имя-app - создать каталог
- cd имя-app - перейти в созданный каталог
- yo angular - запуск генератора приложения с вопросами создания сервисов, директив, контроллеров, фильтров
- grunt server - запуск сервера
- grunt test - запуск теста
- grunt build - создание выходного файла
- yo angular:route имя-маршрута - создание одного маршрута
- yo angular:controller имя-контроллера - создание контроллера
- yo angular:directive имя-диррективы - создание диррективы
- yo angular:filter имя-фильтра - создание фильтра
- yo angular:view имя - создание
- yo angular:provider имя - создание
- yo angular:factory имя - создание
- yo angular:servise имя - создание
- yo angular:value имя - создание
- yo angular:constant имя - создание
- yo angular:decorator имя - создание Ключи в конце установки
- --minsafe - минификация
- --skip-add - добавление скрипта в index.html
- -
после загрузки скрипта, angular ищет директиву ng-app (если ее нет - для запуска надо выполнить скрипт angular.bootstrap(об_эл) )
- angular - единый об содержащий все ф-ии и методы
angular.module("имя_модуля_html",масс_имен_связан_модулей/[],[ф-я_настр(..)]) - создание об_модуля пользователя для внедрения(ТЭГ ng-app="имя_модуля_html" ), позволяет добавлять настройки,контроллеры и др., может иметь зависимость(расширение текущего модуля возможностями другого) от других дочерних модулей(тогда службы дочерних модулей доступны друг-другу и родителю, которые можно добавить в аргумент службы), все элементы можно ставить в цепочку и регистрировать не однократно (в случае применения минификации скрипта: ф-ии с зависимостями надо записать массивом - [$служ1,$служ2,..ф-я($служ1,$служ2,..)])- об_модуля.config(ф-я_настр(..)) - (фаза настройки провайдера) настройка фабрики или служб ф-ей конфигурации (или выполнить ее в module)
- об_модуля.controller("имя_контр_html",['$scope',..,ф-я($scope)]) - установка для модуля ф-ии-контроллера обычно выполняет инициализацию об $scope, где $scope - автоматически создается фабрикой Scope.$new()
- об_модуля.constant("имя_конст",значен) - создание константы модуля
- об_модуля.value("имя_знач",об) - создание в модуле простого об имеющего простое значение
- об_модуля.service("имя_служ",ф-я_констр(..)) - создание службы - объекта-одиночки (имя готовых служб обычно начинается с $), т.е регистрация в модуле ф-ии-конструктора (расширяет контроллер дополнительными функциями:$http,$log,$filter, их имена надо указать первыми в массиве завершив функцией контроллера с аргументами: app.controller('имя',['$сл1','$сл2',..ф-я($сл1,$сл2,..)]), при получении д-х асинхнонными ф-ями небходимо использовать this сохнаненную в переменной)
- об_модуля.factory("имя_служ",ф-я(..)) - создание фабрики, регистрация в модуле любых ф-ий возвращающих об
- об_модуля.provider("имя_служ",ф-я(..)) - создание службы как провайдера (универсальный метод), содержит фабричную ф-ю $get() и другие св-ва, вначале фабрика настраивается (app.config()) а после создается экземпляр
- об_модуля.run(ф-я(..)) - выполнение ф-ии при запуске приложения
- об_модуля.name - получить имя модуля
- об_модуля.requires - получить масс имен модулей загружаемых перед этим мод.
- об_модуля.animation(..) -
об_модуля.directive("имя_дир",фабр_ф-ия/[перем_зависим1,..,фабр_ф-ия]) - фабричная ф-ия (создает для компилятора об с полями) для внедрения в HTML-эл дополнительных ф-ий (отображение зависимостей в виде массива небходымы для благополучной минификации JS)- возможные поля об создаваемого ф-ей:
- name:"имя" - имя области видимости
- restrict:'A/E/C/M' - тип диррективы для встраивания(аттрибут/элемент/класс/комментарий)
- priority:N - (ум-0 самый низкий) установка приоритета компиляции, когда в эл несколько дирректив
- terminal:true - запрещение компиляции других дирректив с низким приоритетом до компиляции этой
- link:ф-я(перем_scope, перем_element, перем_attrs, [перем_ngModelController]) - связывает диррективу с контекстом (добавление ф-ий в контекст)
- св-ва перем_ngModelController
- .$viewValue - значение отображаемое в элементе
- .$modelValue - значение хранимое в модели, может отличаться от $viewValue зависимо от ф-ии $parser()
- .$parsers - массив ф-ий, последовательно преобразующих значение для передачи его в модель
- .$setViewValue(значение) - ф-я для передачи значения в модель (из эл)
- .$render - ф-я для автоматического отображения значения в эл (значение из модели)
- перем_scope.перем=.. - добавление в область видимости новой переменной
- перем_scope.имя_функц=.. - добавление в область видимости новой функции
- template:"html-шаблон" - строка разметки применяемая для диррективы, может использовать диррективу ng-transclude для указания места вставки контента указанного в текущей диррективе
- templateUrl:"ф-л" - ф-л с разметкой применяемая для диррективы, загружаемый асинхронно
- replace:true/false - замена(с копированием атрибутов)/нет(шалон добавляется) всего текущего эл на шаблон
- transclude:false/true/'element' - нет/использует текущее содержимое контента/весь элемент для шаблона,ф-ии компиляции (как в директиве ng-repeat копируется весь эл и содержимое текущ эл), добавляет в свойстве compile 3-й аргумент функцию
- scope:false(ум)/true/об - использовать родительский контекст/создание нового с наследованием св-в родителя/создание нового контекста не имеющего связи с контекстом родителя
- об с автоматизацией св-в контекста
- имя_пер:"@имя_аттрибута" - привязывает интерполяцией значение "имя_пер" контекста к значению атрибута "имя_аттрибута" элемента (т.е. имя_аттрибута="{{имя_пер}}")
- имя_пер:"@" - привязывает интерполяцией значение "имя_пер" контекста к значению одноименного атрибута "имя_пер" элемента
- имя_пер:"=имя_аттрибута" - двустороннее связывание значения "имя_пер" контекста со значением атрибута "имя_аттрибута" элемента
- имя_пер:"=" - привязывает присвоением значение "имя_пер" контекста к значению одноименного атрибута "имя_пер" элемента
- имя_функц:"&имя_аттрибута" - привязывает ф-ю "имя_функц" контекста к значению атрибута "имя_аттрибута" элемента
- имя_функц:"&" - привязывает значение "имя_функц" контекста к значению одноименного атрибута "имя_функц" элемента
- controller:"имя_контр" / ф-я($scope,..службы..,[$transclude]) - установка готового(но он всем доступен)/нового контроллера (для нового контекста) (может выполнят ф-ии св-ва link, тогда надо внедрять:[служба1,..ф-я(..служба1)]), вместо внедрения контроллера в HTML(ng-controller=..)
- возможные службы для внедрения
- $scope - контекст текущего элемента
- $element - обертка jquery эл самой директивы
- $attrs - об с аттрибутами эл: {имя_атр1:знач1,..}
- $transclude - доступом к ф-ии включения содержимого с уже добавленным контекстом, для получения об_эл=$transclude()
- controllerAs:'имя' - псевдоним имени контроллера, чтобы обращаться с более удобным именем
- require:"[префикс]имя_контроллера/массив_имен_контроллеров" - применение для передачи контроллера/массив_контроллеров другой диррективы (например ngModel) этого эл для передачи в 4-й аргумент ф-ии link (например об ngModuleController)
- возможные префиксы, которые можно объединять
- ? - не обязательное присутствие контроллера(например ?имя_диррективы, тогда при отсутствии диррективы 4-й эл получит null)
- ^ - получение контроллера из родительских эл с указанным именем директивы
- compile:ф-я(element,attributes,[перем_transcludeFn]) - ф-я компиляции преобразует текущий эл (element - об_эл_jquery) , [перем_transcludeFn - с доступом к ф-ии включения содержимого, для получения об_эл=перем_transcludeFn(об_контекст)]
об_модуля.directive("имя_дир",ф-ия(){return ф-я(перем_scope, перем_element, перем_attrs){..}} - Короткий вариант диррективы, возвращает ф-ию связывания, остальные значения - по умолчанию- перем_scope - об_контекста
- перем_element - обертка элемента
- перем_attrs - об_аттрибутов: {имя_атр1:знач1,..}
об_модуля.component ("имя_дир", об_директив ) - компонент как упрощенная форма директивы, заменяет директиву-элемент на шаблоноб_модуля.filter ("имя_фильтр",фабр_ф-я(){return ф-ия(об,[арг1,арг2,..]){..return знач_ответ}}) - фабрика фильтра получает об [с аргументами], возвращает после обработки знач_ответ
- angular.module("имя_модуля") - повторное получение об_модуля для обращения к уже созданному модулю
- angular.copy(истчник[, назначение]) - получение копии источника/об [и установка его в назначении]
- angular.bind(об_конт, ф-ия1, аргументы) - создание ф-ии для выполнения ф-ии1 в об_конт с аргументами
- angular.bootstrap(об_эл[, "имя_модул"/масс_модулей]) - запуск модуля в эл вместо диррективы ng-app, применяют при асинхронной загрузке приложения
.element(об_эл/$N/"HTML-строка элемента") - подключ_эл/подключ_эл_по№_контекста/создание jquery_lite-обертки об_эл- addClass() -
- after() -
- append() -
- attr() -
- bind("имя_событ",ф-я) - обработчик события эл
- unbind("имя_событ",ф-я) - удаление обработчика события для эл
- children() - Does not support selectors
- clone() -
- contents() -
- css() -
- data() -
- eq() -
- find() - Limited to lookups by tag name
- hasClass() -
- html() -
- next() - Does not support selectors
- parent() - Does not support selectors
- prepend() -
- prop() -
- ready() -
- remove() -
- removeAttr() -
- removeClass() -
- removeData() -
- replaceWith() -
- text() -
- toggleClass() -
- triggerHandler() - Doesn't pass native event objects to handlers.
- val() -
- wrap() - Дополнительные методы
- .controller("имя_контр") - получить контроллер для эл
- .injector() - получить инжектор эл или его родителя
- .scope() - получить обл.видимости для эл или его родителя (если у эл его нет)
- .inheritedData() - похож на data()
- .equals(об1/знач,об2/знач) - t/f определить эквивалентность двух об/знач
- .extend(об1, об2) - добавление в об1 всех св-в из об2
- .forEach(об/масс,ф-ия(key,value)[, ОВ]) - выпол.ф-ии [внутри ОВ] для всех эл об/масс
- .fromJson("JSON-строка") - (де-сериализация) получить об из JSON-строки
- .toJson(об[, pretty]) - (сериализация) получить JSON-строку из об
- .identity() - получить первый аргумент ф-ии (запускается в ф-ии)
- .injector("имя_модуль"/масс_имен_модулей) - получить ф-ию-ижектор ($injectop) для получения доступа к об служб
- Ф-ии проверки типа
- .isArray(знач) - t/f проверка значения - масс
- .isDate(знач) - t/f проверка значения - дата
- .isDefined(знач) - t/f проверка значения - определено (не undefinit)
- .isUndefined(знач) - t/f проверка значения - не определено (undefinit)
- .isElement(знач) - t/f проверка значения - об_эл/jquery-обертка
- .isFunction(знач) - t/f проверка значения - ф-ия
- .isNumber(знач) - t/f проверка значения - число
- .isObject(знач) - t/f проверка значения - об (аналог typeof)
- .isString(знач) - t/f проверка значения - строка
- .noop() - пустая ф-ия типа function(){}
- .lowercase("стока") - получить строку в нижнем регистре
- .uppercase("стока") - получить строку в верхнем регистре
.version - об с информацией о версии NG- .full - Строка полной версии, такая как "0.9.18"
- .major - Номер старшей версии, такой как "0"
- .minor - Номер младшей версии, такой как "9"
- .dot - Номер исправления, такой как "18"
- .codeName - строка кодового имя релиза, такое как "jiggling-armfat"
- .mock - Пространство имен для 'angular-mocks.js' который содержит инструменты для тестирования связанного кода
- $rootScope - корневой родительский контекст (создается диррективой ng-app)
- Scope() - класс создания об контекста $scope и содержит методы обработки цикла, событий, отображения
$scope - контекст, содержит методы обработки цикла, событий, отображения- Свойства контекста созданные автоматически
- .$parent - родительский контекст (непосредственно по иерархии)
- .$new([true]) - принудительное создание дечерней обл.видимости (ОВ) [изолируется - не наследует состояние родителя]
- .$destroy() - удаление ОВ и ее дочерние ОВ
- .$emit('имя_событ') - генерация события контексту вверх по иерархии (к родителю)
- .$broadcast('имя_событ') - генерация события контексту вниз по иерархии (к дочернему)
.$on('имя_событ',ф-я) - установка обработчика события, где ф-я - function(об_событ,[арг1,арг2,..]){}- об_событ.stopPropagation() - (для $emit) остановка распространения
- об_событ.preventDefault() - отмена установленного для события ф-ии по умолчанию
- об_событ.defaultPrevented() - возвращает true если уже была вызвана preventDefault()
- об_событ.name - имя пойманого события
- об_событ.currentScope - возвращает ссылку на текущий $scope, где поймано событие
- об_событ.targetScope - возвращает ссылку на $scope, откуда было отправлено событие через $emit или $broadcast
- Восходящие NG-событие(от родителя к дочерним)
- '$includeContentRequested' - при запросе на загрузку контента (ng-include, ng-view)
- '$includeContentLoaded' - при загрузке контента (ng-include)
- '$viewContentLoaded' - при загрузке контента (ng-view)
- Нисходящее NG-событие (от дечернего к родителю)
- '$locationChangeStart' -
- '$locationChangeSuccess' - при изменении oldUrl на newUrl запускается от $rootScope: function(event, newUrl, oldUrl){}
- '$routeUpdate' - при повторном исп. маршр.(reloadOnSearch==true)
- '$routeChangeStart' - перед изменением маршрута
- об_событ.current - об_настр текущего маршрута
- об_событ.next - об_настр будущего м-та
- '$routeChangeSuccess' - получены все зависимости для изменения м-та
- об_событ.current - об_настр текущего маршрута
- об_событ.previous - об_настр предыдущего маршрута
- об_событ.angularEvent - синтезированый об события
- '$routeChangeError' - был отвергнут любой разрешенный маршрут
- об_событ.current - об_настр текущего маршрута
- об_событ.previous - об_настр предыдущего маршрута
- об_событ.rejection
- '$destroy' - перед удалением ОВ и его дочерних ОВ
- .$watch("выраж"/ф-я (возвращаемый результат), ф-ия_обраб([newValue, oldValue]), true(сравнение всех св-в об)/false(ум)) - регистрация наблюдателя на каждом цикле с обработчиком при изменении выраж, возвращает ф-ю запускаемую для удаления этого наблюдателя
- .$watchCollection("массив"/"объект"/ф-я (возвращаемый результат), ф-ия_обраб([newValue, oldValue]) ) - регистрация наблюдателя на каждом цикле с обработчиком при изменении массива/св-в объекта, возвращает ф-ю запускаемую для удаления этого наблюдателя
- .$digest() - принудительный вызов наблюдателей watcher (список установленных $watch()) текущего и дочерних контекстов и обработка очереди событий $evalAsync (применяют для тестов)
- .$evalAsync(ф-я) - установка в очередь выполнения ф-ю, аналог $timeout(ф-я,0)
- .$id - св-во, уникальный номер ОВ (применяют для отладки)
.$apply(ф-я()) - запуск ф-ии для изменений в контексте и принудительная проверка $watch() всех контекстов и обработка их событий $digest()- причины автоматического вызова .$apply():
- нажатие на гиперссылку, Назад/Вперед браузера
- ответы запросов сети $http,$resource
- вызов обработчиков событий всех дирректив
- таймеры $timeout или setTimeout
- $element - об_эл текущего элемента (внедряется в контроллер диррективы)
- $window - ссылка на window браузера
- $document - обертка для document
$attrs - обертка об с аттрибутами (внедряется в контроллер диррективы)- .$set("имя_атр","знач") - установка аттрибута
- .$observe("имя_атр",ф-я(перем_знач)) - установка слушателя изменения значения аттрибута при интерполяции аттрибута (аналог $watch())
- контекст.$eval() - обертка для ф-ии javascript - eval()
$provide - служба регистрации рецептов создания объектов, после регистрации объектов их можно внедрять через службу $injector (внедрение блоков в блоке .config() )- .decorator("имя_фабрика",ф-я($delegate){}) - декоратор дополняет сущеструющую фабрику новыми свойствами с помощью $delegate()
- .value() - тотже режультат module().value() но в блоке config()
- .factory() - тотже режультат module().factory() но в блоке config()
- $compileProvider.directive() - тотже режультат module().directive() но в блоке config()
- $filterProvider.register() - тотже режультат module().filter() но в блоке config()
$injector - служба содержит зависимости текущего об с другими службами, создает $rootScope- .get("имя_служ") - получение созданного службой об, а если не создан - создает об службы
- .invoke(ф-я) - выполнение ф-ии, если ф-я должна получить зависимости относящиеся к $injector
- $httpProvider - провайдер (применяется тольно в .config() )
$httpBackend - для имитации в тестах низкоуровневый сервис работы с XMLHttpRequest исправляет несовместимости бр-ов, использована в $http или $resouce (может быть применена в текстах для подмены на var-переменную)- .expect('метод','url-адрес',[об-данных],[об-загол] ) - имитация ожидаемого запрса методом GET/POST/DELETE/PUT/..
- .expectXXX('url-адрес',[об-данных],[об-загол]) - имитация ожидаемого запрса GET/POST/DELETE/PUT/JSONP..
- .when('метод','url-адрес',[об-данных],[об-загол] ) - имитация ожидаемого запрса методом GET/POST/DELETE/PUT/..
- .whenXXX('url-адрес') - имитация ожидаемого запрса GET/POST/DELETE/PUT/..
- .respond([код-ответ],ответ,[об-заголовок]) - имитация ожидаемого ответа: 200,ответ
- .respond(ф-я) - имитация ожидаемого ответа в функции:return 200,ответ,[об-заголовок]
- .flush() - запуск имитации запроса (whenXXX) и ответа (respond)
- .verifyNoOutstandingExpectation() - проверка на выполнение всех запросов и ответов
- .verifyNoOutstandingRequest() - проверка что запросы и ответы выполнены только ожидаемые
- .resetExpectations() - очистка всех установленных ожиданий
$http(об_настр) - служба как универсальная ф-я связи с сервером в виде ф-ии, выполняющая запросы XHR и JSONP- об_настр
- method: - метод запроса (применяют для ф-ии $http()):GET/POST/DELETE/PUT/
- url: - адрес запроса (применяют для ф-ии $http())
- params:об - параметры добавляемые в строку запроса как ?имя=знач&..
- headers: - дополнительные заголовки запроса
- data:"стр_д-х"/об_д-х - передаваемые данные, (об_д-х автоматически преобразуются в JSON, кроме св-в начинающиеся с $, обойти это можно применив JSON.stringify)
- timeout:N - мс длительность ожидания отсвета
- cache:true/имя_ячейки - управление кэшированием запроса (первый ответ сохраняется в памяти и второй запрос не получаем из памяти)
- transformRequest:ф-я() - ф-я обработки данных перед запросом
- transformResponse:ф-я() - ф-я обработки полученных данных после запроса
- withCredentials: -
- apiKey:'ключ' - добавление ключа при jsonp-запросе
$http. - служба связи с сервером, выполняющая запросы XHR и JSONP (безопасность:при получении от сервера XSRF-TOKEN=код, в запросы будет добавляться заголовок X-XSRF-TOKEN:код)- Выполнение запроса укороченными специальными функциями
- .get('URL'[,об_настр]) - простой запрос GET
- .head('URL'[,об_настр]) - простой запрос HEAD
- .post('URL',об_данных[,об_настр]) - простой запрос POST с передачей д-х (преоразование в JSON, но пропускаются св-ва об "$..") Сложные запросы: при запуске запросов (не get,post,head) браузер сам выполняет предварительный запрос OPTIONS и если сервер вернул код 200 - запускает сам запрос
- .put ('URL',об_данных[,об_настр]) - запрос PUT с передачей д-х (предусматривает два запроса 1-OPTIONS, 2-PUT)
- .delete('URL'[,об_настр]) - запрос DELETE (предусматривает два запроса 1-OPTIONS, 2-DELETE)
- .jsonp('URL ?callback=JSON_CALLBACK'[,об_перед_д-х]) - GET-запрос позволяет делать запросы на другие сервера, выполняет GET-запрос (автоматически создает скрипт), где "JSON_CALLBACK" заменяется "angular.callbacks._????" для приема д-х в виде строки ф-ии "angular.callbacks._????(д-е)"
.success (ф-я(data, N-status, ф-я(headers_отв), об_настр)) - при удачной связи (код 200-299).error (ф-я(data, N-status, ф-я(headers_отв), об_настр)) - при возникновении ошибок (код 300 и выше).then (ф-я_success(об_ответ), [ф-я_error(об_ответ)]) - можно регистрировать ф-ии в формате службы $q- содержание об_ответ
- data - об полученных д-х после ф-ии де-сериализации
- status - N-число - код ответа 200-299 успех, 300-500 неудача
- statusText - строка ответа с описанием кода ответа
- headers - ф-ия выдающая значен заголовка: headers("имя_зогол")
- config - об настроек создания запроса
асинхронные ф-ии обратного вызова для получение ответа$resource - специализированная служба асинхронного запроса на сервер, через RESTful (необходимо подключить скрипт angular-resource.js и добавить зависимость модуля от ngResource), получения об или масс_об$resource ('шаблон url',[об_д-х_перем],[об_действий]) - фабрика для создания об_ресурса, выполняющего запросы на сервер- шаблон url - строка ареса, может содержать: "\\:N"-номер порта(двоеточие надо экранировать), ":имя_перем"-переменную из об_д-х_перем
- об_д-х_перем - об для подстановки в шаблон по умолчанию: имя_перем, а остальные как ?имя=знач&.., значение "@имя_перем" - воспринимается не как строка, а вычисляемое из переменных
об_действий - об для создания дополнительных методов (св-во - имя нового метода) содержат об: {имя_метод1:об_парам,..}, с параметрами- method:"метод" - указание метода, например PUT
- params:об - подставляемые параметры
- isArray:true/false - тип возвращаемого ответа массив_об/один_об
- url:'..' -
- transformRequest:ф-ия(об_д-х,об_header) - преобразование д-х запроса
- transformResponse:ф-ия(об_д-х,об_header,N-статус) - преобразование д-х ответа
- headers:об - добавление заголовков
- headers:об - добавление заголовков
- Стандартные методы конструктора об_запроса (асинхронные)
.query ([об_д-х_перем],[ф-я_удач(д-е),ф-я_ошиб()]) - запуск запроса через $http.get() для получения JSON-массива эл_д-х, может асихронно возвращать ответ.get (об_д-х_перем,ф-я_удач(),ф-я_ошиб()) - запуск запроса через $http.get() для получения одного JSON-эл_д-х, может асихронно возвращать ответ.save (об_перем,об_д-х,ф-я_удач(),ф-я_ошиб()) - запуск запроса через $http.post() с передачей об_д-х в теле запроса POST/PUT.delete/.remove (об_д-х_перем,ф-я_удач(),ф-я_ошиб()) - запуск запроса через $http.delete()
- Методы одного об созданного фабрикой (об=new Фабр() ), возвращающей $resource()
- об.$save() - запуск запроса через $http.post() с передачей об_д-х в теле запроса POST/PUT
- об.$delete() - запуск запроса через $http.delete()
.query (об_парам,ф-я_удач(),ф-я_ошиб()) - запуск запроса через $http.get() для получения массива эл_д-х.get (об_парам,ф-я_удач(),ф-я_ошиб()) - запуск запроса через $http.get() для получения одного эл_д-х
$q - служба для выполнения асинхронных ф-ий в синхнонном режиме - создание отложенных заданий.defer() - создание об отложенного задания (для выполнения в будущем).promise - св-во хранит об_promise результата выполнения отложенного задания.then (ф-я_success(об_ответ), [ф-я_error(об_ответ)], [ф-я_notify(об_ответ)]) - установка обработчиков успеха [и ошибки] (если then() вызывать нескольно подряд, все ф-ии будут выполняться по очереди), возврат тоже об_promise.then (..) - ..- .finally(ф-ия()) - промежуточный запуск ф-ии перед выполнением асинхронных ф-ий далее
- .catch(ф-ия()) - запуск ф-ии ошибки, аналог .then(null,ф-я(..))
- .resolve(об_ответ) - запуск в об_promise ф-ии успешного завершения - ф-я_success со значением об_ответ
- .reject(об_ответ) - запуск в об_promise ф-ии неудачного завершения - отвергает promise (тоже $q.reject)
- .notify(об_ответ) - запуск в об_promise ф-ии
- .reject(об_ответ) - запуск ф-ии неудачного завершения - создает отвергнутый promise (применяют для перехода в неудачный результат следующего then() )
- .resolve(об_ответ) - запуск ф-ии удачного завершения - создает отвергнутый promise (применяют для перехода в неудачный результат следующего then() )
- .all(масс_promise) - формирует одного общего promise из массива разных promise, если хоть один имеет неудачу - результат неудачный
- .race(масс_promise) - формирует одного общего promise из массива разных promise, если хоть один имеет неудачу - результат неудачный
- .when(синхр_значение/promise) - формирует аналогию promise из значения синхронной ф-ии, применяют для вставки в $q.all([..])
- $q(ф-ия(перрем_успех,перем_отказ){перем_успех(данные_успех);перем_отказ(данные_отказ)}) - короткая запись возвращает promise
$timeout (ф-я[, N-задерж][, true(ум)/false- отмена вызова apply()]) - обертка для window.setTimeout, предпочтительнее т.к. обновляет DOM с помощью $apply()- $timeout.flush - переход к следующему циклу, запускает $timeout при отсутствии задержки
- $timeout.cancel(promise) - отмена вып. ф-ии возвр t если задача не выполн
- $filter("имя_фильтра")(об,[арг1,арг2,..]) - служба (для внедрения ф-ии фильтра в любой модуль или применение в других фильтрах) поиска зарегистрированого фильтра и применения вне html [с аргументами]
- имя_фильтраFilter(об,[арг1,арг2,..]) - служба, все зарегистрированные фильтры имеют синоним службы $filter("имя_фильтр") без поиска с окончанием Filter
- использование в адресной строке пути после # не перегружает страницу, в HTML5 можно добиться того же и не применять # (но тогда сервер должен принимать пути: /static - передача стат. ф-лов, /databases - управление данными, другие - передача начальной страницы )
$locationProvider - служба настройки восприятия адресов- .html5Mode(true/false(ум)) - логика применения путей после знака # или режим html5 - без
- .hashPrefix("строка префикса") - (ум-"#") установка префикса для не HTML5
$location - служба привязана к адресной строке браузера (применяет window.location), но не перегружает страницу (перегружает только-$window.location.href)- методы при установке возвращают $location для составления цепочки, строки автоматически кодируются/декодируются
- .absUrl() - получить абсолютный URL (с именем сайта) но с закодироваными сегментами
- .protocol() - получить строку протокола: 'http:'/'ftp:'/..
- .host() - получить хост (хост:порт/путь..?..)
- .port() - получить N-число порта
- .url(["URL"]) - установить относительный (возвр-$location)/определить весь адрес без имени сайта
- .path(["/путь"]) - установить путь(возвр-$location)/определить строку пути до ? (применяют для отслеживания изменения пути в $scope.$watch() )
- .search() - получить об из сроки поиска (передаваемые данные)
- .search('срок_поиск'/об_д-х_поиска , 'значение'/null) - установка строки поиска/удаление
- .hash([значен]) - установить/определить хэш URL (..#хэш)
- .replace() - запрос на замену текущего URL (с записью в историю) на измененный URL (страница не меняется), изменения произойдут после $digest
- $anchorScrollProvider.disableAutoScrolling() - отключение авто-переходов браузера по кэшу (путь#кэш)
- $anchorScroll() - ручной переход к эл (следит за значением $location.hash()), когда выключен автоматический переход $anchorScrollProvider.disableAutoScrolling()
- Работа с маршрутами требует подключения скрипта angular-route.js и добавить зависимость модуль ngRoute
$routeProvider - провайдер для установки маршрутов в методе настройки (.config()) и загрузку шаблона для директивы ng-view- when("путь1",об_настр1) - назначение для пути - путь к ф-лу (их много)
- .otherwise(об_настрN) - при неизвестном пути (по умолчанию), он один (обычно перенаправляют)
- содержание об_настр
- templateUrl:"путь_ф-ла" - соотверствие для пути ф-ла шаблона
- template:"html-шаблон" - соотверствие для пути строки шаблона (вместо templateUrl)
- redirectTo:"путь" - перезапуск пути заново по умолчанию (ни один путь не совпал)
- controller:"имя_контр" - установка по маршруту собственного контроллера для шаблона, создающий новый нонтекст
- resolve:{имя1:ф-я1,имя2:ф-я2,..} - вычисление всех функций с асинхронными зависимостями (ф-я(асинхр_завис1,..){..return знач}), после их успешных выполнений (при ошибке - маршрут не отображается, а адрес остается) будет отображен маршрут (значения прем могут быть преданы в контроллер для внедрения как зависимости)
- reloadOnSearch:true/false - перезагрузка страницы при не найденного пути
- пользов_св-во1:знач1 - добавление пользовательских св-в (можно сохранить ссылку на шаблон и подключить в ng-include как $route.current.пользов_св-во1)
- принятие динамического пути
- /аа/бб/:имя_перем - принятие пути с присвоением имя_перем=значен в $routeParams
- /аа/бб/*имя_перем - принятие пути с присвоением имя_перем=значен в $routeParams или /аа/бб/
- передача динамического пути в ng-href
- /аа/бб?имя=значен - передача значения из HTML как св-ва :"..бб?имя={{значен}}.."
- /аа/бб/значен - передача значения из HTML как часть пути :"..бб/{{значен}}.."
- варианты создания ссылок для пути маршрутизации
a href="путь" ../a - гипер ссылка (для режима html5 аттрибут target определяет ссылку на внешний ресурс)ТЭГ/a ng-click="ф-я()" ../ТЭГ - обработчик клика любого тэга (тэг a при отсутствии href переходить не будет), где $scope.ф-я(){.. $location.path("путь")..}a ng-href="путь с вставкой {{перем}}" ../a - гипер ссылка с динамическим путем
- $routeParams - служба является об со всеми перем из маршрута: /:имя_перем или ?имя_перем=знач
$route - сервис маршрутизации для получения д-х о маршруте (требует подключения скрипта angular-route.js и добавить зависимость модуль ngRoute)- .current.params - синоним $routeParams ($route.current.params.имя_перем - переменные запроса)
- .current.пользов_св-во1 - получение значения св-ва пользователя сохраненного в об переданном $routeProvider
- ui-router - модуль системы работы с вложенными маршрутами (есть версии для angular_1.x, angular_2+, React)
$cacheFactory - служба для хранения в памяти , чтобы не загружать шаблоны повторно, они сохраняются в памяти (для безопасности неоходимо удалять шаблоны имеющие доступ к конфид.инф.), это об хранит ключ-"путь\ф-л_шаблон", значен-текст шаблона- .create("имя",[об_настр]) - создание в памяти именной ячейки, возвращает об_кэша
- об_кэша.info() - возврвщает имя, размер, об_настр
- об_кэша.put("ключ","значение") - запись информации в кэш
- об_кэша.get("ключ") - получить значение из кэша по ключу
- об_кэша.remove("ключ") - удалить значение из кэша по ключу
- об_кэша.removeAll() - удалить все значения из кэша
- об_кэша.destroy() - удалить кэш
$templateCache - кэш хранит HTML-шаблоны, чтобы не загружать шаблоны повторно, они сохраняются в памяти (для безопасности неоходимо удалять шаблоны имеющие доступ к конфид.инф.), это об хранит ключ-"путь\ф-л_шаблон", значен-текст шаблона- .put("путь\ф-л_шалон","текст шаблона") - предварительная запись нового шаблона в кэш без применения тега script (для непосредственной записи в шаблон надо экранировать кавычки:\' или \")
script type="text/ng-template" id="путь/ф-л_шаблона" текст шаблон/script - начальная загрузка шаблона как дочерний в основном шаблоне (где подключен модуль ng-app), шаблон сохраняется в $templateCache, применяют как вызов templateUrl:путь/ф-л_шаблона- $sanitize('html-строка') - служба-функция возвращает преобразование HTML-разметки применяемое в диррективе ng-bind-html (требуется загрузка angular-sanitize.js и внедрения модуля ngSanitize)
$compile("html-строка"/обертка_эл) - служба (применяемая в диррективах и в тестировании дирректив) для компиляции html-строки c привязками к контексту, получает ф-ю для связывания с об контекста - имя_ф-ии(scope)- варианты применения ф-ии связывания
- имя_ф-ии(об_контекста) - получение об_эл с подставленными значениями переменных контекста
имя_ф-ии (об_контекста,ф-я(об_эл_копия){использовать об_эл_копия}) - получение об_эл и использовение клонов (как в директиве ng-repeat)
- $transclude - служба-функция включения оригинального контента в шаблон создаваемый диррективой, $transclude() - возвращает внедряемый об_эл (внедряется в контроллер диррективы)
$interpolateProvider - провайдер настройки интерполятора (нотации в HTML начала и конца:{{выражение}} )- .startSymbol("символы") - символы начала выражения
- .endSymbol("символы") - символы завершения выражения
- $interpolate("html-строка с {{перем}}") - служба (применяется в диррективах и выражениях интерполяции) интерполяции принимает строку с наличием "{{перем}}", возвращает ф-ю(контекст) принимающая контекст и возвращающая строку с значениями из контекста
- Интернационализация1
$locale - служба содержит константы форматов и названий для отображения даты, времени, чисел, валюты (ngLocale - модуль зависимости, необходимо подключение скрипта "/i18n/angular-locale-язык-страна.js", ум- 'en-us')- .id - получить строку с кодировкой подключенной локали в виде: "язык_страна"
.DATETIME_FORMATS - об содержит массивы слов используемых в форматах даты и времени фильтра date- .DAY / .SHORTDAY - массив строк дней недели/сокр
- .MON / SHORTMONTH / STANDALONEMONTH - массив строк месяцев/сокр
- .WEEKENDRANGE - массив индексов выходных дней (5,6)
- .fullDate/longDate/medium/mediumDate/mediumTime/short/shortDate/shortTime - форматы дат и времени, применяемых в фильтрах date:имя_формат
.NUMBER_FORMATS - об константы символов используемых в форматах чисел и валют (фильтры: number, currency)- CURRENCY_SYM - строка с сокращенным словом/знаком местной валюты (мы-"грн", США-"$")
- DECIMAL_SEP - знак отделения дробной части (мы-",", США-".")
- GROUP_SEP - знак отделения трех цифр (мы-пробел, США-",")
- PATTERNS - два об с константами для форматирования чисел, валюты
- Варианты подстановки переведенных текстов
- создание фильтра с массивом разных переводов - только для малого количества фраз, т.к. падает производительность
- создание диррективы с массивом разных переводов - сложно применять для аттрибутов тэгов
- создание набора файлов шаблонов с разными переводами
- Подготовка шаблонов с помощью grunt.js
- Передача на сервер информации о локали
- часть пути в запросе - указание в строке запроса пути локали: "..\ru-ru\.." или "..\en-us\.."
- наличие заголовка запроса Accept-Language - при обработке запроса надо проверять заголовок
- Настройка в динамическом шаблоне подключения локали
script src="../angular-locale_<%=перем_локаль%>.js" /script - Настройка в динамическом шаблоне тэга BASE для доступа к ресурсам
base href="/<%=перем_локаль%>/" /base , тогда для общих ресурсов надо указать абсолютный путь - Переключение на новую локаль -
- Передача на сервер информации о локали
- Интернационализация2 (создание своего словаря)
$translate - служба содержит константы форматов и названий для отображения даты, времени, чисел, валюты (pascalprecht.translate - модуль зависимости, необходимо подключение скрипта "angular-translate.js")- $translateProvide.translations('язык',{ключ1:'значение1',..}) - составление словаря на разных языках
- $translateProvide.preferredLanguage('язык') - первоначальный язык
- $translate.uses('язык') - переключение языка
- {{ 'ключ' | translate }} - отображение
$parse - служба для связывания эл ввода с моделью (применен в модуле ngModel)- $parse(об_диррект_эл)(контекст) - ф-я чтения из контекста (для передачи в эл: el.text())
- $parse(об_диррект_эл).assign(контекст, значение) - ф-я записи в контекст (при событии "input" и получения значения из элемента el.val())
$sce - служба для защиты контента от внедрения опасного кода- getTrusted(тип,'строка') / getTrusted[тип]('строка') -
- parseAs(тип,'строка') / parseAs[тип]('строка') -
- trustAs(тип,'строка') / trustAs[тип]('строка') -
- Константы типов
- $sce.HTML
- $sce.CSS
- $sce.URL
- $sce.RESOURCE_URL
- $sce.JS
- $exceptionHandler - служба выдачи сообщения об ошибках на консоль
- $controller(имя_контроллера,{$scope:об_контекст}) - получение модели указанного контроллера для тестирования (об_контекст - новый контекст $rootScope.$new() или дочерний )
$event - служба-событие переданное в ф-ю-обработчик событий- .clientX, .clientY - координаты клика относительно страницы
- .type - имя события
- Варианты внедрения дирректив
директва /директва - как элемент HTMLтэг директва="значен" /тэг - как аттрибут у любого тэгатэг class="директва : значен" /тэг - как значение класса!-- directive: директва значен -- - как комментарий
- способы именования дирректив в аттрибутах "ngИмя":
- ng-имя, ng:имя, ng_имя - дефис/двоиточие/подчеркивание
- x-ng-имя, x-ng:имя, x-ng_имя) - предварение имени x- и дефис/двоиточие/подчеркивание
- data-ng-имя, data-ng:имя, data-ng_имя - для прохождения валидности предварение имени data- и дефис/двоиточие/подчеркивание
ТЭГ ng-app - внедрение в контейнер общей функциональности модуля angular, внутри создается корневой angular-контекст $rootScope (для IE8 добавляют id="ng-app")ТЭГ ng-app="имя_модуля" - внедрение в эл функциональности angular-модуля пользователя "имя_модуля", внутри создается корневой angular-контекст $rootScopeТЭГ ng-init="JS-инициализация" - дирректива инициализации в angular-контексте пременных со значением (но загромождает HTML-код)ТЭГ ng-controller="имя_контроллера [as псевдоним _контроллера]" - дирректива запуска angular-контроллера (как класс, где вместо this - $scope) для создания нового контекста(модели) и инициализации: переменные, методы, новый контекст в дочернем эл становится дочерним контекстом с наследованием от родителя [применение псевдонима контроллера]ТЭГ ng-repeat="имя_перем/(пер_свой,пер_знач) in имя_массива/имя_об [:фильтр]" - дирректива циклического повторения текущего эл с созданием новых контекстов и создание в нем имя_перем со значением эл массива, цикл постоянно обновляется, содержимое в тэге тоже повторяется, при описании массива с фильтром его можно присвоить переменной- Специальные переменные создаваемые для каждой итерации
- $index - N индекс эл.массива/счетчик свойств об (можно применить $index%2 для чередования класса)
- $first - true/false признак первого эл.масс
- $middle - true/false признак эл.масс не первого и не последнего
- $last - true/false признак последнего эл.масс
- $even - true/false признак четного эл.масс
- $odd - true/false признак не четного эл.масс
ТЭГ_1 ng-repeat-start="имя_перем/(пер_свой,пер_знач) in имя_массива/имя_об" / end - дирректива циклического повторения начиная с текущего эл с созданием новых контекстов и создание в нем имя_перем со значением эл массива, цикл постоянно обновляется, на итерации повторяется набор тэгов от -start до -endТЭГ_N ng-repeat-end - дирректива завершения циклического повторенияТЭГ ng-cloak - (желательный к применению) скрытие элемента на период до запуска Angular и установки всех динамических значений (с помощью CSS - display:none), после аттриут удаляетсяТЭГ ng-show="лог.выраж" - выполнение выраж контекста, при возврате true эл отображаетя, добавляет новый контекст, иначе эл скрывается (css - display:none)ТЭГ ng-hide="лог.выраж" - выполнение выраж контекста, при возврате true эл скрывается (css - display:none)ТЭГ ng-switch="выраж" - выполнение выраж контекста для последующего сравненияТЭГ ng-switch-when="значение1" - сравнение значения с вычесленным значением, при соответствии - вставляется в DOM (таких блоков несколько), иначе не вставляетсяТЭГ ng-switch-default - вставляется в DOM при не соответствии ни одного значения
ТЭГ ng-if="лог.выраж" - выполнение выраж контекста, при возврате true эл вставляется в DOMТЭГ ng-include="JS_выраж_строки_файл" / " 'html-файл' " / "лог.выраж&&'html-файл1' || 'html-файл2' " / "id_шаблона" - вычисление строки с именем html-файлоа для загрузки его в содержание контента, добавляет новый контекст- app.config(function($sceDelegateProvider){$sceDelegateProvider.resourceUrlWhitelist([путь1,...] ) } ) - добавление пути из другого сервера для разрешения доступа
ng-include src="выраж_строки_файл / id_шаблона" - заменяется весь тэг, работает так же как directive()ТЭГ ng-view - подставление в контент значения от маршрутизатора $routeProvider, такая дирректива должна быть однаng-view /ng-view - подставление в контент значения от маршрутизатора $routeProvider, такая дирректива должна быть однаТЭГ ng-class="{'имя_класса':лог.выраж,..}" - выполнение выраж контекста, при возврате true добавляется классТЭГ ng-class-even/odd="'имя_класса'" - (для списков) установка класса для четных/нечетных итеррацийform ng-submit="NG ф-я" - выполнение выраж/ф-я() контекста при клике на любой кнопке/Enter_на_поле (обычно выполняют запрос, помещают только одну кнопку/поле)ТЭГ ng-click="NG ф-я" - выполнение выраж/ф-я(..,[$event]) контекста при клике на кнопке мышиТЭГ ng-dbl-click="NG ф-я" - выраж/ф-я(..,[$event]) контекста при кликании мышкойТЭГ ng-mousedown="NG ф-я" - выраж/ф-я(..,[$event]) контекста при нажатии кнопки мышиТЭГ ng-mouseup="NG ф-я" - выраж/ф-я(..,[$event]) контекста при отпускании нажатой кнопки мышиТЭГ ng-mouseenter="NG ф-я" - выраж/ф-я(..,[$event]) контекста при прикосновении курсором мышки к элТЭГ ng-mouseleave="NG ф-я" - выраж/ф-я(..,[$event]) контекста при отсоединении мышки от элТЭГ ng-mousemove="NG ф-я" - выраж/ф-я(..,[$event]) контекста при движении курсора мышки внутри элТЭГ ng-mouseover="NG ф-я" - выраж/ф-я(..,[$event]) контекста при курсор мышки над элТЭГ ng-keydown="NG ф-я" - выраж/ф-я(..,[$event]) контекста при нажатии любой кнопкиТЭГ ng-keyup="NG ф-я" - выраж/ф-я(..,[$event]) контекста при отпускании нажатой кнопкиТЭГ ng-keypress="NG ф-я" - выраж/ф-я(..,[$event]) контекста при нажатии и отпускании любой кнопкиТЭГ ng-change="NG ф-я" - выраж/ф-я(..,[$event]) контекста при изменении модели, запускается вместе с ng-modelТЭГ ng-focus="NG ф-я" - выраж/ф-я(..,[$event]) контекста при получении фокусаТЭГ ng-blur="NG ф-я" - выраж/ф-я(..,[$event]) контекста при потере фокусаТЭГ ng-paste="NG ф-я" - выраж/ф-я(..,[$event]) контекста при вставкеТЭГ ng-cut="NG ф-я" - выраж/ф-я(..,[$event]) контекста при вырезанииТЭГ ng-copy="NG ф-я" - выраж/ф-я(..,[$event]) контекста при копированииa ng-href="путь с вставкой {{перем}}" ../a - гипер ссылка с динамическим путемa ng-href="выражение" ../a - гипер ссылка с вычисляемым путемТЭГ ng-attr-имя_аттр="{{выражение}}" /ТЭГ - внедрение интерполяции {{}} в значении аттрибутаТЭГ ng-bind="выражение[|фильтры]" /ТЭГ - (желательный к применению) эквивалент привязки {{}}, но занимает весь эл, более эфективныйТЭГ ng-bind-html-unsafe="выражение" /ТЭГ - эквивалент привязки {{}}, без экранирования уголков - создает тэгТЭГ ng-bind-html="выражение" /ТЭГ - эквивалент привязки {{}}, без экранирования уголков - создает тэг (необходимо подключить скрипт angular-sanitize.js и в модуль добавить службу "ngSanitize")- {{выражение[ | фильтр1:аргумент | фильтр2:аргумент ..]}} - привязка к точке HTML-документа выражения из angular-контекста, отображает значение (по аналогии шаблонизатора), уголки в строках переменных преобразуются в набор символов [с применением фильтров] (но количество текста текущего тэга минимизируют для экономии памяти)
фильтры - выполняются при любом изменении страницы- для строки
- uppercase - текст в верхнем регистре
- lowercase - текст в нижнем регистре
- limitTo:N-число/'N-число' - выделение N первых (при -N - последних) строки
- linky - адреса внутри текста преобразует в HTML-ссылки
a href='ссылка' ссылка/a (необходимо подключить скрипт angular-sanitize.js и в модуль добавить службу "ngSanitize")
- для чисел
- currency[:"символы"] - формат числа с 2-я цифрами после запятой со знаком локальной валюты [с указанием символов валюты(ум-$)]
- number:N-число - число с N цифрами после запятой (ум-2)
- для даты (для значений об_Date(JS)/число (мс)/"число"(мс)/"строка_даты")
- 'yyyy' - 4 цифры для вывода года (например, 1 => 0001, 2010 => 2010)
- 'yy' - 2 последние цифры года (00-99). (пример, 2001 => 01, 2010 => 10)
- 'y' - 1 число для вывода года (например, 1 => 1, 199 => 199)
- 'MMMM' - месяц в длинном формате (January-December)
- 'MMM' - месяц в трехбуквенном формате (Jan-Dec)
- 'MM' - месяц цифрами, с ведущим нулем (01-12)
- 'M' - месяц цифрами, без ведущего нуля (1-12)
- 'dd' - день в месяце, с ведущим нулем (01-31)
- 'd' - день в месяце, без ведущего нуля (1-31)
- 'EEEE' - День недели в длинном формате,(Sunday-Saturday)
- 'EEE' - День недели в коротком формате, (Sun-Sat)
- 'HH' - Час, с ведущим нулем (00-23)
- 'H' - Час без ведущего нуля (0-23)
- 'hh' - Час, с ведущим нулем в 12-ти часовом формате (01-12)
- 'h' - Час без ведущего нуля в 12-ти часовом формате (1-12)
- 'mm' - Минуты с ведущим нулем (00-59)
- 'm' - Минуты без ведущего нуля(0-59)
- 'ss' - Секунды с ведущим нулем (00-59)
- 's' - Секунды без ведущего нуля (0-59)
- 'a' - Указатель am/pm для 12-ти часового формата.
- 'Z' - 4 цифры (плюс знак), представляющие сдвиг временной зоны (часовой пояс) (-1200+1200)
- 'medium' - эквивалент 'MMM d, y h:mm:ss a' для локализации en_US (пример, Sep 3, 2010 12:05:08 pm)
- 'short' - эквивалент 'M/d/yy h:mm a' для локализации en_US (пример, 9/3/10 12:05 pm)
- 'fullDate' - эквивалент 'EEEE, MMMM d,y' для локализации en_US (пример, Friday, September 3, 2010)
- 'longDate' - эквивалент 'MMMM d, y' для локализации en_US (пример, September 3, 2010)
- 'mediumDate' - (ум)эквивалент 'MMM d, y' для локализации en_US (пример, Sep 3, 2010)
- 'shortDate' - эквивалент 'M/d/yy' для локализации en_US (пример, 9/3/10)
- 'mediumTime' - эквивалент 'h:mm:ss a' для локализации en_US (пример, 12:05:08 pm)
- 'shortTime' - эквивалент 'h:mm a' для локализации en_US (пример 12:05 pm)
date [:"формат"] - добавление строк в формате - другими кавычками - для массивов (для ng-repeat), перем=(имя_масс:фильтр) - создание переменной с отфильтроваными эл
- limitTo:N-число/'N-число' - выбор N первых (при -N - последних) эл масс
- json - ({{}}-по ум) текстовое отображение значения об, масс
filter :значение_фильтр - отображение эл масс если значение == значение1- значение фильтра:
- '[!]подстрока' - подстрока [не] входит в эл.масс/знач.св.об.эл.масс
- {имя_св1:'подстрока1'/значен1,..} - отбор об.эл.масс имеющих св-ва содержащие подстроки/целое значение(если не строка)
- {$:'подстрока1'..} - ($ - обозначает любое свойство) отбор об.эл.масс по подстроке для любого св-ва
- имя_ф-я - отбор при возврате true, где ф-я(перем) контекста плучает эл
orderBy :знач_сорт - сортировка значений массива объектов- знач_сорт
- [-]'имя_св-ва'[:лог_обрат_сорт] - сортирвка по св-ву элемета-об [true/false(ум) - по возрастанию/убыванию]
- ф-я(пер_эл1,пер_эл2) - возврат результат сравнения
- имя_масс - масс ф-ий сортировки (следующая ф-ия для приравненых эл)
- для строки
ng-form name="имя_формы" .../ng-form /ТЭГ ng-form="имя_формы" - эл формы который можно вкладывать друг в друга для проверки валидности (можно применять внутри ng-repeat), автоматически подключает контроллер ngFormController (name="имя" - в контекст добавляет об "имя" для проверки валидации)
двунаправленное связывание от эл к модели, от модели к отображению, превращает эл в диррективу ввода
ТЭГ ng-model="имя_перем" - дирректива двусторонней привязки (при изменении ввода - обновление переменной контекста и весь DOM) INPUT/TEXTAREA/SELECT, (обычно откл пров браузера - form novalidate), автоматически подключает контроллер ngModelController выполняющий проверки валидности и изменение классов (name="имя" - в об "имя_формы" добавляет об "имя" для проверки валидации)- добавляемая функциональность
- input type="text" или textarea - допускает любой текст
- input type="url" - вносит изменения в модель если ввод соответствует рег.выр. url
- input type="email" - вносит изменения в модель если ввод соответствует рег.выр. email
- input type="number" - вносит изменения в модель если ввод соответствует рег.выр. number
- input type="checkbox" - логическое значение в модели true/false
- input type="radio" - набор кнопок объединяются при одинаковой переменной модели разном аттрибуте value
- select - открывающийся список из эл option/сгенегированые ng-option
- input type="hidden" - применяют только для обычных запросов на сервер классы элементов ввода добавляемые автоматически
- ng-pristine / ng-dirty - не затронуто вводом / изменено
- ng-valid / ng-invalid - введенное значение допустимо/не допустимо
- ng-empty/ng-not-empty - значение отсутствует/присутствует
- ng-(valid/invalid)-проверка - отображение допустимости для каждой проверки
- ng-touched/ng-untouched - пользователь прикасался/не прикасался эл/формы (при наличии name="имя") - регистритуются в модели как об хранящие св-ва о проверках (контроллер ngModelController/ngFormController)
- $name - строка имя эл/формы
- $parsers - (для эл) массив ф-ий (вида ф-я(val){..return val}) выполняемых по очереди при изменении в поле ввода
- $formatters - (для эл) массив ф-ий (вида ф-я(val){..return val}) выполняемых по очереди при изменении модели
- $setValidity - (для эл) массив ф-ий (вида ф-я(val){..return val}) выполняемых по очереди при изменении модели
- $viewValue / $modelValue - (для эл) значение переданое в элемент/модель
- $touched / $untouched - (для эл) логич.значение
- $valid / $invalid - логич.значение
- $pristine / $dirty - логич.значение
- $viewChangeListeners - (для эл)
- $options - (для эл)
- $asyncValidators / $validators - (для эл)
- $submitted - (для формы)
- $error - об со св-ми всех не пройденных допустимостей
- "имя_эл" - (для формы) весь об проверок эл
диррективы ввода - работают с ng-model
- ng-list[="разделит"] - для текстового поля передает в модель массив из строки с разделителем (ум - ,)
- required - при пустом поле - не проходит валидность, отсутствует в модели
- ng-required="лог.значение" - вычисление возможности проверки на отсутствие д-х
- ng-minlength=N - при длине строки меньше N - не проходит валидность, отсутствует в модели
- ng-maxlength=N - при длине строки больше N - не проходит валидность, отсутствует в модели
- ng-pattern="рег.выраж" - при не соответствии рег выр - не проходит валидность, отсутствует в модели
- ng-true-value="строка1" ng-false-value="строка1" - (для checkbox) установка строчных значений модели вместо логических
- value=значен - (для radio,option) установка разных значений в модели
- ng-selected="выражение" - (для option)выполняемое выражение/ф-я при выборе эл меню
ng-option =".." - (для select) генерация пунктов меню из массива состоящего из об, выбирая одно из свойств- значения ng-option (для создания не выбранного эл меню - добавляют один option)
- "перем_об.свойство for перем_об in масс_об" - пунктом меню будет св-во каждого об из массива
- "ф-я(перем_об) for перем_об in масс_об" - пунктом меню будет вычисляться из каждого об из массива
- "перем_об.свойство as ф-я(перем_об) for перем_об in масс_об" - пунктом меню будет св-во каждого об отобранных из массива по фильтру ф-ии(перем_об) возвращающих true
- "перем_об.свойство/ф-я(перем_об) group by перем_об.свойство for перем_об in масс_об" - пунктом меню будет св-во/ф-я каждого об из отсортированного массива по св-ву об
- "перем_ключ/перем_знач for (перем_ключ,перем_знач) in об" - пунктом меню будет значение каждого св-ва об
- multiple - добавление множественного выбора
- ng-multiple="лог.выраж" - высичление разрешения множественного выбора
- ng-disabled="лог.выраж" - выполнение выраж контекста, при возврате true эл ввода отключается
инициализация контекста
списки
управление отображением
классы
события, ф-я может получить в аргументе $event - объект события DOM
вставка переменных в аттрибуты
интерполяция - отображение значения выражения(связывание от модели к отображению)
script type="text/javascript" src="...angular-animate.js" - подключение библиотеки для добавления дополнительных классов во время анимации- Дополнительные классы создаваемые по названиям событий:
- ngRepeat - enter, leave, move
- ngView - enter, leave
- ngInclude - enter, leave
- ngSwitch - enter, leave
- ngIf - enter, leave
- ngClass / class= - add, remove
- ngShow - add, remove
- ngHide - add, remove
ng-[событ], ng-[событ]-active
script type="text/javascript" src="...angular-touch.js" - подключение библиотеки для добавления дополнительных сервисов- Диррективы событий
ТЭГ ng-swipe-right='выражение' - выполнение выражения при сдвиге вправоТЭГ ng-swipe-left='выражение' - выполнение выражения при сдвиге влево
- Программирование событий сервиса $swipe с функцией bind()
- start - начало касания, передает начальные координаты {x:N,y:N}, далее его перехватывает событие mousedown или touchstart
- move - движение с касанием, передает дельту движения {x:N,y:N}, далее его перехватывает событие mousemove или touchmove
- end - остановка движения и отрыв пальца, передает дельту движения {x:N,y:N}, далее его перехватывает событие mouseup или touchend
- cancel - завершение, далее его перехватывает событие touchcancel
script type="text/javascript" src="...angular-gestures.js" - подключение библиотеки для добавления дополнительных сервисов мультикасанием, перетягивание, щипок, наклон экрана
script type="text/javascript" src="...angular-mocks.js" /script - подключение библиотеки только для тестирования
Angular 2+ / TypeScript - фреймверк для создания приложений (подобен AngularJS 1.x)
- npm install -g @angular/cli - сохранение модуля для генерации приложения
- ng new имя_прил - создание папки имя_прил с Typescript-приложением с паками и файлами, при создании предлагается выбрать css-препроцессор: sass, less, stilus, пользовательский
- cd имя_прил - переход в папку приложения
- ng help - просмотр помощи
ng serve [ключи] - запуск приложения доступного по адресу http://localhost:4200- ключи
- --open - автоматическое открытие приложения в баузере
- --host 0.0.0.0 - изменение адреса
- --port N - изменение порта
- ng g[enerate] component имя_комп [ключи] - создание компонента: создает папку имя_комп в /src/app с файлами *.ts, *.html, *.css, *.spec.ts, необходимо внедрить компонент
имя_комп указанного в *.ts св-ве декоратора selector- --inline-styles - ключ определяет таблицу стилей не в файле, а встроенную
- ng g[enerate] component имя_модуль/имя_комп - создание компонента добавленный в модуль: создает папку имя_комп в /src/app с файлами *.ts, *.html, *.css
- ng g[enerate] directive имя_дирек - создание диррективы: создает в /src/app с файл *.ts, *.spec.ts, добавляет функционал аттрибутом
- ng g[enerate] pipe имя_комп - создание фильтра: создает папку имя_комп в /src/app с файлами *.ts, *.html, *.css
ng g[enerate] service имя_серв - создание сервиса (единый объект передающий свои свойства и методы другим классам): создает файл /src/app с файлами *.ts- ключи
- --module=app - автоматическая установка зависимости от сервиса в основной модуль
- ng g[enerate] class имя_кл - создание класса: создает папку имя_кл в /src/app с файлами *.ts
- ng g[enerate] guard имя_guard - создание защитника url: создает имя_guard файлы *.ts, *.spec.ts, предусмотрен выбор функцый canActive, canLoad,
- ng g[enerate] interceptor имя_intc - создание перехватчика сообщений типа Observable: создает имя_intc файлов *.ts, *.spec.ts
- ng g[enerate] interface имя_intrf - создание интерфейса: создает папку имя_intrf в /src/app с файлами *.ts
- ng g[enerate] enum имя_комп - создание перечисления: создает файл имя_комп.ts
- ng g[enerate] module имя_модуль - создание модуля: создает папку имя_комп в /src/app с файлами *.ts, *.html, *.css
- ключи
- --module=app - автоматическая установка в основном модуле зависимости в св-ве imports
- --flat - отказ от создания собственной папки
- --routing - добавление Routing-модуля с дополнительными путями маршрутизации
- style.css - основная таблица стилей, можно подключить bootstrap: @import url('https://unpkg.com/bootstrap@3.3.7/dist/css/bootstrap.min.css');
- Организация приложения вручную
- Установка модулей фреймверка
- модули фреймверка Angular 2
npm install @angular/core --save - основной модуль Angular содержит общие диррективы и компоненты- Содержит объекты
- Component - декоратор компонента
- Input - декоратор входного свойства класса, значение которого будет получено через входящий атрибут родительского шаблона
- Pipe - декоратор класса для создания фильтра
- PipeTransform - интерфейс создания фильтра
- Directive - декоратор класса для создания собственных дирректив
- OnInit -
- Host - декоратор аргумента метода для поиска зависимости в родительском компоненте
- Optional - декоратор аргумента метода при неудачном поиске зависимости не создает исключение, а возвращает null
- provide - функция для переименования зависимости: provide(псевдоним,{useClass:зависимость}/{useFactory:ф-я возвращ зависимость})
- Injectable - декоратор класса становится способный получать зависимости
- HostBinding - декоратор свойства диррективы, если св-во true - добавляет указанный класс
- HostListener - декоратор метода директивы создает из метода слушателя события
- Output - декоратор свойства класса, значение которого будет передаваться родителю с помощью события EventEmitter как выходное св-во
- EventEmitter - класс, создает объекты типа EventEmitter<тип д-х> умеющий создавать события, имеет методы emit(д-е)-отправка события в выходное св-во родительского шаблона,subscribe()
- ViewEncapsulation - об со значениями (.Emulated, .Native, .None) способов внедрения CSS-стилей компонента, для установки в encapsulation
- enableProdMode - функция включает промышленный режим (нет сообщениц на консоль)
- ComponentRef -
- ElementRef - сервис как ссылка на текущий компонент, тек.элемент для диррективы (передается в конструктор el:ElementRef, el.nativeElement - об_эл)
- ViewChild - декоратор для св-ва имеющего тип компонента
- ViewContainerRef - тип
npm install @angular/common --save - содержит все диррективы, службы и фильтры и их классы- APP_BASE_HREF - базовый путь только приложения но не HTML, аналогично тэгу
base href="путь" : bootstrap(имя_комп,[provide(APP_BASE_HREF,{useValue:'путь'})]) - LocationStrategy - возможность изменить способ выбора маршрутов: bootstrap(имя_комп,[provide(LocationStrategy,{useClass:значение})])
- Location - сервис управления адресами и историей (.back()- установка предыдущего адреса из истории)
- PathLocationStrategy - (ум) значение выбора путей маршрутизатора HTML5
- HashLocationStrategy - значение выбора путей маршрутизатора с хэшэм: #
- Control - класс для создания контроля за эл ввода
- Validators - об содержит набор ф-ий валидации для создания контроля
- NgControlGroup - класс для создания объединяющих контролей за эл ввода
- ControlGroup -
- FormBuilder - для внедрения в компонент через providers, добавляется в constructor
- HttpClientModule - модуль включается как зависимость для импорта сервиса HttpClient(@angular/common/http)
- HttpClient - сервис http-запросов (@angular/common/http)
- HttpHeaders - класс для создания об заголовка в запросах (@angular/common/http)
- HttpParams - класс для создания об добавляющего данные в строке адреса запроса (@angular/common/http)
- APP_BASE_HREF - базовый путь только приложения но не HTML, аналогично тэгу
npm install @angular/forms --save - содержит код для- FormsModule - модуль для двойных связываний поля ввода ngModel, импортируют в главный модуль
- ReactiveFormsModule - модуль для двойных связываний поля ввода ngModel, импортируют в главный модуль
- FormControl - класс для создания объекта валидации (new FormControl() )
- FormGroup - класс для создания единого объекта валидации объединяя все поля (перем=new FormGroup({имя1:[нач_знач,new FormControl()],.. }) )
- FormArray - класс для создания единого массима валидации объединяя все FormGroup
- Validators - функция валидации,
- FormBuilder - создатель FormGroup, после внедрения в конструкторе FormBuilder.group({..}), FormBuilder.array([..])
npm install @angular/compiler --save - содержит код для компиляции HTML-шаблоновnpm install @angular/platform-browser --save - содержит код для привязки к DOM- enableDebugTools - функция добавляет инструменты отладки в браузере
- Title - позволяет изменять заголовок страницы вэб-браузера, внедряют в providers
- AnimationBuilder - класс для программного внедрения анимации
- import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - модуль для анимации
npm install @angular/platform-browser-dynamic --save - содержит код для загрузки приложений- Содержит
- bootstrap - функция создания об корневого компонента
npm install @angular/animations --save - содержит функции для анимации- Содержит
- trigger -
- state -
- style -
- animate -
- transition -
npm install @angular/http --save - содержит код для связи с сервером, загружается с библиотекой RxJS- Содержит
- Http - об для создания потока http-ответов, применяют как зависимость в компоненте
- Request - об для создания http-запроса
- RequestOptions - об для создания настроек перед созданием Request-запроса
- RequestMethod - об со значениями методов http-запроса(.Get, .Post, ...)
- Response - класс http-ответа
- HTTP_PROVIDERS - псевдоним массива всех зависимостей для внедрения
npm install angular-in-memory-web-api --save - содержит код для имитации сервера с БД (для тестирования) получая запросы и возвращая ответы- Содержит
- Http - об
npm install @angular/router --save - содержит код для маршрутизации- RouterModule - основнрй модуль, распознает ссылки routerLink
- Routes - тип массива с объектами описывающими маршрут
- ActivatedRoute - сервис содержит информацию о выбранном маршруте (параметры)
- Router - об для программного перехода по маршрутам
npm install @angular/router-deprecated --save - содержит код для маршрутизации старой версии- ROUTER_PROVIDERS - псевдоним массива всех зависимостей для внедрения
- ROUTER_DRIVERS - псевдоним массива всех зависимостей для внедрения (RouterOutlet, RouterLink)
- RouteConfig - декоратор главного компонента для настройки маршрутизатора
- CanActivate,CanDeactivate - декораторы для обработки событий маршрутизатора
- OnActivate,OnDeactivate - интерфейс для обработки событий маршрутизатора
- Сторонние модули необходимые для работы приложения
- npm install es6-shim --save - код для реализации EsmaScript6
- npm install zone.js --save - контроль изменеий в модулях
- npm install reflect-metadata --save - поддержка декораторов
npm install rxjs --save - библиотека ReactiveX для поддержки асинхронных технологий- Содержит
- import 'rxjs/Rx'; - загрузка всей библиотеки
- import {Observable} from 'rxjs/Observable'; - загрузка одного метода и добавляется в Observable
- import 'rxjs/add/operator/map'; - загрузка одного метода и добавляется в Observable
- import { catchError, map, tap } from 'rxjs/operators'; - загрузка методов
- import { of } from 'rxjs/observable/of'; - функция преобразования значения в тип Observable
- import { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators'; - загрузка методов
- import { Subject } from 'rxjs/Subject'; - загрузка методов
- import { Subscription } from 'rxjs/Subscription'; - загрузка методов
- import 'rxjs/add/operator/toPromise'; - загрузка класса Primise, метода .toPromise(), превращает ответ запроса в Primise
- npm install bootstrap --save - таблица стилей
- npm install -g typescript - компилятор
tsc --init --experimentalDecorators --emitDecoratorMetedata --target ES5 --module system --moduleResolution node - будет создан файл tsconfig.json{ "compilerOptions": { "experimentalDecorators": true, "emitDecoratorMetadata": true, "target": "es5", "module": "system", "moduleResolution": "node", "noImplicitAny": false, "outDir": "built", "rootDir": "." "sourceMap": false }, "exclude": [ // перечень пропускаемых папок/файлов при компиляции "node_modules", "typing/main.d.ts", "typing/main" ] } - npm install -g typings - типизирование typescript
- typings install es6-shim --ambient --save - создает файл typings.json, typings/main.d.ts, typings/browser.d.ts
- Система автоматической компоновки модулей, необходим только один
npm install -g systemjs - позволяет загружать список модулей для приложения
- требует создания файла настройки system.config.js в корневой папке, содержит скрипт
(function(){ var pathMapping = { '@angular': 'node_modules/@angular', 'rxjs': 'node_modules/rxjs' }; var packages = [ '@angular/common', '@angular/compiler', '@angular/core', '@angular/http', '@angular/platform-browser', '@angular/platform-browser-dynamic', '@angular/router', '@angular/router-deprecated', '@angular/testing', 'rxjs', 'built' ]; var packagesConfig = {}; packages.forEach(function(packageName){ packagesConfig[packageName] = { main: 'index.js', defaultExtension: 'js' }; }); System.config({ map: pathMapping, packages: packagesConfig }); } )();
npm install -g webpack - 2-й вариант, позволяет загружать список модулей для приложения
package.json - файл для автоматической загрузки всех нужных модулей с помощью npm (запуск - npm install){ "name": "chapter_01", "version": "2.0.0", "description": "Chapter 1 - Creating our first component in Angular 2", "main": "main.js", "keywords": [], "author": "Pablo Deeleman", "repository": { "type": "git", "url": "git://github.com/deeleman/learning-angular2.git" }, "scripts": { "start": "tsc && concurrently \"tsc -w\" \"lite-server\" ", "lite": "lite-server", "tsc": "tsc", "tsc:w": "tsc -w" }, "dependencies": { "@angular/common": "~2.4.0", "@angular/compiler": "~2.4.0", "@angular/core": "~2.4.0", "@angular/forms": "~2.4.0", "@angular/http": "~2.4.0", "@angular/platform-browser": "~2.4.0", "@angular/platform-browser-dynamic": "~2.4.0", "@angular/router": "~3.4.0", "systemjs": "0.19.40", "core-js": "^2.4.1", "rxjs": "5.0.1", "zone.js": "^0.7.4", "bootstrap": "^3.3.7" }, "devDependencies": { "@types/core-js": "^0.9.34", "@types/node": "^6.0.45", "concurrently": "^3.1.0", "lite-server": "^2.2.2", "typescript": "^2.0.10" } }
- модули фреймверка Angular 2
- Установка модулей фреймверка
- Компиляция TypeScript (имя.ts) в JavaScript ES5 (имя.js)
tsc [--watch] - запускается в папке с файлом имя.ts, создает имя.js в папке указаной в свойстве outDir файла tsconfig.json (ум - built), [--watch постоянно следить за файлами и перекомпилировать]
- Содержание главного HTML-контейнера
- загрузка скриптов тэгом script
- node_modules/es6-shim/es6-shim.min.js
- node_modules/zone.js/dist/zone.js
- node_modules/reflect-metadata/Reflect.js
- node_modules/systemjs/dist/system.js
- node_modules/rxjs/bundles/Rx.js
- system.config.js
- Скрипт
- SystemJS.import('имя_ф-ла.js') - асинхронная загрузка скрипта приложения с помощью модуля System.js
- SystemJS.import('имя_ф-ла.js').then(function(прем_об){..}) - асинхронная загрузка скрипта и после успеха передача в прем_об экспортируемый об
- SystemJS.config(об) - настройка загрузчика
- baseUrl:'путь' - установка пути по умолчанию
- map:{имя1:'путь'/'файл',...} - установка псевдонимов путей или полного url, применяемых при загрузках
- meta:...
- bundles:{имя1:['файл1',...],...} - установка псевдонимов для вариантов загрузки (загружается только один), сохраненных в массивах
- depCache:{файл_1:['файл1',...],...} - установка массива связанных файлов для загрузки (при загрузке одного ф-ла подгружаются еще массив файлов)
- packages:{'путь'/'файл':об_настройки,...} - установка для каждого пути/файла собственной настройки
- packageConfigPath:['путь'/'файл',...] - установка пути/имя_файла для npm-загрузки типа package.json (можно применять * для подстановки любого имени папки/файла)
- plaginFirst:true/false(ум) - позвляет дописывать к имени файла (через !) файл плагина загрузки вначале/вконце
- paths:{имя1:'путь1',...} - установка псевдонимов путей, применяемых при загрузках
- transpiler:тип
- warnings:true/false(ум) - направление сообщения на консоль
- загрузка скриптов тэгом script
- Локальный сервер
- npm install lite-server --save - установка локального сервера
- lite-server - запуск локального сервера
@angular/cli - ускоренная разработка Typescript-приложения
- @NgModule(об) - декоратор основного модуля
- об
- declarations:массив_классов - массив всех классов компонентов (Component), дирректив (Directive), фильтров (Pipe)
- imports:массив_классов - массив классов модулей для загрузки (например: BrowserModule, AppRoutingModule, FormsModule)
- exports:массив_классов - массив классов компонентов для внешнего применения (можно использовать в других модулях)
- providers:[ИмяService, {provide:'псевдоним', useClass:ИмяService}] - массив классов сервисов, которые будут применять в компонентах (1- внедрение сервиса, 2- внедрение второго экземпляра сервиса с псевдонимом)
- bootstrap:массив_классов - массив из одного основного класса компонента для запуска приложения (для главного модуля - AppComponent)
- class ИмяModule {} - класс создающий основной модуль, может быть пустым
- Типы модулей по функциональному назначению
- Angular модули - Библиотеки уже разработанные для Angular-приложений
- Feature - вмещает логику с данными
- Core - хранят глобальные зависимости, может подключаться в каждый модуль
- Shared - содержат компоненты и модели, зависимости
- Routing - управляет страницами
- @Component(об) - декорирование компонента привязывает соответствие DOM-эл и шаблон (import {Component} from @angular/core)
- об
- selector:'селектор' - селектор для привязки
- directives:масс_компонент - добавление фунциональности компонента к шаблону, кроме текущего компонента
- template:'шаблон' - шаблон angular внедряемый в HTML
- templateUrl:'имя_ф.html' - шаблон angular внедряемый в HTML из файла (обычно с именем компонента)
- encapsulation:ViewEncapsulation.Emulated(ум)/.Native/.None - способ внедрения CSS-стилей: ограничено компонентом/встраивание в компонент/не ограничено
- inputs:масс_свойств - массив имен входных свойств родителя, чтобы у родителя не применять @input
- outputs:масс_свойств - массив имен выходных свойств текущего компонента , чтобы у родителя не применять @output
- styles:массив_строк - массив строк CSS-правил, которые внедряются в заголовок, или в шаблон добавить элемент
style с правилами - styleUrls:массив_строк - массив строк файлов CSS-правил, которые внедряются в заголовок, файлы *.scss, *.less, *.styl будут преобразованны препроцессором в *.css
- pipes:масс_класс_фильтр - массив классов с фильтрами, подлючаемыми к компоненту
- providers:масс_зависм - добавление в компонент и его дочерние об зависимостей
- viewProviders:масс_зависм - добавление только в компонент об зависимостей
- animations:масс_об_анимации - программирование анимации
- class ИмяКомпонComponent [extends РодитКласс]{..} - класс применяемый в компоненте
- типы переменных
- типы
- boolean - логический
- number - числовой
- string - строковый
- тип[] / Array<тип> - массив их элементов указанного типа
- [тип1,тип2,..] - кортеж (tuple), похож на массив из элементов разных типов в усановленном порядке
- enum имя_типа {имя1,имя2,..} - перечисление, похож на об со значениями 0,1,2,..: =имя_типа.имя (если указать имя=N, имя+1==N+1)
- any - любой тип как в javascript
- null, undefined - не обявленный
- void - без типа
- тип1|тип2|.. - объединение (union), позволяет присваивать значения указаных типов
- type имя_типа=тип - псевдоним типа
- <тип>имя_перем / имя_перем as тип - приведение к указанному типу, когда переменная any/union
- ([имя:тип,..])=>тип - тип функции с указанными типами аргументов и значения
- interface имя_типа [extends имя_типа1]{[readonly] имя1:тип1,..} - тип определяющий имена и типы свойств и методов, применяют как тип об или реализации класса через implements [readonly - значение при создании изменить нельзя, аналог у переменных const]
[public/private/protected] имя_свойства[ = значение]; - создание свойства- public - создание свойства/метода доступного в шаблоне и при в других компонентах (если текущий передан)
- protected - создание свойства/метода доступного только в методах или вычислениях свойств текущего класса
- private - создание свойства/метода доступного только в методах или вычислениях свойств текущего класса
- @Input() / @Input(['псевдоним']) имя_свойства:тип - декоратор "входного" свойства для получеия значения из родительского класса через шаблон [в родительском шаблоне обрашение к псевдониму]: в родителе -
текущ.Комп [свойство/псевдоним] = "значение" - @Output() / @Output(['псевдоним']) имя_свойства_об_событ:EventEmitter<тип_данных> - декоратор "выходного" свойства , генерирующего событие [в родительском шаблоне обрашение к псевдониму]: в родителе -
текущ.Комп (свойство/псевдоним) = "метод($event)" - @ViewChild() / @ViewChild('псевдоним') имя_перем:ElementRef - получение об html-элемента (имя_перем.nativeElement) отображенного в шаблоне текущеего компонента для полусения доступа к его свойсвам: в текущем комп. -
элем #псевдоним - @ViewChild(Класс_комп) имя:Класс_комп - получение в текущем классе об подчиненного компонента для полусения его puclic-свойсв/методов: в текущем комп. -
подчин.Комп - @ViewChildren(Класс_комп) имя_масс:QueryList<Класс_комп> - получение массива об подчиненных компонентов: в текущем комп. -
подчин.Комп подчин.Комп - constructor([public/private/protected][имя:тип,..]){..} - конструктор выполняемый при создании об и получения зависимых сервисов, где используются this.имя_перем (в это время собственных методов нет), их может быть несколько для разных типов аргументов, super(вход_арг) - выполнение ввода аргумента в конструкторе родительского (наследованого) класса, входяшие аргументы: зависимости
- constructor(public имя?:тип,..){..} - аргумента может не быть
- constructor([rivate перем1:ИмяService, @Inject('псевдоним') rivate перем2:ИмяService, ,..){..} - внедрение 2-х сервисов одного типа (т.к сервис - класс типа Singleton)
- имя_метода([имя:тип,..]): тип/void {..} - метод об, где используются this.имя_перем, доступна внутри об как this.имя_функц()
- имя_метода([имя?:тип,..]) - возможность отсутствия аргумента
- имя_метода([имя:тип=знач,..]) - при отсутствии аргумента будет использовано значение по умолчанию
- имя_метода([..,...имя:тип[]]) - последний аргумент является массив получающий значения из одиночных аргументов
- get имя_метода() - метод выдающий значение (для закрытой перем) как переменная (=имя_метода)
- set имя_метода(имя:тип) - метод получающий значение (для закрытой перем) как переменная (имя_функц=)
- static имя_метода(..) - статический метод класса, запуск Имя_класса.имя_метода()
- Методы жизненного цикла
- ngOnInit(){} - ф-ия выполняется сразу после создания компонента со всеми св-ми и методами (интерфейс OnInit - class имя implements OnInit{...} )
- ngOnChanges(перем: SimpleChanges){} - ф-ия выполняется при изменении входных св-в компонента (в первый раз - до ngOnInit), получает об: {имя_св:{previousValue:знач1,currentValue:знач2},..}, (интерфейс OnChanges)
- ngDoCheck(){} - ф-ия выполняется при каких-то изменениях, которые класс не может обнаружить (после ngOnInit, ngOnChanges), (интерфейс DoCheck)
- ngAfterContentInit(){} - ф-ия выполняется после подключения шаблона (один раз после первого ngDoCheck), (интерфейс AfterContentInit)
- ngAfterContentChecked(){} - ф-ия выполняется после подключения шаблона и проверки изменений (каждый раз после ngDoCheck), (интерфейс AfterContentChecked)
- ngAfterViewInit(){} - ф-ия выполняется после вычисления шаблона и его потомков (один раз после первого ngAfterContentChecked), (интерфейс AfterViewInit)
- ngAfterViewChecked(){} - ф-ия выполняется после проверки шаблона и его потомков (каждый раз после ngAfterContentChecked), (интерфейс AfterViewChecked)
- ngOnDestroy(){} - ф-ия выполняется перед разрушением об, (интерфейс OnDestroy)
- типы переменных
@Directive(об) - декорирование класса создающего собственные диррективы- об
- selector:'селектор' - селектор подключающий диррективу ('имя_тэга', '.имя_класса', '[аттриб=знач]', not(селектор), перчисление через запятую селекторов для подключения только одного)
- inputs:масс_свойств - массив имен входных свойств
- outputs:масс_свойств - массив имен выходных свойств
- host:об - объект со связями с эл может добавлять: события с методами, свойства/аттрибуты со значениями
- providers: масс_сервисов -
- class ИмяDirective {..} - класс создающий диррективу (похож на компонент но без template)
- @HostBinding('class.имя_класса') имя_свойства:boolean - декоратор свойства при имя_свойства равном true, добавляет подчиненному элементу класс имя_класса и можно програмно управлять этим свойством: в текущем Комп заменяет -
элемент [class.имя_класса] = "true" - @HostBinding('style.имя_стиля') имя_свойства = "значен" - декоратор свойства добавляет подчиненному элементу стиль со значением и можно програмно управлять этим свойством: в текущем Комп заменяет -
элемент [style.имя_стиля] = "значен" - @HostListener('имя_событ',['$event']) имя_метода([e]){..} - декоратор метода создает слушателя события с текущим обработчиком у подчиненного элкмента/компонента: в текущем Комп заменяет -
элемент (имя_событ) = "имя_метода($event)" - @Input()/@Input('псевдоним')/@Input('имя_директивы') имя_свойства:тип - декоратор входного свойства (для 'имя_директивы' - сама директива является свойством и ей передается знаение): в шаблоне -
Комп/элемент [свойство/псевдоним] = "значение" - @Output()/@Output('псевдоним')/@Output('имя_директивы') имя_свойства:EventEmitter<тип_данных> - декоратор выходного свойства: в шаблоне -
Комп/элемент (свойство/псевдоним) = "метод($event)" - constructor(private имя1:ElementRef, private имя2:Renderer2){..} - конструктор получает 2 аргумента: 1-ссылка на текущий компонент/элемент, 2-объект методов управления элементом
- Структурные диррективы преобразуют структуру компонента/элемента: *имя_дир
- при подключении - пере-подключается к тэгу ng-template в который оборачивает текущий компонент/элемент, который скрывает все содержимое:
ng-template имя_дерек текущ.Комп/элем / текущ.Комп/элем /ng-template - constructor(private имя1:TemplateRef<тип > , private имя2:ViewContainerRef){..} - конструктор получает 2 аргумента: 1-ссылка на template-элемент, 2-объект ссылка на место разметки кторый может отрисовать или удалить
- при подключении - пере-подключается к тэгу ng-template в который оборачивает текущий компонент/элемент, который скрывает все содержимое:
- Методы жизненного цикла
- ngOnInit(){} - ф-ия выполняется сразу после создания компонента со всеми св-ми и методами (интерфейс OnInit)
- ngOnChanges(перем: SimpleChanges){} - ф-ия выполняется при изменении входных св-в компонента (в первый раз - до ngOnInit), получает об: {имя_св:{previousValue:знач1,currentValue:знач2},..}, (интерфейс OnChanges)
- ngDoCheck(){} - ф-ия выполняется при каких-то изменениях, которые класс не может обнаружить (после ngOnInit, ngOnChanges), (интерфейс DoCheck)
- ngOnDestroy(){} - ф-ия выполняется перед разрушением об, (интерфейс OnDestroy)
- Встроенные директивы
- *ngIf
- [*]ngIf="лог_знач" - устанавливает в DOM клон элемента при true, отсутствует при false [* - в DOM весь элемент заключает в тэг
template ] - *ngIf="лог_знач; else имя_элем_template" - устанавливает в DOM клон элемента при true, при false отображается дополнительный элемент
template #имя_элем_template
- [*]ngIf="лог_знач" - устанавливает в DOM клон элемента при true, отсутствует при false [* - в DOM весь элемент заключает в тэг
- *ngFor
- [*]ngFor="let перем1 of масс; let перем2=index; let перем3=last" - циклическое повторение массива, используя нумерацию index, лог.значение последней итерации last
- [*]ngFor="let перем1 of (масс | фильтр)" - циклическое повторение массива, предварительно применив фильтр к массиву
- [*]ngFor="let перем1 of масс; trackBy: ф-я" - циклическое повторение массива и одновременно выполнение ф-ии(пер_index, пер_знач)
- ngSwitch / *ngSwitchCase / *ngSwitchDefault
- [ngSwitch]="выражение" - тэг-контейнер в котором вычисляется выражение
тэг/комп *ngSwitchCase ="значение1" - тэг-потомок в котором сравнивается значение, при совпадении контент из template вставляется в тэг ngSwitchтэг/комп *ngSwitchDefault - тэг-потомок для случая не совпадения ни одного значения, при котором контент из template вставляется в тэг ngSwitch
- [ngSwitch]="выражение" - тэг-контейнер в котором вычисляется выражение
- ngStyle
- [ngStyle]="{имя_стиль:выражение, ..}" - передача об с CSS-стилями
- [style.имя_стиль]="выражение" - установка стиля
- [style.имя_стиль.рамерность]="число" - установка числового стиля
- ngClass
- [ngClass]="{{строка_классы/массив_классы/об}}" - создание классов из строки с классами через побел/массив имен классов/об {имя_кл:лог.выр,..} (true - добавить)
- [class.имя_класс]="лог_знач" - добавление класса или нет
- ngNonBindable
- [ngNonBindable] - отключает интерполяцию внутри элемента: {{текст}} отображает обе фигурные скобки
- *ngTemplateOutlet
- *ngTemplateOutlet="имя_элем_template" - перенос отображения всего содержимого тэга
ng-template #имя_элем_template
- *ngTemplateOutlet="имя_элем_template" - перенос отображения всего содержимого тэга
- *ngIf
- @HostBinding('class.имя_класса') имя_свойства:boolean - декоратор свойства при имя_свойства равном true, добавляет подчиненному элементу класс имя_класса и можно програмно управлять этим свойством: в текущем Комп заменяет -
- @Pipe(об) - декорирование класса создающего фильтр
- об
- name:'псевдоним' - имя фильтра применяемый в выражении интерполяции
- pure:true(ум)/false - для простого класса унаследованого PipeTransform - true, false - для сложного класса унаследованого от другого класса
- class ИмяКомпонPipe implements PipeTransform {..} - класс создающий фильтр
- transform(вх_знач/вх_масс, ...args:any[]){.. return вых_знач} - обязательный метод выполняющий функцию над значением/массивом
- Програмное использование фильтра внутри класса компонента
- import {КлассPipe} - импорт класса фильтра
- @Component({
providers:[КлассPipe]
}) - подключение фильтра как зависимость - constructor(private имяPipe:КлассPipe) {}
- this.имяPipe.transform(вх_знач, арг1, арг2, ..) - применение функции фильтра возвращает новое значение
- Встроенные фильтры - функция преоблазование отображения: {{выражение | фильтр1:арг1:арг2 | фильтр2:арг1:арг2 | ..}}
-
Дата
- date[:'формат'] - отображение даты в формате, принимая об даты или число милисек, форматы: longDate,shortDate,fullDate, применение 'MM.dd.yy hh HH:mm' Строка
- uppercase - текст в верхнем регистре
- lowercase - текст в нижнем регистре
- replace:рег_выраж:строка - замена в тексте подвыражений Число
- number[:'мин_цел.мин_дроб-макс_дроб'] - отображение числа в формате интернационализации, по ум :1.0-3
- percent[:'мин_цел.мин_дроб-макс_дроб'] - отображение числа поцентов в формате
- currency[:'код_валют'][:лог_код_валют][:'мин_цел.мин_дроб-макс_дроб'] - отображение суммы валют, указывая кода валют (USD,EUR,..), отображать значок (true) или код валют (false), формат числа массив и объект
- slice:индекс_нач[:индекс_кон] - выделение части элеменков, подходит для массивов и строк
- json - отобрадение об в виде строки формата json
- il8nPlural:об - сравнение числа со значениями в об и замена строками {'=знач1':'стр1',..,'other':'#стрN'(#-подстановка самого числа)}
- il8nSelect:об - сравнение строки со значениями в об и замена строками {'знач1':'стр1',..,'other':'стрN'}
- orderBy:'имя_св1,имя_св2,..' - сортировка массива из об по свойствам: имя_св1, равные по имя_св2
- filter:'подстрока'/{имя_св:'подстрока'} - выборка массива строк по подстроке / массива об по подстроке свойства Специальные фильтры
- async - отображение значения только после завершения обработки, а не по мере получения
- @Injectable(об) - обязательный декоратор сервиса
- об (для версии 9)
- provideIn: 'root'/ provideIn: AppModule - внедрение глобально (аналогично в AppModule - providers:[ ИмяService ] )
- provideIn:OtherModule - внедрение в указанный модуль
- class ИмяService {..} - класс типа Singleton создающий сервис
- constructor(){}
- constructor(public перем:тип){..} - конструктор получает значения
- constructor(@Optional() public перем:ДругойService){..} - конструктор получает значениe другого сервиса, который может еще не существовать
- метод() {} - методы выполнения логики
- constructor(){}
- Внедрение сервисов в непосредственно только в компонент
- В компоненте
@Component({providers:[ИмяService] }) constructor(private перем:ИмяService) - создание объекта сервиса непосредственно в компонент, но тогда он доступен только тут
- В компоненте
- Внедрение сервисов в компонент через модуль
- В модуле
@NgModule({..,prviders:[ИмяService]}) - подключение зависимости в модуле (создание единственного экземпляра класса сервиса)
В компонентеconstructor(private перем:ИмяService) - подключение объекта сервиса - В модуле
@NgModule({..,prviders:[ИмяService, {provide:'плевдоним', useClass:ИмяService} ] } ) - подключение двух одинаковых зависимостей в модуле (создание единственного экземпляра класса сервиса)
В компонентеconstructor(private перем1:ИмяService, @Inject('плевдоним') private перем2:ИмяService ) - подключение двух объектов одного сервиса - В модуле
@NgModule({..,prviders:[ИмяService, {provide:'плевдоним', useExisting:ИмяService} ] } ) - подключение одну зависимость в модуле под разными именами
В компонентеconstructor(private перем1:ИмяService, @Inject('плевдоним') private перем2:ИмяService ) - подключение одного объекта сервиса с разными именами - В модуле
ИмяFacroty() { return new ИмяService()} - создание фабрики - функция, которая возвращает созданный абъект@NgModule({..,prviders:[{provide:ИмяService, useFactory:ИмяFacroty} ] } ) - подключение фабрики создающей экземпляр
В компоненте constructor(private перем1:ИмяService, @Inject('плевдоним') private перем2:ИмяService ) - подключение одного объекта сервиса с разными именами - В модуле
ИмяFacroty(аргумент:тип) { return new ИмяService()} - создание фабрики - функция, которая возвращает созданный абъект@NgModule({.., prviders: [{provide:'имя_перем', useValue:значение}, {provide:ИмяService, useFactory:ИмяFacroty, deps:['имя_перем']} ] } ) - подключение фабрики создающей экземпляр и глобальной переменной переданной в фабрику как аргумент - В модуле имя_перем = new InjectionToken<тип>('описание') - создание переменной для значения
ИмяFacroty(аргумент:тип) { return new ИмяService} - создание фабрики@NgModule({.., prviders: [{provide:имя_перем, useValue:значение}, {provide:ИмяService, useFactory:ИмяFacroty, deps:['имя_перем']} ] } ) - подключение фабрики создающей экземпляр и глобальной переменной переданной в фабрику как аргумент
- В модуле
- Маршрутизация1
- @RouteConfig(масс_об) - декоратор для главного компонента, после @Component
- об одного маршрута типа RouteDefinition
- path:'путь' - простой путь маршрута
- path:'путь...' - путь маршрута с многоточием вконце - значит в компоненте будет дочерний маршрутизатор со своим RouterConfig, продолжающий определение машрутов, в шаблоне имеет свой тэг router-outlet
- path:'путь/:имя_арам1/:имя_арам2' - путь маршрута с параметрами
- name:'Имя_маршрута' - имя маршрута совпадает с именем компонента
- component:компонент - подключаемого компонента
- useAsDefault:true - указание маршрута по умолчанию
- redirectTo:['имя_маршр'] - получив указанный путь происходит переход на новый маршрут по его имени
- loader:ф-я_promise - ф-я возвращает об promise загрузки компонента в асинхроном режиме
- Програмный запуск маршрута
- constructor(..,private router:Router) - внедрение зависимостей в компонент
- this.router.navigate(['имя_маршрута'],об_д-х) - вызов маршрута в виде массива имен маршрутов, при неоходимости передаются д-е
- this.router.navigate(['имя_маршрута',об_параметров],об_д-х) - вызов маршрута в виде массива имен маршрутов с параметрами, при неоходимости передаются д-е
- this.router.navigateByUrl('путь') - изменение пути с целью изменить маршрут
- Вычисление параметров
- constructor(..,routeParams:RouteParams) - внедрение в компонент об для работы с параметрами
- routeParams.get('имя_парам') - получение значения параметра
- Шаблон
a [RouterLink]="['Имя_маршрута']" имя кнопки/a - создание кнопки для перехода к маршрутуa [RouterLink]="['Имя_маршрута',об_параметров]" имя кнопки/a - создание кнопки для перехода к маршруту с паметрамиrouter-outlet /router-outlet - стандартная дирректива для загрузки выбранного по маршруту компонента с его шаблоном
- События маршрумизатора как декоратора или как метода компонента
- @CanActivate(ф-я(нов_маршр,стар_маршр):boolean{..return лог_знач / Promise<лог_знач>}) - событие перед переходом по новому маршруту, но переходит только при возврате true
- class имя implements OnActive,CanDeactive,OnDeactive{
routerOnActive(нов_маршр,стар_маршр):void{..} - обработчик события после выбора маршрута
routerCanDeactive(нов_маршр,стар_маршр):boolean{..return лог_знач / Promise<лог_знач>} - обработчик события после выбора маршрута, но переходит только при возврате true
routerOnDeactive(нов_маршр,стар_маршр):void{..} - обработчик события после выбора маршрута
routerCanReuse(нов_маршр,стар_маршр):boolean{..return лог_знач / Promise<лог_знач>} - обработчик события при выборе того же маршрута, при true - событие OnReuse, при false - событие OnActivate
routerOnDeactive(нов_маршр,стар_маршр):void{..} - обработчик события после выбора того же маршрута и CanReuse вернул true - @
- @
- @RouteConfig(масс_об) - декоратор для главного компонента, после @Component
- Маршрутизация2
- С помощью создания модуля маршрутизации
- import { RouterModule, Routes } from '@angular/router'; - загрузка
- import { Компонент } from 'класс_компонента'; - загрузка всех нужных компонентов
- @NgModule(об) - декоратор модуля маршрутизации
- об
- exports: [ RouterModule ] - вся настройка модуля будет работать при импорте его в другой модуль
- imports: [ RouterModule.forRoot(массив_маршрутов) ] - сохранение маршрутов
- об маршрута
- path:'путь'/'**' - установка пути маршрута (** - любой не совпавший), параметры ./:перем..
- component:Компонент - установка компонента отображаемого в теге
router-outlet - redirectTo:'путь2' - при получении текущего пути path, перезапуск другого пути
- pathMatch:'режим' - установка режима совпадения пути:'full' - полное совпадение со слешами
- data:об -
- children:массив_маршрутов1 - дополнительный набор маршрутов продолжает путь
- export class ИмяМодульМаршр{} - класс маршрутизации, он пустой
router-outlet /router-outlet - внедрение в шаблон основного компонентаa routerLink="путь" Имя_ссылки/a - создание ссылки для маршрута с применением аттрибута routerLinka [routerLink]="['строка',перем,..]" Имя_ссылки/a - путь может состоять из массива строкa .. routerLinkActive="active" - при выборе маршрута добавляется в ссылку класса activea .. [routerLinkActivateOptions]="{exact:true}" - при выборе дочернего маршрута активируется только одна ссылка без родительской- ActivatedRoute - сервис с информацией о выбранном маршруте после перехода в текущий компонент (import { ActivatedRoute } from '@angular/router';)
constructor(route:ActivatedRoute)- this.route.snapshot.params['имя_парам']; - получение параметра из URL маршрута как из статического объекта, но страница может не обновится при програмном изменении параметра
- this.route.snapshot.queryParams['имя_парам']; - получение параметра из URL get-запроса (?парам1=знач1&..)
- this.route.params.subscibe(params => {this.перем = params.имя_парам}); - асинхронное получение параметра из URL маршрута по подписке
- this.route.snapshot.paramMap.get('имя_парам'); - получение параметра из URL маршрута
- Router - сервис для программного перехода по маршрутам (import { Router } from '@angular/router';)
constructor(router:Router)- this.router.navigate(['часть1','часть2','часть3',..]); - запуск маршрута соединив массив в строку (массив преобразуется в строку 'часть1/часть2/часть3')
- this.router.navigateByUrl('/путь_целиком') - весь путь одной строкой
- перем.emit(д-е); - генерация события
- (перем/псевд)="ф-ия($event)"; - получение события с данными в переменной $event в родительском шаблоне
- interface имя_типа [extends имя_типа1]{[readonly] имя1:тип1,..} - тип определяющий имена и типы свойств и методов, применяют как тип об или реализации класса через implements [readonly - значение при создании изменить нельзя, аналог у переменных const]
- Декоратор класса
- function имя_декор(target:Function):void{добавление свойств и метдов к target} - функция добавляющая свойства и методы в класс
@имя_декор - декоратор класса это функция привязана к конструктору класса и добавляющая свойства и методы в класс
class имя_класс{..} - класс следует сразу за декоратором - function имя_декор(перем_аргум):Function{return function(target:Function):void{добавление свойств и метдов к target}} - функция добавляющая настраиваемые свойства и методы в класс
@имя_декор(аргум) - декоратор класса добавляющий свойства и методы, которые зависят от входящих аргументов
class имя_класс{..} - класс следует сразу за декоратором
- function имя_декор(target:Function):void{добавление свойств и метдов к target} - функция добавляющая свойства и методы в класс
- Декоратор свойства
- function имя_декор(target:Object,key:string){изменение свойства} - функция изменения свойства класса, где target - прототип класса, key - имя свойства, this - об
@имя_декор - декоратор свойства это функция привязана к свойству класса
имя_свойства - определение свойства в классе следует сразу за декоратором - function имя_декор(перем_аргум):Function{return function(target:Object,key:string){изменение свойства}} - функция изменения свойства класса в зависимости от аргумента, где target - прототип класса, key - имя свойства, this - об
@имя_декор(аргум) - декоратор свойства это функция привязана к свойству класса, которые зависят от входящих аргументов
имя_свойства - определение свойства в классе следует сразу за декоратором
- function имя_декор(target:Object,key:string){изменение свойства} - функция изменения свойства класса, где target - прототип класса, key - имя свойства, this - об
- Декоратор метода
- function имя_декор(target:Object,key:string,descriptor:any){изменение метода} - функция изменения метода класса, где target - класс, key - имя метода, descriptor - дескриптор метода(где descriptor.value - ссылка на метод), this - об
@имя_декор - декоратор метода это функция привязана к методу класса
имя_метода(..){..} - определение метода в классе следует сразу за декоратором - function имя_декор(перем_аргум):Function{return function(target:Object,key:string){изменение свойства}} - функция изменения свойства класса в зависимости от аргумента, где target - прототип класса, key - имя свойства, this - об
@имя_декор(аргум) - декоратор свойства это функция привязана к свойству класса, которые зависят от входящих аргументов
имя_свойства - определение свойства в классе следует сразу за декоратором
- function имя_декор(target:Object,key:string,descriptor:any){изменение метода} - функция изменения метода класса, где target - класс, key - имя метода, descriptor - дескриптор метода(где descriptor.value - ссылка на метод), this - об
- Декоратор параметров функции
- function имя_декор(target:Function,key:string,index:number){изменение метода} - функция изменения метода класса, где target - функция (для конструктора-ссылка на прототип класса, для метода-ссылка на метод), key - имя метода (для конструктора - undefined), descriptor - дескриптор метода(где descriptor.value - ссылка на метод), this - об
@имя_декор - декоратор параметра это функция привязана к параметру функции/методу
аргумент - определение аргумента функции следует через пробел сразу за декоратором
- function имя_декор(target:Function,key:string,index:number){изменение метода} - функция изменения метода класса, где target - функция (для конструктора-ссылка на прототип класса, для метода-ссылка на метод), key - имя метода (для конструктора - undefined), descriptor - дескриптор метода(где descriptor.value - ссылка на метод), this - об
- module имя_модуль{..} - создание внутреннего модуля с собственной областью видимостью
- имя_ф-ла.ts - создание внешнего модуля "имя_ф-ла" с собственной областью видимостью
- export определение - экспорт внутри модуля, возможность использования вне модуля
- import перем=имя_модуль.имя - импорт в переменную объекта из внутреннего модуля
- import перем=require('имя_ф-ла') - импорт в переменную объекта из внешнего модуля в стиле CommonJS
- Функция
- ф-я_ответ() - ф-ия для запуска
- асинхр_ф-я(ф-я_callback){setTimeout(ф-я_callback(),N)} - создание асинхронной ф-ии
- асинхр_ф-я(ф-я_ответ()) - запуск ф-ии через асинхронную ф-ию
- Применение об Promise
- ф-я_ответ()
- асинхр_ф-я(){ var pr=new Promise(ф-я(ф-я_callback,ф-я_ответ2){setTimeout(ф-я_callback(),N)} return pr}
- асинхр_ф-я().then(ф-я_ответ())
- Реактивное программирование библиотеки RxJS - работа с потоком событий и подписчиками событий
- Rx.Observable
- import { Observable } from 'rxjs/Observable'; - тип Promise
- import { of } from 'rxjs/observable/of'; - ф-ия для преобразования в тип Promise
- асинхр_ф-я(..):Observable<тип_ответ> {.. return of(ответ)}) - создание асинхронной ф-ии
асинхр_ф-я(..).subscribe(ф-я(д-е){перем = д-е}) - асинхронное получение д-х - Rx.Observable
- Rx.Observable
- .fromEvent(DOM-эл,'событие') - создание наблюдения за потоком 'события' сгенерированных в DOM-эл и передает в цепочку
- .map(ф-я(e){..return .. }) - преобразование потока событий/значений в поток вычесленных значений
- .filter(ф-я(e){..return .. }) - фильтрация потока событий/значений
- .subscribe(ф-я(e){..}) - конечная обработка потока событий/значений
- поток_ответ=new Observable(ф-я(перем_набл){}) - создание наблюдателя за потоком и встроенного наблюдателя
перем_набл.next(об) - добавление в поток нового объекта д-х
- Ручная настройка запроса Http,RequestOptions,RequestOption,Response, полезна придобавлении в запрос дополнительных заголовков
- пер_загол=new Headers() - создание заголовка для запроса
- методы
- пер_загол.append('имя','значение') - добавление заголовка
- пер_настр=new RequestOptions(об_настр) - создание настроек для запроса
- об_настр
- method:метод - метод запроса (значение об RequestMethod: Get,Post,Put...)
- url:'адрес запроса' - url-адрес
- headers:пер_загол
- перем_запрос=new Request(пер_настр/об_настр) - подготовка запроса
- поток_ответ:Observable
=http.request(перем_запрос) - получение ответа
- пер_загол=new Headers() - создание заголовка для запроса
- Сокращенные http-запросы
- поток_ответ:Observable
=http.get('адрес запроса') - get-запрос и получение ответа - поток_ответ:Observable
=http.post('адрес запроса',строк_д-е,[об_заголов]) - post-запрос и получение ответа - поток_ответ:Observable
=http.post('адрес запроса',строк_д-е,[об_заголов]) - post-запрос и получение ответа - поток_ответ:Observable
=http.put('адрес запроса',[об_заголов]) - delete-запрос и получение ответа - .pipe(catchError(..)) - передача потока ответа обработчику ошибки
- .map(ф-я(e){..return .. }) - преобразование потока событий/значений в поток вычесленных значений
- .filter(ф-я(e){..return .. }) - фильтрация потока событий/значений
- .subscribe(ф-я_удач(e){..},ф-я_ошиб(e){..}) - конечная обработка потока событий/значений
- .catch(ф-я(r:Response){..}) - выполнение ф-ии в случае ошибки
- поток_ответ:Observable
- Свойства объекта ответа - пер_об:Response
- пер_об.json() - преобразование ответ(json-текст) в об, при невозможности преобразовать - ошибка
- пер_об.text() - преобразование ответ в текст
- пер_об.status - код ответа сервера (не 2хх - ошибка)
- пер_об.statusText - текст ошибки ответа (при ошибке)
- пер_об.bytesLoaded - количество байтов уже загружено
- пер_об.totalBytes - общее количество байтов информации
- пер_об.headers - объект с заголовками
- пер_об.type - статус ответа: basic/cors/default/error/opaque
ТЭГ /ТЭГ - элемент HTMLКомп /Комп - компонент приложенияТЭГ /ТЭГ - компонент приложенияng-content /ng-content - место внедрения в шаблоне оригинального содержимого- {{выражение|фильтр}} - вычисление выражения и отображерие
- {{объект?.свойство}} / {{объект&&объект.свойство}} - выражение не создает ошибки при отсутствии об
- {{объект!.свойство}} - выражение не создает ошибки при отсутствии об
- (событие)="выражение/ф-ия()/ф-ия($event)/ф-ия(перем)" / on-событие=".." - обработчик событий, с передачей об_события, с передачей значения
- click - клик мышкой
- input - ввод значения в текстовое поле
- ngModelChange - изменение в элементе
- keyup - отпускание любой нажатой клавиши
- keyup.enter - отпускание нажатой клавиши "Enter"
- blur - потеря фокуса
- аттриб="значение" - значение аттрибута
- bind-аттриб="выражение" - значение аттрибута
- аттриб="{{'значение'/перем}}" - интерполяция значения аттрибута
- [свойство_элем]="перем"/"'значение'" - входное свойство, применяется функция для записи в свойство элемента/класса компонента, необходим декоратор свойства в классе
@Input() свойство_элем или с псевдонимом@Input('псевдоним') свойство_элем - [свойство_элем]="лог_перем" - добавление входное свойство если лог_перем==true
- [attr.имя_аттрибута]="значение" - установка значения аттрибута
- (сообщение/событие)="ф-я()" - выходное свойство, при возникновении события внутри эл/компонента запускает ф-ю сохраненную в текущем ел/компоненте, где $event - переданные д-е, событие- переменная типа EventEmitter и запущена браузером или програмно this.событие.emit('')
- #имя / ref-имя - аттрибут создает ссылку на об_эл/компонент для использования во всем шаблоне как имя.свойство
- [*]ngIf="лог_знач" - устанавливает в DOM клон элемента при true, отсутствует при false [* - в DOM весь элемент заключает в тэг
template ] - [*]ngFor="let перем1 of масс; let перем2=index; let перем3=last" - циклическое повторение массива, используя нумерацию index, лог.значение последней итерации last
- [*]ngFor="let перем1 of (масс | фильтр)" - циклическое повторение массива, предварительно применив фильтр к массиву
- [*]ngFor="let перем1 of масс; trackBy: ф-я" - циклическое повторение массива и одновременно выполнение ф-ии(пер_index, пер_знач)
- [ngStyle]="об" - передача об с CSS-стилями
- [style.имя_стиль]="выражение" - установка стиля
- [style.имя_стиль.рамерность]="число" - установка числового стиля
- [ngClass]="{{строка_классы/массив_классы/об}}" - создание классов из строки с классами через побел/массив имен классов/об со свойствами имен классов и значениями - логич.выражение(true - добавить)
- [class.имя_класс]="лог_знач" - добавление класса или нет
- [ngSwitch]="выражение" - тэг-контейнер в котором вычисляется выражение
тэг/комп ngSwitchWhen / ngSwitchCase ="значение1" - тэг-потомок в котором сравнивается значение, при совпадении контент из template вставляется в тэг ngSwitchтэг/комп ngSwitchDefault - тэг-потомок для случая не совпадения ни одного значения, при котором контент из template вставляется в тэг ngSwitch form - любаям форма содержит дирренктиву ngForm, добавляет ко всем эл классы валидацииform ngNoForm - отказ от подключения диррективы ngFormform [ngFormModel]="имя_модели_формы" - подключения диррективы ngFormModel, содержит валидацию всей формыform (ngSubmit)="ф-я()" - выполнение ф-ии при нажатии Submit- [(ngModel)]="имя_перем" / bindon-ngModel="имя_перем" - двустороннее связывание значения со св-м компонента и добавление контроля значений
- untouched/touched - создает класс: ng-untouched / ng-touched
- pristine/dirty - создает класс: ng-pristine / ng-dirty
- valid/invalid - создает класс: ng-valid / ng-invalid
- класс ng-pending
- form #имя_форм="ngForm" - переменная имя_форм будет содержать состояние этого эл из ngForm
- тэг #имя_эл="ngModel" - переменная имя_эл будет содержать состояние этого эл из ngForm
- required - проверка не пустого значения, программный аналог =new Control(нач_знач,Validators.required)
- minlength="N" - ограничение длины значения, программный аналог =new Control(нач_знач,Validators.minLength(N))
- maxlength="N" - ограничение длины значения, программный аналог =new Control(нач_знач,Validators.mexLength(N))
- pattern="рег_выр" - проверка соответвия рег.выражению, программный аналог =new Control(нач_знач,Validators.pattern('рег_выраж'))
- =new Control(нач_знач,Validators.compose(масс_ф-ий_валидации)) - объединение ф-ий валидации
- =new Control(нач_знач,Validators.composeAsync(масс_Promiseф-ий_валидации)) - объединение ф-ий валидации преобразованных в Promise
- ngControl="имя" - добавление проверки в ngForm под указанным именем без применения ngModel
- ngControlGroup="имя_группы" - объединение проверок эл с аттрибутом ngControl в ngForm под указанным именем
- =FormBuilder.group({имя1:ф-я_Control,...}) - объединение контрольных ф-й
- =FormBuilder.control(нач_знач,ф-я_валидац) аналог =new Control(нач_знач,ф-я_валидац) - создание переменной с контроллером значения
- =FormBuilder.group({имя1:[нач_знач,ф-я_Control],...}) - сокращенный вариант объединение контрольных ф-й
- Validators.ф-я - ф-я получает об Control и возвращает null при успехе или {имя_ошиб:true}
- Validators.required - проверка не пустого значения поля
- Validators.email - проверка макета email
- Validators.min(N) - проверка минимального значения
- Validators.max(N) - проверка максимального значения
- Validators.minLength(N) - проверка минимальной длины значения
- Validators.maxLength(N) - проверка максимальной длины значения
- Validators.pattern(RegExp) - проверка макета значения
- Validators.compose(масс_валидаторов) - создание одного из массива валидаторов
- Анимация CSS с помощью кадров
- @keyframes имя_кадров{0%{стили_CSS}...100%{стили_CSS}} - создание кадров
- селектор{animation:имя_кадров Ns infinite} - оживление анимации по кадрам
- Анимация появления/исчезания при NgSwitch,NgFor,NgIf
- class="ng-animate" - класс, автоматически будет добавлять временные классы ng-enter,ng-enter-active,ng-leave,ng-leave-active вначале и конце анимации
- Настройка анимации в стилях
- .ng-animate{transition:all Ns ф-ия_движения} - все изменения стилей будут плавными
- .ng-enter{силь_CSS_начало} - стиль эл в начале появления
- .ng-enter-active{силь_CSS_конец} - стиль эл в конце появления
- .ng-leave{силь_CSS_начало} - стиль эл в начале исчезновения
- .ng-leave-active{силь_CSS_конец} - стиль эл в конце исчезновения
- Анимация внедренная програмно 1
- constructor(ab:AnimationBuilder){..} - внедрение фабрики анимации класса AnimationBuilder
- перем_аним=ab.css() - создание об анимации стилей типа CssAnimationBuilder для внедрения, применяются программные цепочки
- перем_аним.setDuration(N) - установка длительности анимации
- перем_аним.setDelay(N) - установка задержки перед анимацией
- перем_аним.setFromStyles(об_стилей_CSS) - установка стилей начала анимации
- перем_аним.setToStyles(об_стилей_CSS) - установка стилей конца анимации
- перем_аним.setStyles(from:об_стилей_CSS,to:об_стилей_CSS) - установка стилей начала и конца анимации (сокращенная версия)
- перем_аним.addClass('имя_класса') - добавление класса, который остается после анимации
- перем_аним.removeClass('имя_класса') - удаление класса
- перем_аним.addAnimationClass('имя_класса') - добавление временного класса, удаляемого после анимации
- аним:Animation = перем_аним.start(эл_DOM) - внедрение анимации в эл (предпочитают elementRef.nativeElement, чем document.getElementById() / document.querySelector()), возвращает об типа Animation
- аним.onComlete(ф-я(){}) - обработчик при завершении анимации, можно запустить новую анимацию
- аним.applyStyles(об_стилей_CSS) - установка стилей текущего эл
- аним.addClasses(масс_класс) - добавление классов указанных в массиве
- аним.removeClasses(масс_класс) - удаление классов указанных в массиве
- Анимация внедренная програмно 2 (@Component({animations:масс_об,..}) )
- trigger('имя_аним',[state('имя1',style(об_стил1)),state('имя2',style(об_стил2)),transition('имя1=>имя2',animate('Nms функц')),transition('имя2=>имя1',animate('Nms функц'))]) - создание одного об анимации стилей с двумя состояниями
- trigger('имя_аним',[state('имя1',style(об_стил1)),transition('void=>*',[style(..),animate('Nms функц')]),transition('*=>void',[animate('Nms функц',style(..))])]) - создание одного об анимации стилей с одним состоянием наличие/нет, где * - любое, void - отсутствие
- trigger('имя_аним',[state('имя1',style(об_стил0)),transition('void=>*',animate('Nms функц',keyframes([style(об_стил1,offset:0),..]) )),transition('*=>void',animate('Nms функц',keyframes([style(об_стил1,offset:0),..]) ))]) - создание одного об анимации стилей с многими состояниями в блоке keyframes объединяют несколько style, offset:0.-1. часть длительности
- trigger('имя_аним',[state('имя1',style(об_стил0)),transition('void=>*',group([animate('Nms функц',style(об_стил1)),..] )),transition('*=>void',group([animate('Nms функц',style(об_стил1) ),..]))]) - создание одного об анимации стилей с двумя состояниями в блоке group объединяют несколько анимаций animate
- [@имя_аним]="св-во" - в шаблоне об_аним получает значение имя1 или имя2 через св-во класса
- (@имя_аним.srart / @имя_аним.done)="ф-ия([$event])" - выполнение ф-ии в нечале или конце анимации
ng test [--code-coverage] - запуск всех тестов *.spec.ts [с отображением покрытия кода тестами ./coverage/приложение/index.html]- конструкции для теста
- describe('имя теста', () => {...}) - объединение тестов в блок (xdescribe - отключение этого теста, fdescribe - отключение всех кроме этого теста)
- it('имя теста', () => {...}) - объединение тестов (xit - отключение этого теста, fit - отключение всех кроме этого теста)
- beforeEach(() => {...}) - запуск функционала перед каждым it-тестом
- afterEach(() => {...}) - запуск функционала после каждого it-теста
- beforeAll(() => {...}) - запуск функционала перед всеми it-тестами
- afterAll(() => {...}) - запуск функционала после всех it-тестов
- Тестирование 1 (простой, применяют для сервисов)
- beforeEach(() => {об = new Класс()}) - создание экземпляра
- it('..', () => {expect(об).toBeTruthy()}) - проверка на создание экземпляра
- it('..', () => {об.метод(); expect(об.свойство).toEqual(значение)}) - проверка метод экземпляра инициализирует свойство значением
- it('..', () => {expect(об.метод(..)).toEqual(значение)}) - проверка метод экземпляра возвращает значение
- Тестирование 2 (с зависимостями)
- beforeEach(() => {об = new Класс()}) - создание экземпляра
- beforeEach(() => {об_сервис = {метод(){..}..}) - создание не настоящего сервиса с нужными свойствами и методами
- it('..', () => {expect(об).toBeTruthy()}) - проверка на создание экземпляра
- it('..', () => {об.метод(); expect(об.свойство).toEqual(значение)}) - проверка что метод экземпляра инициализирует свойство значением
- it('..', () => {expect(об.метод(..)).toEqual(значение)}) - проверка что метод экземпляра возвращает значение
- Тестирование 3 (с зависимостями и проверка вызова сервисов)
- beforeEach(() => {об = new Класс()}) - создание экземпляра
- beforeEach(() => {об_сервис = {метод_с:jasmine.createSpy('имя_метод_с') .and.returnValue(значение)..}) - создание не настоящего сервиса с нужными свойствами и методами и отслеживанием вызова
- it('..', () => {
об.метод();
expect(об_сервис.метод_с).toHaveBeenCalled();
expect(об.метод(..)).toEqual(значение)
}) - проверка что метод экземпляра инициирует вызов метода сервиса
- Тестирование 4 (с зависимостями типа Observable и проверка вызова сервисов)
- beforeEach(() => {об = new Класс()}) - создание экземпляра
- beforeEach(() => {об_сервис = {метод_с:jasmine.createSpy('имя_метод_с').and.returnValue( of(значение, asyncSheduler))..}) - создание не настоящего сервиса с нужными свойствами и методами и отслеживанием вызова
- it('..', fakeAsync(() => {
об.метод();
expect(об_сервис.метод_с).toHaveBeenCalled();
tick()
expect(об.метод(..)).toEqual(значение);
}) ) - проверка что метод экземпляра инициирует вызов метода сервиса возврашающий асинхронное значение типа Observable после одного tick-цикла (fakeAsynk() оборачивает tick)
- Тестирование 5 (с созданием модуля TestBed)
- component: Компонент - переменная тестируемого компонента
- fixture: ComponentFixture< Компонент > - переменная-обертка тестируемого компонента
- beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ Компонент ],
}).compileComponents();}) ) - конфигурация модуля TestBed c внедренным Компонент - beforeEach(() => {
fixture = TestBed.createComponent( Компонент );
component = fixture.componentInstance;
fixture.detectChanges();
}) - создание экземпляра Компонент в модуле TestBed и запуск механизма ChangeDetection (также запускается после каждого действия пользователя) - it('..', () => {
перемHtml: HTMLElement = fixture.nativeElement
элементNative: HTMLElement = перемHtml.querySelector('селекттор')
expect(элементNative.свойство).toEqual(значение);
} ) - проверка что свойство элемента внутри экземпляра Компонента равно значению (с поиском nativeElement.querySelector() для браузера) - it('..', () => {
перемHtml: DebugElement = fixture.debugElement
элемент: DebugElement = перемHtml.query(By.css('селекттор'))
элементNative: HTMLElement = элемент.nativeElement
expect(элементNative.свойство).toEqual(значение);
} ) - проверка что свойство элемента внутри экземпляра Компонента равно значению (с поиском debugElement.query() для браузера и mibile) - it('..', () => {
перемHtml: DebugElement = fixture.debugElement
элемент: DebugElement = перемHtml.query(By.css('селекттор'))
элемент.triggerEventHandler('имя_события', null/{свойства_события})
fixture.detectChanges();
expect(элементNative.свойство).toEqual(значение);
} ) - проверка что свойство элемента внутри экземпляра Компонента изменится после действий пользователя и будет равно значению (необходим запуск механизма ChangeDetection)
- Тестирование 6 (с созданием модуля TestBed и с зависимостями)
- component: Компонент - переменная тестируемого компонента
- fixture: ComponentFixture< Компонент > - переменная-обертка тестируемого компонента
- beforeEach(async(() => {
об_сервис = {метод_с:jasmine.createSpy('имя_метод_с').and.returnValue( of(значение, asyncSheduler))..})
TestBed.configureTestingModule({
declarations: [ Компонент ],
provoders: [ {provide:КлассСервис, useValue:об_сервис} ] }).compileComponents();}) ) - конфигурация модуля TestBed c внедренным Компонент и сервиса созданного вручную - beforeEach(() => {
fixture = TestBed.createComponent( Компонент );
component = fixture.componentInstance;
fixture.detectChanges();
}) - создание экземпляра Компонент в модуле TestBed и запуск механизма ChangeDetection (также запускается после каждого действия пользователя) - it('..', () => {
перемHtml: DebugElement = fixture.debugElement
элемент: DebugElement = перемHtml.query(By.css('селекттор'))
элемент.triggerEventHandler('имя_события', null/{свойства_события})
tick()
fixture.detectChanges();
expect(об_сервис.метод_с).toHaveBeenCalled();
expect(элементNative.свойство).toEqual(значение);
} ) - проверка что свойство элемента внутри экземпляра Компонента изменится после действий пользователя и будет равно значению (необходим запуск механизма ChangeDetection)
- Тестирование 7 (с TestBed и проверкой Input, Output)
- @Component({
template: '<имя-Компонент
[input-свойство]="свойство1"
(output-событие)="метод($event)">
</имя-Компонент>'}) - создание внещнего компонента со связями с тестируемым компонентом - class TestHostComponent {
свойство1=значение;
свойство2: any
метод(арг) {this.свойство2=арг;}
} - класс внешнего компонента со свойствами и методами - testHostComponent: TestHostComponent - переменная внешнего компонента
- fixture: ComponentFixture< TestHostComponent > - переменная-обертка внешнего компонента
- beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ Компонент, TestHostComponent ],
}).compileComponents();}) ) - конфигурация модуля TestBed c внедренным Компонент и внешним компонентом TestHostComponent - beforeEach(() => {
fixture = TestBed.createComponent( TestHostComponent );
testHostComponent = fixture.componentInstance;
fixture.detectChanges();
}) - создание экземпляра TestHostComponent и тестируемого в модуле TestBed и запуск механизма ChangeDetection (также запускается после каждого действия пользователя) - it('..', () => {
перемHtml: DebugElement = fixture.debugElement;
элемент: DebugElement = перемHtml.query(By.css('селекттор')).nativeElement;
expect(элементNative.свойство). toEqual(testHostComponent.свойство1);
} ) - проверка что свойство элемента внутри экземпляра Компонента полученного через Input равно передаваемому значению - it('..', () => {
перемHtml: DebugElement = fixture.debugElement
элемент: DebugElement = перемHtml.query(By.css('селекттор'))
элемент.triggerEventHandler('имя_события', null/{свойства_события})
expect(testHostComponent.свойство2).toEqual(testHostComponent.);
} ) - проверка что свойство элемента внутри экземпляра Компонента передается к внешнему компоненту TestHostComponent
- @Component({
template: '<имя-Компонент
- Тестирование 8 (с TestBed, где тестируемый компонент содержит другие компоненты)
- @Component({ template: '<шаблош компонента>' selector: 'имя-Компонент' - создание не настоящего внутреннего компонента
- class ИмяComponent {} - класс внутреннего компонента
- component: Компонент - переменная тестируемого компонента
- fixture: ComponentFixture< Компонент > - переменная-обертка тестируемого компонента
- beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ Компонент, ИмяComponent ],
schemas: [ NO_ERRORS_SCHEMA/ CUSTOM_ELEMENTS_SCHEMA ],
}).compileComponents();}) ) - конфигурация модуля TestBed c внедренным Компонент и внутренним компонентом ИмяComponent и отключение всех ошибок или только при отсутствии других компонент - beforeEach(() => {
fixture = TestBed.createComponent( Компонент );
component = fixture.componentInstance;
fixture.detectChanges();
}) - создание экземпляра тестируемого Компонент и внутреннего ИмяComponent в модуле TestBed и запуск механизма ChangeDetection (также запускается после каждого действия пользователя) - it('..', () => {
перемHtml: DebugElement = fixture.debugElement;
элемент: DebugElement = перемHtml.query(By.css('селекттор')).nativeElement;
expect(элементNative.свойство). toEqual(testHostComponent.свойство1);
} ) - проверка что свойство элемента внутри экземпляра Компонента полученного через Input равно передаваемому значению - it('..', () => {
перемHtml: DebugElement = fixture.debugElement
элемент: DebugElement = перемHtml.query(By.css('селекттор'))
элемент.triggerEventHandler('имя_события', null/{свойства_события})
expect(testHostComponent.свойство2).toEqual(testHostComponent.);
} ) - проверка что свойство элемента внутри экземпляра Компонента передается к внешнему компоненту TestHostComponent
React - библиотека для манипулирования элементами
- Основной скрипт React
script type="text/javascript" src="...react.js" /script
- Дополнительный скрипт React для привязки к оболочке
script type="text/javascript" src="...react-dom.js" /script
- Дополнительный скрипт ReactRouter для работы с маршрутами
script type="text/javascript" src="...ReactRouter.js" /script - Дополнительный скрипт babel для упрощения записей в подключаемых JSX-скриптах (тогда для подключаемого файла/текста JSX-скрипта устанавливают type="text/babel")
script type="text/javascript" src="...browser.js" /script - Дополнительный скрипт EventEmitter для генерации и передачи событий между компонентами
script type="text/javascript" src="...EventEmitter.js" /script
- Содержание пользовательского скрипта после всех библиотек аттрибутом type="text/babel" для внедрения тэговой записи JSX
ReactDOM - об для внедрения только одного React-компонента в DOM, применяют в конце скрипта.render (React-комп / /тэг ../тэг ,об_эл, [ф-я обр вызова]) - вставка React-компонентов в пустой об_эл, что вносит изменения в DOM (в эл добавляется аттрибут data-reactroot с нумерации иерархии компонентов)- .findDOMNode(об_эл) - ф-я для доступа к эл DOM через React, где об_эл можно получить document.getElementById('id'),this.refs.имя
- .unmountComponentAtNode() - удаляет компонент из DOM, вмонтированый ранее
React - основной об для манипулирования элеменнтами HTML с помощью React-компонентов- .DOM.имя_элем(null/об св-в элемента , текст1/об_эл1/React-комп1, -//-2.. ) - упрощенная форма React.createElement('имя_тэга',...) в виде любого простого HTML-об_эл (a,b,div,input,...), добавлние ему св-в, внедрение других других об_эл/текста
- .createElement("тэг" , null/об св-в элемента , текст1/об_эл1/React-комп1, -//-2.. ) - создание React-элемент в виде одного простого HTML-об_эл, добавлние ему св-в, внедрение других других об_эл/текста или в виде JSX-записи:
тэг - .cloneElement(React-компонент,об_свойств) - получение копии помпонента
- .createFactory("тэг") - получение ф-ии для создания новых элементов подобно .createElement("тэг"...)
- .isValidElement(об) - проверка об/эл/комп, что он создан в React
- .createRef() - создание объекта для присвоения атрибуту ref - .current содержит ссылку на эл./компон.
- .forwardRef() - создание объекта
- .Fragment - компонент объединяющий набор элементов в render(), но можно объединить пустым тэгом:
... / - .Component - компонент
- .PureComponent - компонент обновляется при изменении props, state
- .Suspense - компонент
- .lazy - компонент
- .Children - об с методами работы с this.props.children
- .map(children, function(thisArg)) - возвращает новый массив проходя массив об_эл из children выполняя ф-ю
- .forEach(children, function(thisArg)) - проходит массив об_эл из children выполняя ф-ю
- .count(children) - возвращает количество об_эл в children
- .only(children) - возвращает об_эл являющийся единственным или null
- .toArray(children) - возвращает простой массив из об_эл находящихся в children для последующих манипуляций
.createClass ({render:function(){return(тэг ...)}) - создание React-компонента с помощью специальной ф-ии, собственные св-ва в тэгах можно отображать в тэгах : {this.props.св1}- свойства об_парам
- render:ф-я(){return(
тэг ...)} - ф-я которая возвращает React-компонент в виде одного об_эл - propTypes:об_парам - каждое свойство содержит ф-ю проверки на валидность компонента
- свойства об_парам
- имя_св-ва:ф-я_проверки - React-ф-я проверки валидности из набора React.PropTypes
- getInitialState:ф-я(){return{св1:знач1,св2:знач2,...}} - ф-я возвращает об первоначального состояния, доступный this.state.св1 (в ES6 - это выполняет constructor() )
- getDefaultProps:ф-я(){return {св1:знач1,св2:знач2,...}} - ф-я при инициализации класса создает значения св-ва поумолчанию (в ES6 - Комп.defaultProps )
- имя_ф:ф-я(){} - ф-я компонента доступна для заупска: onClick={this.имя_ф}
- componentWillMount:ф-я() - ф-я запускаемая перед первым отображением - запуск render
- componentDidMount:ф-я() - ф-я запускаемая сразу после отображения render когда DOM-компонент существует
- componentWillReceiveProps:ф-я(об_новых_св-в){} - действие когда prop получил новые д-е (не при загрузке), где this.props.имя_св - старые св-ва, об_новых_св.имя_св - новые д-е, при вызове setState() - не запускает render
- shouldComponentUpdate:ф-я(об_новых_св-в,об_нов_состоян) - при изменении prop или состоян вычисляет необходимость обновления компонента (возврат true - надо)
- componentWillUpdate:ф-я(об_новых_св-в,об_нов_состоян) - при изменении prop или состоян если надо перерисовать - перед запуском render
- componentDidUpdate:ф-я(об_стар_св-в,об_стар_состоян) - при изменении prop или состоян сразу после запуска render при выполнении изменений
- componentWillUnmount:ф-я() - перед удалением компонента из DOM
- render:ф-я(){return(
function имя([props]){ - компонент в виде ф-ии, возвращающей React-элемент, можно выполнять как внедрение элемента, props - об свойств можно отображать в тэгах : {об_свойств.св1}тэг ...}имя = () => {return( - компонент в виде стрелочной ф-ии, возвращающей React-элемент, можно выполнять как внедрение элементатэг ...)}class Имя extends React.Component { render() { returnтэг ...} } - класс для создания компонента (в виде класса в стиле ES6), возвращающей React-элемент (или иерархию JSX-элементов), можно выполнять как внедрение элемента, собственные св-ва в тэгах можно отображать в тэгах : {this.props.св1},{this.state.св1}- содержание класса
- constructor([props]) {[super(props);] this.state=...}; - принимает входящие свойства props, формирует первое состояние this.state, может иметь передачу this в ф-ю (this.имя_ф=this.имя_ф.bind(this) для применения св-в,состояния), может запускать super(props)
render() { returnтэг ...} - возвращает создаваемый JSX-элемент- имя_ф([об_событ]){} - ф-я компонента доступна для заупска: onClick={this.имя_ф},где this - об компонента, об_событ.target - об_HTML-элемента для доступа к его свойствам
- this.имя_ф=имя_ф(..).bind(this) - запуск метода класса внутри конструктора этого класса обработчик события создания компонента
- componentWillMount(){} - ф-я запускаемая перед первым отображением - перед запуском render
- componentDidMount(){} - ф-я запускаемая сразу после первого отображения render когда DOM-компонент уже существует, тут можно установить загрузку д-х из БД обработчик события удаления компонента
- componentWillUnmount(){} - перед удалением компонента из DOM, обычно удаляют слушателей, удаляют таймеры обработчик события получения свойств компонента
- componentWillReceiveProps(об_новых_св-в){} - действие когда prop получил новые д-е (при обновлении, а не не при первой загрузке), где this.props.имя_св - старые св-ва, об_новых_св.имя_св - новые д-е, тут при вызове setState() - не запускает render обработчик события изменения состояния компонента
- shouldComponentUpdate(об_новых_св-в,об_нов_состоян) - ф-я запускается при изменении props или состоян, вычисляет необходимость обновления (запуск render() ) компонента (по ум возврат true - надо), имеется готовый встроенный метод Неглубокой (!==) проверки изменений - надо унаследовать класс от React.PureComponent а не от React.Component
- componentWillUpdate(об_новых_св-в,об_нов_состоян) - при изменении prop или состоян если вычеслена необходимость перерисовать - перед запуском render
- componentDidUpdate(об_стар_св-в,об_стар_состоян) - при изменении prop или состоян сразу после запуска render при выполнении изменений
React-компонент созданный функцией или JSX-тэгом- Комп.
defaultProps ={св1:знач1,св2:знач2,...} - для props.св у классов ES6 и у компонентов создает (как статическая переменная) одно/все значения св-ва по-умолчанию - Комп.propTypes={св:ф-я} - создание пользовательской ф-ии валидации для props.св ф-я(props,имя_св,имя_комп){} - если значение валидно - ничего, если нет - создается ошибка new Error()
- Комп.
propTypes ={prop1: React.PropTypes.тип[.isRequired],...} - у класса добавляет (как статическая переменная) объект с подключенными функциями валидации (указанием типа или наличия одного/всех св-в компонента) - установка проверки типа- React.PropTypes - об содержит функции для установки проверки наличия или типа одного/всех св-в (в старших версиях перенесен в отдельный модуль prop-types - подключают npm)
- .любой_тип.isRequired - добавление проверки наличия этого св-ва проверка, что тип св-ва является элементарным типом
- PropTypes.array - св-во должно быть массивом
- PropTypes.bool - св-во должно быть логическим значением true/false
- PropTypes.func - св-во должно быть ф-ей
- PropTypes.number - св-во должно быть числом
- PropTypes.object - св-во должно быть об
- PropTypes.string - св-во должно быть строкой сложные типы св-в
- PropTypes.any - св-во может быть любым элементарным типом
- PropTypes.arrayOf(тип) - массив из элементов указанного типа
- PropTypes.element - элемент
- PropTypes.instanceOf(класс) - экземпляр указанного класса
- PropTypes.node - любой из: число,строка,об_эл,массив
- PropTypes.objectOf(тип) - объект указанного типа
- PropTypes.oneOf(знач1,знач2,...) - одно из указанных значений
- PropTypes.oneOfType([тип1,тип2,..]) - указание массива типов которыми могут быть св-ва
- PropTypes.shape({св1:тип1,св2:тип2,...}) - создание об проверки свойства содержащего об с нобором св-в и типов
- this - ссылка на React-компонент, у каждого React-компонента свой this
- this.props - об со всеми свойствами (this.props.prop1) добавленными в компонент из вне(в виде аттрибутов JSX-тэга: Комп prop1=знач), их изменить нельзя, поэтому их передают в state
- .props.св_масс.map(function(item,[index]){return (
тэг key={index} эл1 эл2 ..{item}..{index}../тэг );}) - создание из свойства-массива массива компонентов, отображаемые как списочные тэги, key={разные значения} - признак отображения списка компонентов - .props.children - получение доступа к содержимому тэга (то что между откр и закр тэгами, если несколько - массив, а само-закрывающиеся тэги надо менять на два)
- .props.children - получение компонентов указанных в родителе (они не отображаются(их можно извлечь и вставить куда надо), а только собственные дочение комп- из render() )
- .props.params.имя_парам - значение параметра вычисленного из маршрута
- .state - содержит об первоначального состояния (возвращаемый ф-ей getInitialState), доступен для чтения только внутри компонента и изменения через .setState()
.setState (об_измен,[ф-я]) - асинхронно пере-присваивает переданный набор св-в в об состояния [ф-я запускаемая после установки нового состояния] (нельзя: выполнять в render, изменять состояние напрямую this.state.св иначе не сработают события).setState (ф-я(предыдущ_state,текущ_props)) - II вариант - переустанавливает св-ва об состояния используя предыдущее состоянее и текущее внещнее свойство- .forceUpdate() - принудительное обновление компонента
- .имя_ф-ии:ф-я(об_событ) - создание ф-ии обработчика события
- .refs - (только в старых версиях) об со св-ми-именами аттрибута ref="имя" данного компонента, содержащими ссылку для поиска каждого об_эл в DOM, являющимся потомком
- Комп.
- Синтаксис JSX-скрипта предоставляет модуль babel (тэгом может быть React-компонента или HTML-этемент)
комп/тэг аттрибуты эл1 эл2 ../тэг - упрощенная запись соответствует ф-ии создания компонента: React.createElement('тэг',об_аттрибутов,эл1,эл2,..), где эл - строка/об_эл/компоненттэг / - упрощенная запись длятэг /тэг когда у комп/тэга нет внутреннего содержимого(
когда комп внутри содержит другие компоненты, многострочная запись заключается в скобкитэг тэг1 /тэг1 тэг2 /тэг2 .../тэг )тэг1 / {' '}тэг2 / - пробел вставляемый между элементами, т.к. в JS пробелы надо вставлять явноtextarea - первоначальное значение можно устанавливать между тэгами или в аттрибут valueselect - первоначальное значение не устанавливают аттрибутом selected, а установкой в аттрибут value- масс.map(ф-я(знач,[индекс]){return
тэг {выражен_знач}/ тэг }) - создание из массива значений массива/списка компонентов {/* комментарий */} - в JSX-разметкe, /*комментарий*/ или //комментарий - обычный javascript-комментарий вне разметки{js-выражение} - отображение значения выражения в контенте{js-ф-я} - возвращает компонент / масс_компонентов} - отоблажение компонентов в контенте{масс_комп} - масс_компонентов можно формировать програмно при наличии аттрибута key={уникальн_значение}{лог_выражкние && - отображает компонент при лог_перем ровном trueКомп / }аттрибут="знач" - свойство HTML-элемента (вместо class и for применяют className и htmlFor) или свойство компонента передаваемое в propsаттрибут={js-выражение} - аттрибуты тэга/компонента, (в JS:{аттрибут:выражение}) (св-ва компонента: this.props.аттрибут) могут получать об любогоref={ф-я(об_эл)} - аттрибут принимает ф-ю обратного вызова принимающую об_эл/комп текущего элемента/компонента (но комп. не созданных функцией)ref={props.имя_св} - аттрибут запускает ф-ю описаную в родит компоненте имя_св={ф-я(об_эл){this.перем=об_эл}}, тогда у родителя this.перем содержит об_эл потомкаdefaultValue='значен'/{значен} - указание значение по умолчаниюdefaultChecked={значен} - указание значение по умолчанию для radio и checkboxаттрибут иаттрибут={true} - аналогичные выражения{...перем_об} - spread-оператор в стиле ES6: передача аттрибутов, где перем_об={аттр1:знач1,...}style={{св1:знач1,...}} - стиль присваемый непосредственно элементу (названия свойств без дефисов а с заглавными буквами вторых слов: fontSize), можно устанавливать чистое числовое значение (хх:200) - воспринимается как хх:"200px", префиксы ms - с маленькой, а другие - с заглавнойdangerouslySetInnerHTML={__html:текст} - аттрибут внедряемый внутрь тэга любой текст с разметкой (аналог innerHTML)слушатель_события={this.ф-я_React-компонента} - установка обработчика в форму, где в constructor() определено выражение this.имя=this.имя.bind(this) или запускать ф-ю слушатель_события={ф-я(e){return this.ф-я_React-компонента(e)}} ф-я: имя(e){..}, где e.target - об_элеметта, e.preventDefault() - отмена стандартной реакции- Объект события внутри обработчика содержит крссбраузерные значения
- bubbles -
- button -
- buttons -
- cancelable -
- currentTarget -
- clientX -
- clientY -
- defaultPrevented -
- detail - данные скроллинга
- dispatchConfig -
- eventPhase -
- getModifierState -
- isDefaultPrevented() -
- isPropagationStopped() -
- isTrusted -
- nativeEvent -
- pageX -
- pageY -
- relatedTarget -
- screenX -
- screenY -
- target -
- timeStamp -
- type - строка названия события без on: "click"
- view -
- preventDefault() -
- stopPropagation() -
- clipboardData - данные помещенные в буффер обмена
- altKey -
- metaKey -
- ctrlKey -
- shiftKey -
- deltaMode,deltaX,deltaY,deltaZ - вращение колеса прокрутки onWheel
- События React-компонента
-
Touch и Click
- onTouchStart -
- onTouchEnd -
- onTouchMove -
- onTouchCancel -
- onMouseMove -
- onDragEnd -
- onMouseEnter -
- onDragOver -
- onMouseLeave -
- onDrop -
- onMouseOut -
- onContextMenu -
- onClick -
- onDrag -
- onDoubleClick -
- onDragEnter -
- onMouseDown -
- onDragLeave -
- onMouseUp -
- onDragExit -
- onMouseOver -
- onDragStart - События клавиатуры
- onKeyDown - нажата клавиша
- onKeyUp - отпущена клавиша
- onKeyPress - нажата и отпущена клавиша (содержит 2 события) Фокус и события формы
- onFocus - получен фокус
- onBlur - потерян фокус
- onChange - изменено значение value
- onInput -
- onSubmit - нажата кнопка submit
- onSelect - Другие события
- onAnimationStart, onAnimationEnd, onAnimationIteration - анимация CSS
- onTransitionEnd - переход CSS
- onLoad,onError - результат загрузки ресурса (изображения)
- onScroll - прокрутка элемента
- onWheel - вращение колесика мыши
- onCut - удаление и копирование в буффер обмена
- onCopy - копирование в буффер обмена
- onPaste - изъятие из буффера обмена Управление медиа
- onAbort, onCanPlay, onCanPlayThrough, onDurationChange, onEmptied, onEncrypted, onEnded, onError, onLoadedData, onLoadedMetadata, onLoadStart, onPause, onPlay, onPlaying, onProgress, onRateChange, onSeeked, onSeeking, onStalled, onSuspend, onTimeUpdate, onVolumeChange, onWaiting -
input - контролируемый эл, аттрибут value="знач"(это присвоение свойства об_эл) применяют только с readOnly или name="св" onChange={this.ф-я(){setState({св:e.target.value})}} value={state.св}, в constructor() добавляют this.state={св:нач_знач,..}input - не контролируемый эл (без аттрибута value), используют аттрибут defaultValue="нач_знач", ref="имя", у эл-та - this.refs.имя хранит ссылку на об_эл (для получения value), а у компонента - this.refs.имя хранит ссылку на подчиненый компонент (для получения state.value), где value - введенное значениеtextarea - аналогично с input вводимое значение в аттрибуте valueselect - значение выбранного эл определяется не атрибутом selected тэга option, а в тэге select аттрибут value принимает значение или массив значений- Валидность:
- this.state.перем_val - переменная значения создается в constructor() хранит текущее значение
- this.state.перем_валид - переменная валидации создается в constructor() хранит результат валидации
- ф-я_валидации(пер_val){return true/false} - ф-я валидации в constructor() вычисляет валидацию
- ф-я_onChange(e){..} - ф-я события в constructor(): e.target - получает доступ к об_эл (получает value),this.ф-я_валидации(val) вычисляет валидацию,this.setState({св1:зн1,..}) - изменяет состояние: val,перем_валид
- Обработка маршрутов
react-router / react-router-dom - Загрузка скрипта в HTML ReactRouter.js (добавляет windows.ReactRouter) :
npm install —save react-router или загрузка он-лайн (https://unpkg.com/react-router/umd/react-router.min.js)- Предварительное получение необходимых объектов в основном скрипте:
- var Router_компонент = ReactRouter.Router_компонент; - JSX-компонент для создания маршрута
- var browserHistory = R.R.browserHistory / R.R.hashHistory; - выбор способа вычисления маршрута (http://адрес:порт/маршрут) / (http://адрес:порт/#/маршрут)
- Загрузка скрипта в HTML ReactRouter.js (добавляет windows.ReactRouter) :
- Для приложения
npm install —save react-router-dom , затем import { BrowserRouter as Router, Route, Link,... } from 'react-router-dom'; Switch маршруты/Switch - контейнер только для Route-маршрутовBrowserRouter history={browserHistory} маршруты/BrowserRouter - основной контейнер всех Route-маршрутов,- аттрибуты :
- basename="часть_пути" - часть начала пути (если не указано location)
- getUserConfirmation={ф-ия} - ф-ия для подтверждения изменения пути
- forceRefresh={true/false} - перезапуск страницы (для не HTML5)
- keyLength={N} - указание длины location.key (ум - 6)
- history={об_history} - добавление об history (npm install --save history и import createHistory from 'history/createBrowserHistory' или он-лайн https://unpkg.com/history/umd/history.min.js)
- children={об_эл/компонент} - внедрение внутреннего содержания контейнера
HashRouter history={browserHistory} маршруты/HashRouter - основной контейнер всех Route-маршрутов,- аттрибуты :
- basename="часть_пути" - часть начала пути (если не указано location)
- getUserConfirmation={ф-ия} - ф-ия для подтверждения изменения пути
- hashType="slash/noslash/hashbang" - установка признака хэша #/ , # , #!/ (ум - slash)
- history={об_history} - добавление об history (npm install --save history и import createHistory from 'history/createBrowserHistory' или он-лайн https://unpkg.com/history/umd/history.min.js)
- children={об_эл/компонент} - внедрение внутреннего содержания контейнера
StaticRouter location="путь" ../StaticRouter - создание и выполнение контейнера одного маршпута, применяют для тестирования- аттрибуты :
- context={об} - об контекста наполняется свойствами после выполнения
- location="путь"/об - единственный путь, срабатываемый для содержимого
- basename="часть_пути" - часть начала пути (если не указано location)
- children={об_эл/компонент} - внедрение внутреннего содержания контейнера
MemoryRouter location="путь" ../MemoryRouter - создание и выполнение контейнера одного маршпута, применяют для тестирования- аттрибуты :
- initialEntries={масс_путей} - массив путей
- initialIndex={N} - индекс выбранного пути
- getUserConfirmation={ф-ия} - ф-ия для подтверждения изменения пути
- keyLength={N} - указание длины location.key (ум - 6)
- children={об_эл/компонент} - внедрение внутреннего содержания контейнера
Route path="маршрут1" component={Имя_компонента1} - создание одного маршрута с указанием пути (для сопоставления) и компонента (для открытия нужной страницы), может иметь дочерние пути (внедряются во внутрь текущего Route), путь вычисляется "текущ_путь"+"дочерн_путь" = "текущ_путьдочерн_путь"- аттрибуты :
- path="путь" - Маршрут, при его отсутствии (последняя строка) - любой не совпавший путь
- "/" - корневой маршрут, обычно основной, срабатывает при отсутствии маршрута
- "имя" - имя, применяемое для выбора маршрута, если он дочерний - то к нему спереди, через "/" будет добавляться основной
- ".. :имя_парам .." - имя параметра, присваемое при получении маршрута, передаваемое в компонент и доступно как this.props.params.имя_парам
- ".. (/:имя_парам) .." / "..(/имя).." - круглые скобки указывают на не-обязательность присутствия части маршрута или параметра, их может быть нескольно: ..(..)..(..).. и они могут быть вложенными: (...(...))
- "*" - маршрут при не соответствии ни одному из предыдущих
- component={Имя_компонента} - компонент отображаемый при выборе маршрута
- render={ф-ия} - ф-ия при выборе возвращает компонент (если не применяется component)
- children={ф-ия} - ф-ия всегда отображает компонент (если не применяется component,render)
- exact - требует полного совпадения пути, иначе маршрут сраборает при совпадении части пути
- strict - требует полного совпадения пути с замыкающим слэшем, иначе маршрут сраборает не зависимо от замыкающего слэша
- path="путь" - Маршрут, при его отсутствии (последняя строка) - любой не совпавший путь
history - об внедряется в компонент выбранного маршрута в props (похож на window.history)- методы history
- pushState(null/об_св-в, "маршрут") - добавления пути в историю
- replaceState(null/об_св-в, "маршрут") - замена текущего пути в истории
- goBack() - переход на один назад
- goForward() - переход на один вперед
- Go(число) - переход на число вперед/назад
- createHref() - создание ссылки из текущего маршрута
- location - об текущего пути {pathname, search, hash, state}
location - об добавляется в props компонента выбранного маршрута (или передается в ф-ию аттр render,children как св. об)- свойства location
- pathname -
- search -
- search -
- state -
match - об добавляется в props компонента выбранного маршрута (или передается в ф-ию аттр render,children как св. об)- свойства match
- params - параметры-переменные полученные при совпадении маршрута
- isExact - проверка полного совпадения
- path - строка применяемая для установка маршрута
- url - строка пути
Redirect to="путь" / - компонент запускает новый маршрут в виде строки/объекта:{}, добавляют в логику, условия- Аттрибуты
- to="путь"/{об} - маршрут в виде строки/объекта:{pathname,search,hash,state}
- push - добавление этого перехода в историю
- from="путь" - маршрут исходящего перехода (внутри контейнера switch)
Link to="полный маршрут1" Текст ссылки/Link - создание ссылки для перехода по маршруму- Аттрибуты
- to="путь"/{об} - маршрут в виде строки/объекта:{pathname,search,hash,state}
- replace - замена этого пути в истории
NavLink to="полный маршрут1" Текст ссылки/Link - создание ссылки с дополнительными возможностями- Аттрибуты
- to="путь"/{об} - маршрут в виде строки/объекта:{pathname,search,hash,state}
- replace - замена этого пути в истории
- activeClassName="имя_класса" - при нажатии не ссылку ей добавляется класс
- activeStyle={об_стилей} - при нажатии не ссылку ей добавляется набор CSS-стилей
- exact - требует полного совпадения пути, иначе маршрут сраборает при совпадении части пути
- strict - требует полного совпадения пути с замыкающим слэшем, иначе маршрут сраборает не зависимо от замыкающего слэша
- isActive={ф-ия} - совпадение маршрута проверяется ф-ией при возврате true
- matchPath('путь',{path:..,exact:..,strict:..}) - изменение пути для запуска маршрута
- withRouter(компонент) - получение history при выборе маршрута
- установка : npm install —save react-addons-css-transition-group
- подключение : import ReactCSSTransitionGroup from 'react-addons-css-transition-group'; - подключение в скрипт компонента
ReactCSSTransitionGroup аттрибуты цель-//- - добавление анимации с аттрибутами к цели (набор элементов/компонентов внутри одного контейнера)
аттрибуты
- transitionName="имя" - присвоение имени анимации (класс всех элементов - "имя-...")
- transitionEnterTimeout={число} - длительность добавления в мс ("-enter" - элемент для добавления, "-enter-active" - элемент уже добавленный и содержит transition)
- transitionLeaveTimeout={число} - длительность удаления в мс ("-leave" - элемент для удаления, "-leave-active" - элемент уже удален и содержит transition)
- transitionAppear={true} - подключение эффекта появления уже имеющихся элементов
- transitionAppearTimeout={число} - длительность появления в мс ("-appear" - все элементы появляются, "-appear-active" - элемент уже появились и содержит transition)
- установка : npm install –-save react-dnd@2.x.x react-dnd-html5-backend@1.x.x
- подключение : import import { DragDropContext } from 'react-dnd'; import HTML5Backend from 'react-dnd-html5-backend';
- подключение в скрипт компонента export default DragDropContext(HTML5Backend)(компонент); - завершение модуля
- window.ee = new EventEmitter() - создание глобального об для приема-передачи событий
- window.ee.emit('имя_событ',об_д-х) - генерация события 'имя_событ' с передачей об_д-х
- window.ee.addListener('имя_событ',ф-я(перем_об_д-х)) - обработка события 'имя_событ' с получением об_д-х
- wimdow.ee.removeListener('имя_событ') - отключение слушателя события (в другом компоненте)
create-react-app - готовое React-приложение с зависимостями- npm install -g create-react-app - установка
- create-react-app my-app - инсталляция
- cd my-app - переход к папке
- npm start - загрузка зависимых модулей
- npm run build - создание в папке build оптимизированого приложения
- Создание React-приложения вручную с применением webpack
- Типичная структура приложения
source (папка) - папка для сохранения всех скриптов приложения, первый обычно называется app.js index.html - основная HTML-страница package.json - настройка node.js (загрузка фрэймверков и библиотек в папку node_module) для данного приложения webpack.config.js - настройка сборщика js-файлов в единый
- Подгружаемые библиотеки
- npm install -g babel - библиотека преобразования ES6 (EcmaScript2015)
- npm install -g babel-cli
- npm install babel-core
- npm install babel-loader
- npm install babel-preset-react
- npm install babel-preset-es2015
- mkdir имя_проекта - создание папки приложения
- npm install webpack --save - библиотека сборки и компиляции скриптов в один
- npm install webpack-dev-server --save
- npm install react --save - библиотека React
- npm install react-dom --save - библиотека React
- index.html - первая HTML-страница
- npm init - создание файла package.json с информацией об проекте
{ "name": "webpackapp", "version": "1.0.0", "scripts": { "start": "lite-server" }, "dependencies": { "react": "^15.4.2", "react-dom": "^15.4.2" }, "devDependencies": { "babel-core": "^6.21.0", "babel-loader": "^6.2.10", "babel-preset-es2015": "^6.18.0", "babel-preset-react": "^6.16.0", "lite-server": "^2.2.2", "webpack": "^1.14.0" } } - webpack.config.js - настроенный сборщик скриптов
module.exports = { entry: "./app/app.jsx", // входная точка - исходный файл output:{ path: "public", // путь к каталогу выходных файлов - папка public filename: "bundle.js" // название создаваемого файла }, resolve:{ extensions: ["", ".js", ".jsx"] // расширения для загрузки модулей }, module:{ loaders:[ //загрузчики { test: /\.jsx?$/, // определяем тип файлов exclude: /(node_modules)/, loader: ["babel-loader"], query:{ presets:["es2015", "react"] } } ] } } - В NodeJS выполняется команда .\node_modules\.bin\webpack - для формирования js-файла
- npm start - запуск приложения в папке приложения
- Приложение доступно по адресу http://localhost:3000/
- Типичная структура приложения
- Flux - представление приложения в 3-х частях:диспетчер (dispatcher) , хранилище данных (store) и представления (view - эту роль выполняет React)
- диспетчер - регистритует хранилища, получает запросы в кранилища, общается с хранилищем
new_Dispatcher = new flux.Dispatcher - создание об диспетчера через его конструктор класса
об_действий = { имя(арг){ new_Dispatcher.dispatch({type:"",арг}) }, ... } - регистрация действий в виде объекта с функциями, получающих название действия и д-е как арг
- хранилище данных - создается класс Класс_хранил в стиле ES6 унаследованный от ReduceStore, где
constructor(){..} - запускает super(Класс_хранил)
getInitialState(){..} - возвращает значение state как хранилища д-х
reduce(state, action){..} - передается об состояния state и вызванное действие action, в зависимости от выбранного действия над state выполняется функция и возвращает измененный state
new Класс_хранил() - создается об - представление - создается React-компонент, где
constructor(props){..} - устанавливает первоначальное this.state
ф-я(e){} - функция обработчик события, изменяет state функцией this.setState(об)
render(){} - возвращает JSX-разметку, где
input - может изменять state
кнопки - запускают props.ф-ии(..), т.е. ф-ии получены из вне как свойства
списки - отображают props.массив_данных, т.е. данные получены из вне как свойства
- диспетчер - регистритует хранилища, получает запросы в кранилища, общается с хранилищем
- контейнер - создает React-компонент содержит
static getStores(){..} - статическая ф-я, возвращает массив всех хранилищ
static calculateState(prevState){..} - статическая ф-я, возвращает об как состояние контейнера: список данных,набор функций над данными
render(){} - возвращает React-компонент представления с переданными аттрибутами из this.state: список данных,набор функций над данными
Container.create(контейнер) - создание контейнера - основной файл app.js
ReactDOM.render(контейнер / , об_эл) - внедрение контейнера в об_эл - webpack.config.js - объединение всех js-файлов в один
- действия - создание списка функций Reflux.createActions(["addItem", "removeItem"]); - создает список действий
- хранилище - создается класс унаследованый от Reflux.Store constructor(){..} - создает this.state, методом this.listenTo(знач_действие,ф-я) устанавливает соответствие ф-ии над состоянием с действием ф-ии(..){..} - определение ф-ий выполняемых над состоянием и подключаемых к действию
- представление - создается Reflux-компонент (похож на React-компонент)
constructor(props){} - устанавливает начальные this.state, в this.store сохраняется об хранилища или в this.stores сохраняется массив об хранилищ
ф-я(e){} - функция обработчик события, изменяет state функцией this.setState(об) и выполняет действие над хранилищем
render(){} - возвращает JSX-разметку, где
input - может изменять state
кнопки - запускают ф-ии действий над текущим хранилищем и при необходимости над state списки - отображают state.массив_данных, т.е. данные уже подвязаны к компоненту - основной файл app.js
ReactDOM.render(Reflux-компонент / , об_эл) - внедрение контейнера в об_эл - webpack.config.js - объединение всех js-файлов в один
- действия - создание функций имя_ф=function(арг){return {type:"имя_действ",арг}} - возвращает об с типом тействия и д-е
- reducer - ф-я(свойства,действие){} - получает хранилище(в свойстве) и значение действия которое по switch выполняет это действие и возвращает измененное хранилище
- представление - создаются React-компоненты из которых состоит
constructor(props){}
ф-я(e){} - функция обработчик события, изменяет хранилище в свойстве this.props.хранилище функцией из свойства this.props.ф-ия()
render(){} - возвращает JSX-разметку, где
input - содержит аттрибут ref=".." для доступа к элементу (value)
кнопки - запускают ф-ии действий над текущим хранилищем и при необходимости над элементами через this.refs.имя списки - отображают this.props.массив_данных, т.е. данные передаются компоненту как аттрибуты - основной файл app.js
store = redux.createStore(reducer); store.dispatch({type:,state:{хранил:данные}}) ReactDOM.render(Provider store={store} React-компонент / , об_эл) - внедрение Provider в об_эл - webpack.config.js - объединение всех js-файлов в один
SASS - модуль упрощенной записи стилей CSS из файлов *.sass(применяют без скобок и тчк.зпт и с отступами) *.scss(в стиле css)
- Способы применения
- npm i -g sass - установка node-программы
- sass input.scss output.css - выполнение компиляции
- sass --watch input.scss output.css - выполнение компиляции и постоянное слежение за изменениями
- $имя:значение; - присвоение переменной любого значения и применение ее
свойство:$имя вместо значения, переменные обявленные в фиг.сковках доступны только тут, добавление в конце!global делает доступной везде - Миксины, примеси (подобие функции)
- @mixin имя {стили} - именованый набор стилей для многоразового применения:
@include имя - @mixin имя($перем1,..) {стили с применением $перем1,..} - миксины с аргументами как именованый набор стилей для многоразового применения: , при передаче в набор аргументов переменной со списком после указывают три точки, строка применения предваряется
@include имя(значен1,..) - @mixin имя($перем1 : знач1,..) {стили с применением $перем1,..} - Миксины с аргументами по умолчанию если аргумент не передается - применяется значение по умолчанию, строкатприменения предваряется
@include имя(значен1,..)
- @mixin имя {стили} - именованый набор стилей для многоразового применения:
- @import 'имя_файла' - добавление стилей из файла sass/scss с названием _имя_файла, при компиляции создается один css-файл
- сел1{свойства1; сел2{свойства2} } - вложенность селектора2 в селектор1 - установка селектора(наследник) внутри фигурных скобок другого селектора(родителя), аналогично как расположены тэги в css:
сел1 сел2{..} - &селектор или селектор&{свойства} - внедрение во вложенность селектора родителя, предваряющий & аналогичен простой вложенности, &-часть.сел{св-ва} создает много словного селектора (сел.родит-часть.сел)
- [Селектор] %псевдоним{свойства} - создание набора стилей с псевдонимом(или добавление псевдонима к селектору) для последующего внедрения стилей:
@extend %псевдоним; , похож на миксин, но создает компактный css - часть1:{часть2:знач1;...} - внедрение многословных свойств, первая часть слова объединяет все вторые части для получения имени свойства:
часть1часть2:знач1; - Числовые значения - соответствует количеству пикселей (N компилируется в Npx)
- Строчные значения - соответствует значению и при необходимости с кавычками
- Список значений - перечисление значений через пробел или запятую
- Карта/объект - соответствует объекту/массиву (ключ1:знач1,..)
- Другие значения - true, false, null соответствует логическом значению и отсутствию значения
- Внедрение значения переменной в строку - переменная заворачивается в фигурные скобки с предваряющей решеткой: строка #{$имя} строка, при применении миксина строка передается в кавычках
- Функции
- lighten(цвет, N%) - получает цвет светлее указаного на N%
- darken(цвет, N%) - получает цвет темнее указаного на N%
- saturate(цвет, N%) - получает цвет насыщенее указаного на N%
- desaturate(цвет, N%) - получает цвет менее насыщенее указаного на N%
- grayscale(цвет) - получает серый цвет как средний для его составляющих (светлый цвет - светло-серый, темный цвет - темно серый)
- complement(цвет) - получает инвертированый цвет
- fade-out(альфа-цвет,.0-1.прозрачность) - получает цвет более прозрачный на указанное значение
- fade-in(альфа-цвет,.0-1.прозрачность) - получает цвет менее прозрачный на указанное значение
- adjust-hue(цвет,0-360 градусы) - получает цвет сдвигом шкалы цвета
- @each $перем in $список {стили с $перем} - цикл перечисления списка
- @for $перем from знач_нач through знач_кон {стили с $перем} - цикл изменение значения, где $step - шаг изменения
- if(условие,значение1,значение2) - возвращение значения в зависимости от условия
- @if(условие){} -
- @else-if(условие){} -
- @else{} -
- Складывание цвета - RGB(..)+RGB(..) или #123456+#123456 каждый цвет суммируется соответственно
- Вычисление размера - можно вычислять + - * / %, делить только на обычное число
LESS - модуль упрощенной записи стилей CSS из файлов *.less
- @имя:значение; - присвоение переменной любого значения и применение ее
свойство:@имя вместо значения, в строках 'строка {@имя}строк', объявленная переменная снаружи доступна везде, внутри селектора - только в селекторе - сел1{свойства1; сел2{свойства2} } - вложенность селектора2 в селектор1 - установка селектора(наследник) внутри фигурных скобок другого селектора(родителя), аналогично как расположены тэги в css:
сел1 сел2{..} - селектор1{&селектор2{свойства} - создание составных селекторов через вложенность (получаетселектор1-селектор2{...})
- селектор1{@media устр1{свойства}} - селектор снаружи media вставляется внутрь media для свойства: @media устр1{селектор1{свойства}}, допускается вложенность медиа, тогда дочерний обединяет устройства через and
- Миксины, примеси (подобие функции)
- .имя {стили} - именованый набор стилей для многоразового применения:
.имя() , для примеси можно применять и готовый селектор, тогда надо пропустить скобки () - .имя(@перем1,..) {стили с применением @перем1,..} - миксины с аргументами как именованый набор стилей для многоразового применения: , при передаче в набор аргументов переменной со списком после указывают три точки, строка применения предваряется
.имя(значен1,..) - .имя(@перем1 : знач1,..) {стили с применением @перем1,..} - Миксины с аргументами по умолчанию если аргумент не передается - применяется значение по умолчанию, строка применения
.имя(значен1,..) , в обявлении можно применить переменную @arguments - содержит набор всех аргументов - .имя() {стили} - Миксины можно использовать как справочник в виде объекта , применить
.имя[свойство]
- .имя {стили} - именованый набор стилей для многоразового применения:
- Вычисление размера - можно вычислять + - * / %, делить только на обычное число
- Складывание цвета - RGB(r1,g1,b1)+RGB(r2,g2,b2) == RGB(r1+r2,r1+g2,b1+b2) или #123456+#123456 каждый цвет суммируется соответственно, RGB(r,g,b)+c == RGB(r+c,g+c,b+c)
- Функции, можно вкладывать друг в друга
- lighten(цвет,N%) - получает цвет более светлый
- darken(цвет,N%) - получает цвет более темный
- desaturate(цвет,N%) - получает цвет менее насыщенный
- saturate(цвет,N%) - получает цвет более насыщенный
- spin(цвет,+-N%/N) - получает цвет со сдвинутым оттенком на градусы/проценты по цветовому колесу
- @import 'имя_файла'/'имя_файла.less' - добавление стилей из файла *.less, а css-файл добавляю расширение
STYLUS - модуль упрощенной записи стилей CSS из файлов *.styl, где использованы только отступы без скобок и тчк.зпт
- Способы применения
- npm i -g stylus - установка node-программы
- stylus input.styl output.css - выполнение компиляции
- stylus -w input.styl output.css - выполнение компиляции и постоянное слежение за изменениями
- имя=значение; - присвоение переменной любого значения (даже false) и применение ее
свойство имя вместо значения, часть{имя} - встраивение строки - &селектор или селектор&{свойства} - внедрение во вложенность селектора родителя, предваряющий & аналогичен простой вложенности, &-часть.сел{св-ва} создает много словного селектора (сел.родит-часть.сел)
- for имя in 1 2 3 или for имя in (1..3) - создание цикла, где перемення имя принимает значения массива: :nth-child({имя})...
- if условие (ниже) [else] - создание в миксине условного перехода где условие: переменная, перем is значение,
- Миксины, примеси (подобие функции)
- имя (ниже) стили - именованый набор стилей для многоразового применения:
имя , для примеси можно применять и готовый селектор, тогда надо пропустить скобки () - имя(перем1,..) (ниже) стили с применением перем1 - миксины с аргументами как именованый набор стилей для многоразового применения: , при передаче в набор аргументов переменной со списком после указывают три точки, строка применения предваряется
имя(значен1,..) - имя(перем1 = знач1,..) (ниже) стили с применением перем1,.. - Миксины с аргументами по умолчанию если аргумент не передается - применяется значение по умолчанию, строка применения
имя(значен1,..) - имя(перем1..) (ниже) вычисление с перем1,..return значение - Миксины с вычислением одного значения
- имя (ниже) стили - именованый набор стилей для многоразового применения:
grunt.js - система сборки приложений на JavaScript
Установка npm install grunt-cli -g консольная утилита для запуска в коммандной строке
Установкаnpm install grunt --save-dev , надо создать вручную скрипт Gruntfile.js для выполнения в node.js
Установка дополнительных модулейnpm install имя_модуля --save-dev , который добавляется в файл package.json
grunt - выполнение задачи default
grunt задача - выполнение указанной задачи
grunt задача:подзадача - выполнение указанной подзадачи
Установка
Установка дополнительных модулей
- module.exports = function(grunt){..} - единственная обертка ф-ии,которая содержит тело
grunt.initConfig(об); - модуль настройки получает об со свойствами-задачати- имя:знач - создание переменной для дальнейшего применения в шаблонах
- pkg: grunt.file.readJSON('package.json') - создание переменной pkg с содержимым файла package.json
concat :{options:об_настр, подзадача1:об,..} - задача объединяет js-файлы (требуется плагин grunt-contrib-concat)- src: файл/масс_файлов - массив файлов, применяя маски **/*.js, шаблоны <%=перемен%> для внедрения значений пепеменных
- dest: файл - результат слияния js-файлов
uglify :{подзадача1:об,..} - задача минифицирует js-файлы (требуется плагин grunt-contrib-uglify)- files:{'имя_результат':'имя_источник',..} - об со всети источниками и результатами
watch :{подзадача1:об,..} - задача постоянно следит за файлами и при их изменении выполняет задачи (требуется плагин grunt-contrib-watch)- files: файл/масс_файлов - файлы для слежения
- tasks: задача/масс_задач - задачи выполняеме при обнаружении изменений
connect :{подзадача1:{options:об},..} - задача создание статических серверов (требуется плагин grunt-contrib-connect )- base:'путь'/масс_путей - путь для загрузки файлов
- port:N - установка порта
- hostname:'адрес' - имя/ip-адрес сервера, по ум - localhost
- protokol:'' - установка протокола, при необходимости изменить
- key:'',cert:'',ca:'' - данные для https
imagemin :{подзадача1:об,..} - задача минификация изображений (требуется плагин grunt-contrib-imagemin)- options: {optimizationLevel:0-7 ,..} - установка порта, путь для загрузки файлов
- files:{'имя_результат1':'имя_источник1',..} - сокращенный способ записи перекопирования
- files:[{expand:true,cwd:'папка_источн',src:'имя_файла',dest:'папка_результ'},..] - расширенный способ записи перекопирования
csso :{подзадача1:об,..} - задача минификация CSS-стилей (требуется плагин grunt-contrib-csso)- options: {..} - установка порта, путь для загрузки файлов
- files:{'имя_результат1':'имя_источник1',..} - сокращенный способ записи перекопирования
- files:[{expand:true,cwd:'папка_источн',src:'имя_файла',dest:'папка_результ'},..] - расширенный способ записи перекопирования
jshint :{options:об_общ_настр,подзадача1:масс_файлов,..,подзадачаN:об,..} - задача проверка js-файлов (требуется плагин grunt-contrib-jshint)- options: об_настр - настройка текущего списка
- files:{src:масс_файлов} - список файлов
sass :{подзадача1:об,..} - задача компиляция sass-стилей (требуется плагин grunt-contrib-sass)- options: об_настр - настройка текущего списка
- files:{'имя_результат1':'имя_источник1',..} - сокращенная запись
- files:[{expand:true,cwd:'папка_источн',src:'имя_файла',dest:'папка_результ',ext:'расширение'},..] - расширенный способ записи преобразований
less :{подзадача1:об,..} - задача компиляция less-стилей (требуется плагин grunt-contrib-less)- options: об_настр - настройка текущего списка
- files:{'имя_результат1':'имя_источник1',..} - сокращенная запись
stilus :{подзадача1:об,..} - задача компиляция sass-стилей (требуется плагин grunt-contrib-stilus)- options: об_настр - настройка текущего списка
- files:{'имя_результат1':'имя_источник1',..} - сокращенная запись
- files:[{expand:true,cwd:'папка_источн',src:'имя_файла',dest:'папка_результ',ext:'расширение'},..] - расширенный способ записи преобразований
exec :{подзадача1:'комманда',..,подзадача1:об,..} - задача выполнение комманд в ОС (требуется плагин grunt-exec)- command/cmd:'комманда' - коммандная строка
removelogging :{подзадача1:об,..} - задача удаление из js-файла все вызовы console.log(..) (требуется плагин grunt-remove-logging)- src:файл/масс_файл - файлы источника
- dest:файл/масс_файл - файл результат
string-replace :{подзадача1:об,..} - задача поиск и замена подстрок в файлах (требуется плагин grunt-string-replace)- options:{replacements:[{pattern:'рег_выражен',replacement:'строка'},..]} - массив объектов замены
- files:{'имя_результат1':'имя_источник1',..} - сокращенная запись
- files:[{expand:true,cwd:'папка_источн',src:'имя_файла',dest:'папка_результ',ext:'расширение'},..] - расширенный способ записи преобразований
- grunt.loadNpmTasks('имя_плагина'); - загрузка плагина для выполнения задач из initConfig()
- grunt.registerTask('имя_задачи',масс_задач) - создание задачи объединяющей другие задачи из initConfig() для запуска grunt имя_задачи
- grunt.registerTask('default',масс_задач) - создание задачи объединяющей другие задачи из initConfig() для запуска grunt
- Дополнительные grunt-методы
- grunt.file.read('имя_файла') - получить текстовое содержимое файла
- grunt.file.readJSON('имя_файла.json') - получить содержимое json-файла и преобразовать в об
- grunt.config.get('свойство') - получить из об в initConfig значение указанного свойства
webpack - система сборки модулей на JavaScript, CSS
Установка npm install webpack webpack-cli -g/--save-dev , надо создать вручную скрипт webpack.config.js для выполнения в node.js (webpack-cli для работы в терминале, ключ --save-dev для инсталяции для текущего пакета, -g для установки глобально)
webpack [--mode development/production] - запуск модуля с настройками в webpack.config.js (по умолчанию ./src/js/index.js,*.js - набор js-файлов с первым index.js, ./dist/main.js - собранный один js-файл) [с режимом для разработки/продажи]
webpack-dev-server --port 8000 - запуск сервера и модуля с настройками в webpack.config.js
module.exports = {..}/[{..},{..},...] - единственный об, который содержит настройку одной сборки / массив нескольких настроек сборки, либо ф-я (для каки-либо вычислений) которая возвращает об настроекmode :'production' - режим долгий и оптимизированый (development - быстрый)context :'папка' - базовый путь для всех входных файловentry :'файл'/{'имя1':'файл1',..} - первый входной файл/набор исходных файлов (точка входа)output :об - выходной файл- filename:'имя.js'/'[name].js' - имя итогового файла/ подстановка имя1 из entry
- path:'путь' - полный путь для выходных файлов
- library:'имя'/'[name]' -
watch :true - установить слежение за исходными файлами и автоматически запускать пере-сборкуwatchOptions :об - настройка слежения- agregateTimeout:N - установить периодичность проверки изменений в мс (ум - 300)
devtool :null/'значение' - установить режим записи всех действий сборки- source-map - создание дополнительного файла имя.map для контроля за ошибками
- inline-source-map - сохранение информации в результирующем файле
plugins :масс_плагинов - подключение плагинов- new CleanWebpackPlugin() - плагин очистки итоговой папки перед сборкой (удаление всех файлов)
- new webpack.optimize.UglifyJsPlugin(об) - плагин минификации js-файлов
- new webpack.optimize.CommonsChunkPlugin(об) - плагин вычисляет общий программный код в входных скриптах и выносит его отдельно
- new MiniCssExtractPlugin({file:'имя-css'}) - плагин создания единого css-файла, подключается в module.rules.use
- new HtmlWebpackPlugin({template:'имя.html'}) - плагин для подключения в html-файл js и css, подключение автоматическое, по умолчанию index.html
module :об - дополнительные модулиrules :масс_об - загрузчики загружают не js-файлы {test: рег.выр., loader: 'лоадер'}- test:рег_выраж - фильтр для выбора файла по расширению: /\.js$/
- include:масс_путей - строки пути к файлам
- exclude:рег_выраж - фильтр для файлов исключаемых из выбора
- use:'имя_загр' - имя зарузчика сокращенное/полное: babel / babel-loader, typescript, coffeescript, css-loader, ts-loader, sass-loader, style-loader(online-вставка стилей в html)/{loader: 'babel-loader', options:{presets:['режим']}}
- use: [MiniCssExtractPlugin, 'css-loader', 'sass-loader'] - компиляция одного css-файла через обратную цепочку
- enforce: 'pre' - запуск лоадера перед всеми действиями
preloaders :масс_об - загрузчики, компиляторыpostloaders :масс_об - загрузчики, компиляторы
resolve :об - способ поиска модулей при require()- alias:{псевденим1:'путь1',..} - указать короткий псевдоним для длянного пути: require('псевденим1')
- root:масс_путей - корневая папка для модулей
- modulesDirectories:масс-папок - папки для поиска модулей: node_modules
- fallback: -
- extensions:масс_расширен - массив расширений файлов с точкой для поиска
- packageMains:масс_файлов - указать новую точку входа в приложение package.json
- packageAlias - указать новую точку входа в приложение package.json
- unsafeCache: -
resolveLoader - moduleTemplates:масс_масок_имен - указать маску для загрузчиков:'*-loader','*'
- extensions:масс_расширен - массив расширений файлов с точкой для поиска
devServer - запуск сервера- port:N - порт сервера
- contentBase:'путь' - путь по которому обслуживаются файлы сервера
- filename:'имя_файла' - файл открываемый на сервере
- open:true - открывает браузер с сервером
- port:N - порт сервера
- process.nev.NODE_ENV - получить node-переменную, которая может быть 'development' или 'production'
- перем=require('webpack') - подключение локального модуля webpack для использавания его методов: перем.метод...
gulp.js - система обработки ф-ов, сборки приложений на JavaScript, CSS, изображений
Установка основного модуля npm install -g gulp , надо создать вручную скрипт gulpfile.js для выполнения в node.js
Установка дополнительных модулейnpm install -g имя_модуля
gulp - запуск всего gulpfile.js и выполнение комманды по умолчанию gulp.task('default'...)
gulp имя_задачи - запуск gulpfile.js и выполнение только комманды gulp.task('имя_задачи'...)
gulp.watch(масс_имен_ф-ов,[об_настр],масс_заданий) - постоянное слежение (не завершает скрипт) за изменением файлов, при их изменении - выполняются задания (gulp.series() / gulp.parallel() ), возвращает watcher
watcher.on('событие',function(e){..}) - асинхронное выполнение ф-ии при наступлении какого-то события с каким-то файлом, e.type - имя события (added, changed, deleted, renamed, unlink), e.path - путь + имя файла
gulp.task('default',массив_заданий) - последняя строка запускает массив всех заданий
Установка дополнительных модулей
- var gulp = require('gulp'); - подключение основного модуля gulp
- var имя = require('gulp-модуль'); - подключение gulp-плагина для обработки файлов
- gulp.task('имя_задания'[,массив_заданий],function([аргументы]){return поток_файлов}) - создание одного завершенного задания с именем, если имя задания не указано а ф-я именована то оно является именем задания [с предварительным выполнением массива заданий], созраняет его в памяти, [можно передавать аргументы]
- gulp.series('имя_задания1','имя_задания2',..[ф-я(){..}]) - выполнение последовательно заданий [и после запуск ф-ии]
- gulp.parallel('имя_задания1','имя_задания2',..[ф-я(){..}]) - выполнение параллельно заданий
- gulp.lastRun('имя_задачи') - дата последнего запуска задачи
gulp.src(масс_имен_ф-ов,[об_настр]).pipe(действия1).pipe(действия2)... - создание потока файлов (или по шаблону применяя: /**/*.* ,{вар1,вар2}-варианты, '!путь/файлы'-игнорирование файлов в первых значениях массива) указанных в массиве и выполнение над ними действий указанных в pipe()- об_настр:
- read:false - отказ от считывания тела ф-ов, только их аттрибуты
- since:об_даты - выбор файлов только созданные с указанной даты (срабатывает при втором запуске)
- buffer:false - отказ от считывания тела ф-ов в буффер, он счивтывается потоком stream
- base:'путь' - на время выполнения устанавливает не переносимый путь
- действия над файлами в цепочке .pipe(действия)
- gulp.dest('путь'/ф-я(об_файл)) - (пере)запись файлов в указанную папку или фычисленную по ф-ии
- less() - (код получен less=require('gulp-less') ) преобразует less-шаблон в css-файл
- stylus() - (код получен stylus=require('gulp-stylus') ) преобразует stylus-шаблон в css-файл
- mincss() - (код получен mincss=require('gulp-csso') ) минифицирует css-файлы
- imagemin({optimisationLevel:N}) - (код получен imagemin=require('gulp-imagemin') ) минифицирует файлы изображений
- concat('имя_файла') - объединение всех ф-ов в один js / css (код получен concat=require('gulp-concat') )
- minifyHtml() - минификация HTML-файлов (код получен minifyHtml=require('gulp-minify-html') )
- zip('имя.zip') - архивация потока в zip-файл (код получен zip=require('gulp-zip') )
- debug([{title:'текст'}]) - отображение имен файлов [с указанием указанного текста] (код получен debug=require('gulp-debug') )
- del(массив_путей) - удаление файлов из указанных путей (код получен del=require('del') )
- uglify() - сжатие js-скриптов (код получен uglify=require('gulp-uglify') )
- sftp({host:'серв',user:'логин',pass:'пароль'}) - копирование ф-ов на FTP-сервер (код получен sftp=require('gulp-sftp') )
- autoprefixer() - добавление в стилях все варианты префиксов -webkit,-moz,-o,-ms(код получен autoprefixer=require('gulp-autoprefixer') )
- mocha() - запуск js-тестов (код получен mocha=require('gulp-mocha') )
- install({production:true}) - инсталяция, применяют для package.json (код получен install=require('gulp-install') )
- sourcemaps .init()/.write(['путь']) - ведет журнал изменений ф-ов в комментарии итоговых файлов [или в новом файле по указанному пути] (код получен sourcemaps=require('gulp-sourcemaps') )
- gulpIf(лог_знач,ф-я-обработчик1,[ф-я-обработчик2]) - внутри pipe() запускает обработчик1 при указанном условии [или обработчик2] (код получен gulpIf=require('gulp-gulpif') )
- newer('конечн_записи') - фильтр, сравнивает только даты модификации и пропускает новые ф-лы (код получен newer=require('gulp-newer') )
- changed('конечн_записи') - такой же фильтр по дате (код получен changed=require('gulp-changed') )
cached('имя_перем') - запоминает все файлы, при повторном проходе при watch() файлы с одинаковым телом не пускает (код получен cached=require('gulp-cached') )delete cached.caches.имя_перем['полный путь к файлу'] - удаление д-х о удаленном файле, это неоходимо делатьremember('имя_перем') - при concat() запоминает все файлы, при повторном проходе при watch() и src(..{since:..}) недостающие добавляет (код получен remember=require('gulp-remember') )remember.forget('имя_перем','полный путь к файлу') - удалить из памяти файл
.on('событие',function(e){..}) - действие при возникновении события, возвращает тот же поток ф-ов- error - ошибка в предыдущей pipe-функции
data - событие при получении файлов(кажтого в потоке), e - об_файл со всеми данными о файле- об_файл.contents - тело файла
- об_файл.cwd - базовая папка приложения
- об_файл.path - полный путь к файлу, состоит их base+relative
- об_файл.base - путь до звездочек
- об_файл.relative - замененные звездочки, сохраняется при команде dest
- об_файл.dirname - полный путь к файлу, но без файла
- об_файл.basename - полное имя файла
- об_файл.stem - имя файла без расширения
- об_файл.extname - расширение файла с последней точкой
Карта Google.Maps
- new google.maps.LatLng(широта, долгота) - об_место местоположения Google
- new google.maps.Map(об_элем, об_парам) - об_карт отображения CANVAS-карты в об_элем с параметрами об_парам:
- zoom: 15 - масштаб
- center: об_место - координаты установленные в центре карты
- mapTypeId:google.maps.MapTypeId.HYBRID - тип карты
- new google.maps.Marker(об_парам) - установка на карту маркера с параметрами об_парам:
- position: об_место - координаты маркера
- map:об_карт - привязка к карте через об_карт
- title:"текст" - текстовая подсказка на маркере
Ваши модули
Создание
Установка и настройка
С сайта http:// nodejs.org/#download копируется установщик
После установки создается консоль Node.js, позволяет вводить комманды в комм.строке:
После установки создается консоль Node.js, позволяет вводить комманды в комм.строке:
- node -h - отображение подсказки по выполняемым коммандам
- node -v - отображение версии Node.js
- node имя.js - запуск Node-модуля (комманда прекращается после Ctrl+C)
node имя.js & - запуск Node-модуля в фоновом режиме(комманда прекращается при выходе из Node или коммандой kill ID)- kill N-число - прекращение работы фонового Node-модуля по его идентификатору
- make uninstall - удаление Node.js для установки новой версии
node имя.js > имя1.txt - перенаправление вывода в файлnode - переход к REPL - движку JavaScript с приглашением ">", вводимое выражение после ENTER вычисляется и отображается результат- выражение - после нажатия ENTER выполняет выражение
- _ - подчеркивание обращается к результату предыдущего выражения
- var выражение - выражение вычисляется но результат выдает undefined
- ... выражение - точки применяют для визуальной эстетики,т.к.они игнорируются
- клавиша стрелки вверх/вниз - переход к предыдущим выражениям для корректировки и нового ввода
- клавиша Tab - завершает ввод строки
- .save путь/имя.js - сохранение всех введенных выражений в ф-л
- .break - переход к первой строке и удаление остальных
- .clear - удаление всех строк
- .help - просмотр всех доступных комманд
- .load путь/имя.js - загрузка и выполнение файла по-строчно
- Ctrl+C,Ctrl+C / Ctrl+D /
.exit - прекращение работы REPL
Сервисные утилиты для управления Node.js
nvm - модуль управления версиями Node.js из комм.строки (загрузить с https:// github.com/creationix/nvm)- nvm install v0.X.X - установка параллельной версии Node.js
- nvm run v0.X.X - перейти к установленной версии Node.js
- nvm ls - просмотр доступные версии Node.js
npm - модуль управления модулями для Node.js (загрузить с http:// npmjs.org)- npm [-g/--global] install имя_модуля[@ версия] - инсталляция модуля и автоматически дополнительных модулей [глобально]
- npm install/i -d - инсталляция модуля из папки модуля "имя_модуля" скопированого в "node_modules"
- npm install url-адрес - загрузка модуля непосредственно с сайта (github)
- npm uninstall/u имя_модуля - удаление модуля
- npm update [имя_модуля] - обновление всех/одного модуля
- npm [list/ls/la/ll] - получить список установленных пакетов
- npm help npm - открыть подсказку в виде справочника
- npm outdated [имя_модуля] - проверка устаревших модулей
- npm config list [-l] - просмотр настроек для npm [полная информация]
- npm config delete парам - удаление параметра настроек
- npm config set парам значен - установка значения параметра настроек
- npm config edit - открытие в редакторе файла конфигурации
- npm adduser - создание пользователя для публикации программы в npm (имя,пароль,email)
- npm publish - запуск программы (что находилось в папке) в публичное использование
- npm search контекст - поиск модуля в реестре npm-сообщества
- npm info имя_модуля - просмотр информации о модуле
npm init - запуск режима создания файла package.json (файл с об информацией о модуле) для установки в реестр npm- name:'имя' - имя пакета
- main:'путь' - путь и имя файла (для локального использования)
- description:'описание' - описание пакета
- version:'N.N.N' - версия
- author:{name:"имя",email:"почта"} - сведения об авторе
- contributors:[{name:"имя",email:"почта"},..] - сведения о спонсорах
- keywords:['слово',..] - термины для поиска
- maintainers:[{name:"имя",email:"почта"},..] - сведения кто выполняет поддержку
- bugs:{url:'адрес',..} - адреса для сообщения об ошибках
- license:"MIT" - лицензия
- directories - список создаваемых папок {имя:путь}
- repositories:{type:'git',url:'github-адрес'} - хранилище для получения пакета
- dependencies:{'имя':'[~]версия',...} - список связанных модулей с указанием версии [или не ниже]
- devDependencies:{'имя':'[~]версия',...} - список связанных модулей с указанием версии [или не ниже]
- engines:{'node':'=> версия',...} - применяемая версия node
- scripts:{'имя':'комманда',...} - запуск комманд коммандной строки
- files:['имя_файла',..] -
forever - модуль управления приложением для перезапуска при его падении- npm install forever -g - установка модуля
- Комманды
- [-w] start - запуск сценария [автоматический перезапуск после падения]
- stop - остановка сценария
- stopall - остановка всех сценариев запущенных через forever
- restart - перезапуск сценария
- restartall - перезапуск всех сценариев запущенных через forever
- cleanlogs - очистка всех журналов
- logs - список всех журналов forever
- list - список выполняемых сценариев forever
- config - вывод всех настроек
- set ключ значение - установка настройки ключа
- clear ключ - очистка значения ключа
- logs сценарий/индекс - закрытие дурнала для сценарий/индекс
- columns add столбец - добавляет столбец для вывода
- columns rm столбец - удаляет столбец для вывода
- columns set столбцы - добавляет все столбцы для вывода
- --help - просмотр всех комманд
- -a -
- -l имя_файла - указание журнала forever
- -o имя_файла - указание журнала вывода данных
- -e имя_файла - указание журнала ошибок
- -s / --silent - запуск сценария
- -v / --verbose - вывод д-х
- --sourceDir путь - указание исходного каталога
- forever комманды сценарий.js - запуск сценария
- Запуск из приложения
- require("forever") - создание об_forever
- new (об_forever.Monitor)("прилож.js",об_парам) - создание об_f для управления приложением через forever
- об_f.on("exit",this.callback) - обработчик при падении - перезапуск
- об_f.start() - запуск приложения через forever
ядро Node.js
- require('[путь]имя_модуля' / 'путь/имя_файла.js/.node/.json') - создание объекта модуля по его идентификатору
для выполнения каких-либо функций (.node - откомпилирован двоичная библиотека), поиск модулей:папка приложения,+node_modules,родитель_пути+node_modules
- require.resolve("имя_модуля") - находит модуль и возвращает его имя
- new Error(["Сообщение об ошибке"]) - создание об ошибки
- .code - код ошибки (EXDEV - ошибка fs)
- .message
- global - глобальное пространство имен (как в браузере - window) текущего процесса, но каждый загружаемый модуль имеет собственный контекст и
передают переменные и функции вызываемому об через префикс
exports. (синоним объекта модуля), либо единственная ф-ия передается module.exports process - текущий процесс, оболочка потоков ввода-вывода и преоразования ф-ий в асинхронные- .execPath - путь выполнения Node-приложения
- .version - версия Node
- .platform - платформа сервера
.stdin - стандартный поток ввода с клавиатуры (асинхр)- .resume() - запуск потока для выполнения ввода, будет генерировать события 'data'
- .pause() - остановка потока
- .on('data',ф-я(строка_данных)) - установка слушателя события ввода данных, ф-я получает данные в аргумент
- .pipe(поток_выв) - перенаправление вх потока к потоку вывода
.stdout - стандартный поток вывода на дисплей (асинхр)- .write('текст') - вывод в выходной поток
- Управление выводимым в поток текстом - запись ANSI-последовательностей :.write('код')
- \033[32m - переключить цвет текста: зеленый
- \033[39m - переключить цвет текста: по умолчанию
- .stderr - стандартный поток ошибок для записи (синхр), похож на stdout
- .memoryUsage() - получить инф о использ. Node памяти (.rss/.heapTotal/.heapUsed)
- .nextTick(ф-я) - установка ф-ии запускаемая в следующем цикле событий (запуск в асинхронном режиме), тот же эффект setTimeout(ф-я,0), но быстрее
- .env - доступ (получить/установить) к системным переменным окружения (linux: перем=значение, Windows: set перем=значение)
- .NODE_ENV - режим выполнения приложения (например строка "development")
- .PORT - порт
- .cwd() - путь к приложению
- .argv - массив аргументов у программы node.exe (с интексом [0] - сама программа node, с интексом [1] - имя запущенного приложения)
- .exit(N) - принудительное завершение приложения с кодом ошибки N
- exit - перед завершением процесса/программы и цикл событий завершен, передается код завершения (0-успешно)
- beforeExit -
- warning -
- message -
- rejectionHandled -
- uncaughtException - при появлении не обработанной ошибки, передается об_error
- SIGNALS -
- SIGINT - (Linux) при нажатии пользователем Ctrl+C для остановки процесса
- SIGTERM -
- SIGUSR1 - (Linux) при переходе к отладчику
- SIGWINCH - (Linux) при изменении размеров терминала (сбрасываются process.stdout.rows,process.stdout.columns, генерируется событие resize)
- SIGINT, SIGBREAK, SIGHUP и SIGWINCH - (Windows) сигналы
- __dirname - абсолютный путь запускаемого приложения (добавляют к относительному пути)
- __filename - абсолютный путь и имя запускаемого приложения
- Buffer - класс для управления хранилищем д-х (массив байтов - символов с кодировкой 0-255)
new Buffer(об_данных,[кодировка]) / (N) - создание об_B пространства для об_данных / пустой длиной N байт, кодировка для строк:- ascii - 7-битный ASCII
- utf8 - много-байтный юникод (ум)
- usc2 - 2-байтный юникод
- base64 - кодировка Base64
- hex - каждый байт как 2-х 16-ричных числа
- .length - количество байт
- .write(об_данных,[N-начало],[L-длина],[кодировка]) - запись д-х в готовую ячейку памяти
- .equals(буффер2) - возвращает true если значения двух буфферов одинаковы
- .compare(буффер2) - возвращает число сравнения для сортировки
- .copy(буффер2,[N_нач_б2],[N_нач_б1],[N_кон_б1]) - копирование байтов из текущего буффера в буффер2
- .slice([N_нач_б],[N_кон_б]) - создание нового буффера из байтов текущего буффера
- .fill(значение,[N_нач_б],[N_кон_б]) - заполнение текущего буффера значениями из переданных
- .writeInt16LE(N-число) - запись маленького числа
- .writeUInt32LE(N-число) - запись числа без знака
- .writeInt32BE(N-число) - запись числа в битах от старшего к младшему
- Buffer.byteLength(об_данных) - определяет длину об в байтовом формате(для заголовка Content-Length)
- Buffer.from(строка/массив из байтов) - создание буффера из данных
- Buffer.alloc(N, байт) - создание буффера выделением памяти, с заполнением
- Buffer.allocUnsafe() - создание буффера
- об_t = setTimeout(ф-я,N-время_мс,[арг1,арг2,..]) / clearTimeout(об_t) - установка в очередь/отмена функции на выполнение через N мс, об_t.ref(), об_t.unref(), при 0мс выполняется раньше setImmediate, но после process.nextTick
- об_t = setInterval(ф-я,N-время_мс,[арг1,арг2,..]) / clearInterval(об_t) - установка в очередь/отмена функции на выполнение через N мс
- об_t = setImmediate(ф-я,[арг1,арг2,..]) / clearImmediate(об_t) - установка в очередь/отмена функции на выполнение (аналог setTimeout(ф-я,0))
- .log/info('текст [формат-%s%d%t%j]',знач1,знач2,..) - запись сообщения на консоль [с ипользованием формата] (реализовано: process.stdout.write() вывод отформатированых д-х )
- .warn() - запись на консоль
- .dir() - запись на консоль объекта, аналог JSON.stringify()
- .error() - запись на консоль
- .time("имя") - установка именованой точки отсчета времени
- .timeEnd("имя") - отобразить отсчитанное время
- .trace() - отобразить трассу стэка (точки строк выполнения программы в каждой ф-ии - полезно при ошибках)
Модули связи, сокетов
-
http - Модуль для создания сетевого соединения по протоколу http:\\
require('http') - получение об_httpСоздание сервера соединений
.createServer(ф-я_удач(об_соощ,об_ответ)) - установка в соединении фукнцию-слушатель (тип - requestListener), получающую 2 аргумента:1-об-т полученного соощения,1-об-т для подготовки ответа- об_соощ - (тип - http.ServerRequest поток чтения) для анализа запроса (браузер может сам отправлять дополнительные запросы)
- .url - строка запроса (без протокола,домена,порта) полученная от клиента
- .method - строка метода полученного запроса от клиента ("POST/GET/DELETE/PUT")
- .headers - об заголовков и значений полученные от клиента
- .setEncoding("кодировка") - установка кодировки для получаемых д-х (ascii или utf8-строка)
- .on("data",ф-я_удач(об_д-х)) - POST-запрос обработчик при прочтении из запроса порции д-х, где об_д-х (ум-типа Buffer)
- .on("end",ф-я_удач()) - POST-запрос обработчик при прочтении из запроса всех д-х
об_ответ - (тип - http.ServerResponse поток записи) для подготовки ответа на запрос- .setHeader("заголовок","значен") - подготовка заголовка ответа (для передачи потока)
- "Set-Cookie","имя=значение[; Expires=дата]" - установка у клиента значения cookie [и срок хранения] (применяют для хранения состояния клиентов)
- .getHeader("заголовок") - получить значение заголовка уже подготовленного для ответа
- .removeHeader("заголовок") - удаление заголовка уже подготовленного для ответа
- .statusCode=N - подготовка заголовка ответа (ум-200)
- writeHead(код_отв,["текст_кода_ответа"], об_заголовков) - запись кода статуса ответа (200-успех) и всех заголовков: {"заголов1":"знач1",..}
- 'content-type':'text/plain' - установка MIME-тип текстового сообщения
- 'content-length':'123' - длина д-х в байтах (необзодимо при передаче файла)
- 'connection':'keep-alive' - сообщение о состоянии подключения
- 'accept':'*/*' -
- .write(об_данных,[кодиров]) - отправка очередного соощения, с кодировкой (ум-utf8)
- .end(об_данных,[кодиров]) - передача завершающего ответа, с кодировкой (ум-utf8)
- globalAgent - массив обслуживаемых сокетов (ум-5), количество можно изменить: agent.maxSockets
- .setHeader("заголовок","значен") - подготовка заголовка ответа (для передачи потока)
- об_соощ - (тип - http.ServerRequest поток чтения) для анализа запроса (браузер может сам отправлять дополнительные запросы)
.on("request",ф-я_удач(об_соощ,об_ответ)) - обработчик при получении запроса (при createServer()-нет обработчика ), где ф-я_удач(об_соощ,об_ответ)- .listen(N-порт,["адрес"],[ф-я_связи]) - настройка номера порта для прослушивания (ум - :80),[адрес: для местной сети обычно - 127.0.0.1/localhost] [в момент связи выполняется ф-я]
- .listen('путь_обмена'/об_сокет,[ф-я_связи]) - (для Unix-звязи одной системы) настройка пути для обмена информацией
.close() - остановка сервера, генерирует событие close.listening - true/false проверка возможности обработки запросов (не остановлен).maxHeadersCount - установить/определить количества пощучаемых заголовков (0 - без ограничений)- .request({host:'домен',port:'N-порт',path:'путь+запрос',method:'GET'},ф-я_успех(об_соощ,об_ответ)).end() - Node-запрос на сервер (подобно браузеру) и его завершение
.request({socketPath:'путь_обмена',path:'путь+запрос',method:'GET'},ф-я_успех(об_соощ,об_ответ)) - Node-запрос на сервер по Unix-связи через указанный путь- об_соощ - для анализа запроса (браузер может сам отправлять дополнительные запросы)
- .statusCode - получить статус ответа от сервера
- .headers - об заголовнов ответа
- .setEncoding("кодировка") - изменение кодировки полученного ответа
- data - обработчик при получении д-х, ф-я(об_д-х)
- об_ответ - подготовка ответа
- .write(об_данных,[кодиров]) - отправка очередного соощения (ум-utf8)
- .end(об_данных,[кодиров]) - передача завершающего ответа (ум-utf8)
- error - обработчик при ошибке отправки д-х, ф-я(об_ошиб): об_ошиб.message - текст ошибки
- об_соощ - для анализа запроса (браузер может сам отправлять дополнительные запросы)
- .get({host:'домен',port:'N-порт',path:'путь+запрос'},ф-я_успех(об_соощ,об_ответ)) - Node-запрос на сервер методом GET (подобно браузеру) и получение ответа
Создание клиента соединения с другим сервером
-
http2 - Модуль для создания сетевого соединения по протоколу http:\\
require('http2') - получение об_http -
request - Модуль для создания простого клиентского соединения по протоколу http:\\
require('request') - получение об_req (загрузка npm install request)Создание клиента соединения
.request({uri:'адрес запроса'},ф-я_успех(err,об_соощ,об_д-х)) - запрос на сервер- об_соощ - для анализа запроса
- .statusCode - получить статус ответа от сервера
- .headers - об заголовков ответа
- .setEncoding("кодировка") - изменение кодировки полученного ответа
- об_соощ - для анализа запроса
-
https - Модуль для создания защищенного сетевого соединения по протоколу https:\\
require('http') - получение об_httpsСоздание сервера соединений
.createServer(об_парам,ф-я_удач(об_соощ,об_ответ)) - установка в соединении фукнцию-слушатель (тип - requestListener), получающую 2 аргумента:1-об-т полученного соощения,1-об-т для подготовки ответаоб_парам - об для шифрования связи- key:"ключ" - данные открытого ключа, считываются с файла site.key
- cert:"сертификат" - данные сертификата, считываются с файла site.crt или
- pfx:"сертификат" - данные ключа и сертификата, считываются с файла site.pfx
об_соощ - (тип - http.ServerRequest поток чтения) для анализа запроса (браузер может сам отправлять дополнительные запросы)- .url - строка запроса (без протокола,домена,порта) полученная от клиента
- .headers - об заголовков и значений полученные от клиента
об_ответ - (тип - http.ServerResponse поток записи) для подготовки ответа на запрос- writeHead(код_отв,["текст_кода_ответа"], об_заголовков) - запись кода статуса ответа (200-успех) и всех заголовков: {"заголов1":"знач1",..}
- 'content-type':'text/plain' - установка MIME-тип текстового сообщения
- 'content-length':'123' - длина д-х в байтах (необходимо при передаче файла)
- 'connection':'keep-alive' - сообщение о состоянии подключения
- 'accept':'*/*' -
.write(об_данных,[кодиров(ум-utf8)]) - отправка очередного соощения.end(об_данных,[кодиров(ум-utf8)]) - передача завершающего ответа- .setHeader("заголовок","значен") - подготовка заголовка ответа (для передачи потока)
- .statusCode=N - подготовка заголовка ответа (для передачи потока)
- globalAgent - массив обслуживаемых сокетов (ум-5), количество можно изменить: agent.maxSockets
- writeHead(код_отв,["текст_кода_ответа"], об_заголовков) - запись кода статуса ответа (200-успех) и всех заголовков: {"заголов1":"знач1",..}
.on("request",ф-я_удач(об_соощ,об_ответ)) - обработчик при получении запроса.listen(N-порт,[ф-я_связи()]) - настройка номера порта для прослушивания(ум-443), [в момент связи выполняется ф-я]
Создание клиента соединения
.request({host:'домен',port:'N-порт',path:'путь+запрос',method:'GET'},ф-я_успех(об_соощ,об_ответ)).end() - Node-запрос на сервер (подобно браузеру) и его завершение.request({socketPath:'путь_обмена',path:'путь+запрос',method:'GET'},ф-я_успех(об_соощ,об_ответ)) - Node-запрос на сервер по Unix-связи через указанный путь- об_соощ - для анализа запроса (браузер может сам отправлять дополнительные запросы)
- .statusCode - получить статус ответа от сервера
- .headers - об заголовнов ответа
- .setEncoding("кодировка") - изменение кодировки полученного ответа
- data - обработчик при получении д-х, ф-я(об_д-х)
- об_ответ - об для подготовки ответа
- .write(об_данных,[кодиров(ум-utf8)]) - отправка очередного соощения
- .end(об_данных,[кодиров(ум-utf8)]) - передача завершающего ответа
- error - обработчик при ошибке отправки д-х, ф-я(об_ошиб): об_ошиб.message - текст ошибки
- об_соощ - для анализа запроса (браузер может сам отправлять дополнительные запросы)
.get('аддрес'/{host:'домен',port:'N-порт',path:'путь+запрос'},ф-я_успех(об_соощ,об_ответ)) - get-запрос на https-сервер (подобно браузеру), порт по ум - 443
-
net - Модуль для создания TCP-соединения (наиболее надежное)
require('net') - получение об_netСоздание сервера соединений
.createServer(ф-я_удач(об_соед),[лог_не_закр]) - установка в соединении фукнцию-слушатель получающую об-т полученного соединенияоб_соед - для анализа запроса- .setEncoding("кодировка") - установка полученного буффера д-х в строку с указанной кодировкой
- .on("data", ф-я(об_д-х)) - обработчик при каждом получении д-х (по ум - в формате Buffer), ф-я(об_д-х)
- once("data", ф-я(об_д-х)) - одноразовый обработчик при получении д-х (по ум - в формате Buffer), ф-я(об_д-х)
- close - обработчик при обрыве сеанса связи (клиент отключил связь не корректно)
- end - обработчик при закрытии сокета клиентом (метод .end())
- error - обработчик при ошибках, ф-я(об_err)
- write(об_д-х) - передача д-х клиенту сервера в виде буффера
- end(об_д-х) - принудительное завершение связи сервера (может выполняется автоматически)
- remoteAddress - IP-адрес клиента
- remotePort - порт клиента
- лог_не_закр - установка признака не завершать связь при завершении связи клиента
- .listen(N-порт,[ф-я_связи]) - настройка номера порта для прослушивания, [в момент связи выполняется ф-я]
- .readable - возвращает true если доступен для чтения
- .writable - возвращает true если доступен для записи
Создание клиента соединения (можно применить утилиты TCP-клиента: netcat хост порт, telnet хост порт)
- об_net.connect({host:"домен",port:N-порт}) - синхронное соединение, получение об_клиент
new об_net.Socket() - создание клиентского TCP-соединения для Node-прилодения, об_клиент- об_клиент.connect('порт','домен',[ф-я]) - асинхронное соединение, при удаче ф-я(){}
- .setEncoding("кодировка") - установка клиенту перевод полусенного буффера д-х в строку с указанной кодировкой
- connect - обработчик при соединении, ф-я()
- data - обработчик при получении д-х (по ум - в формате Buffer), ф-я(об_д-х)
- close - обработчик при закрытии сеанса связи
- write(об_д-х) - передача д-х клиенту сервера в виде буффера
- end(об_д-х) - принудительное завершение связи сервера
-
dgram - Модуль для создания UDP-соединения (быстрое но не надежное соединение - трансляция онлайн)
require('dgram') - получение об_dgСоздание сервера соединений
.createSocket("udp4/udp6") - создание серверного UDP-соединения для Node-прилодения, об_сервер- message - получение сообщения, ф-я(об_д-х,об_информ)
- об_информ.address - адрес клиента
- об_информ.port - порт клиента
- .bind(N-порт) - установка номера порта для прослушивания (иначе будут прослушиваться все порты)
Создание клиента соединения
.createSocket("udp4/udp6") - создание клиентского UDP-соединения для Node-прилодения, об_клиент- .send(об_д-х,N-начало,L-длина,N-порт,'домен',ф-я) - соединение, при удаче ф-я(об_ошиб,об_д-х)
- message - получение сообщения, ф-я(об_д-х,об_информ)
-
Socket.IO (WebSocket) - Модуль для создания двунаправленного TCP-соединения, с восстановлением связи
Создание сервера соединений
- require('socket.io').listen(об_http_серв) - получение об_modul, третуется модуль "http" (загрузка npm install socket.io)
об_modul.configure(["режим работы"],ф-я()) - создание дополнительных настроек по аналогии Connect,Expressоб_modul.set("transports",[массив имен транспорта]) - установка приоритетов транспортного механизма (на случай не поддерживаемого браузера)- "websocket" - ум
- "flashsocket"
- "htmlfile" - ум
- "xhr-polling" - ум
- "jsonp-polling" - ум
- об_modul.set("log level",N) - установка уровня детализацци журнала (1- отключить вывод в журнал)
- об_modul.sockets - массив всех подключенных клинтов
- об_modul.sockets[ID] - выбор одного подключенного клинта с ID-идентификатором
- об_modul.sockets.emit("серв-клиен",об_д-х) - генерация не стандартного события "серв-клиен" для передачи всем клиентам об_д-х
- об_modul.sockets.send(об_д-х) - передача д-х всем абонентам сообщения message
об_modul.sockets.on( - обработчик стандартного события при связи с клиентом, где ф-я(об_socket), об_socket-для каждого клиента один"connection" ,ф-я_ответ)- об_socket.id - сгенерированный идентификатор связи с клиентом
об_socket.emit("серв-клиен",об_д-х,[ф-я(об_д-х)]) - генерация не стандартного события "серв-клиен" для передачи клиенту об_д-х [получение ответа]- об_socket.broadcast.emit("серв-клиен",об_д-х) - генерация события "серв-клиен" для передачи всем клиентам кроме текущего об_socket
об_socket.on("клиен-серв",ф-я(об_д-х)) - создание обработчика не стандартного события "клиен-серв", получение д-х от клиента- message - стандартное событие получения сообщения отправленного клиентом командой об_socket.send(об_д-х)
- disconnect - стандартное событие при разрыве связи с противоположной стороны
- об_socket.send(об_д-х) - передача д-х, абонент получит сообщение message
- об_socket.json.send(об_д-х) - передача д-х в формате json, абонент получит сообщение message
- об_socket.broadcast.send(об_д-х) - передача д-х всем клиентам кроме текущего, абонент получит сообщение message
- об_socket.broadcast.json.send(об_д-х) - передача д-х в формате json всем клиентам кроме текущего, абонент получит сообщение message
Создание клиента соединения в браузере
Ресурс для подключения https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.jsSCRIPT src="/socket.io/socket.io.js" SCRIPT - подключение библиотеки к браузеру (единая библиотека для сервера и клиента)- io.connect(["http://домен:порт"]) - создание об_socket подключения к серверу (ум - сервер html-страницы)
об_socket.on("серв-клиен",ф-я(об_д-х,[ф-я_ответ])) - создание обработчика не стандартного события "серв-клиен", получение д-х от сервера [с передачей серверу ответа - ф-я_ответ(об_д-х)]connect - событие при получении соединения с сервером- Дополнительные события соединения
- connecting - событие при выполнении попытки создать соединение
- connect_failed - событие при неудаче создать соединение
- error - событие при возникновении ошибки
- reconnect_failed - событие при неудаче восстановить разорванное соединение
- reconnect - событие при восстановлении разорванного соединения
- reconnecting - событие при попытке восстановления разорванного соединения
- message - стандартное событие получения сообщения отправленного командой об_socket.send(об_д-х)
- disconnect - стандартное событие при разрыве связи с противоположной стороны
об_socket.emit("клиен-серв",об_д-х,[ф-я(об_д-х)]) - генерация не стандартного события "клиен-серв" для передачи на сервер об_д-х [получение ответа]- об_socket.send(об_д-х) - передача д-х, абонент получит сообщение message
Модули связующие
-
Connect - Модуль связующий для обработки запросов от клиентов
require('connect') - получение об_connect (необходима загрузка npm install connect)об_connect() - создание об_прилож для обработки запросов (включают в http.createServer(об_прилож) ).use(["/часть_пути"],об_connect()/интерфейс/ф-я_удач(об_соощ,об_ответ,[next])) - добавление в об_прилож ф-ий обработки запросов нового_приложения(ветвление по маршруту)/готовой_ф-ии/пользовательского [запускается только при начале пути запроса со строки, но для ф-ии эта подстрока удаляется из req.url]- .ф-я(об_соощ,об_ответ,ф-я_next) - ф-я обратного вызова для "connect", где ф-я_next(err) - передает управление следующей связующей ф-ии или обработчика ошибки, если запрос не обработан - соощение с ошибкой 404
- .ф-я(err,об_соощ,об_ответ,ф-я_next) - ф-я обратного вызова обработки ошибок для "connect" запускаемое через ф-я_next(err) ("connect" сам определяет 4 аргумента), применяют для скрытия подробной информации об ошибке (защита от хакера)
require("morgan/logger")/.logger(формат,об_парам) - доп-интерфейс для записи в поток (ум-stdout) запросов- .token("перемен",ф-я(req){..return значен}) - новое значение для формата
format:"формат" - установка формата готового ("combined/common/short/tiny/dev") или пользователя- :remote-addr - IP-адрес клинта
- :date[формат] - текущая дата
- :method - метод запроса
- :url - строка запроса
- :http-version - версия HTTP
- :status - статус ответа
- :res[content-length] - запрошенный ф-л
- :user-agent - информация о раузере
- :response-time[digit] - время выполнения запроса
- :referer
- :remote-user
- :req[header]
- stream:об_поток - установка потока вывода
- skip:ф-я(){return true} - установка условия не отображения
-
- об_парам
format:"формат" - установка формата- stream:вых_поток - установка потока для печати журнала
- immediate:true - печать выполняется только при первом соединении клиента, после журнал не ведется
- buffer:N/true - мс интервал/по ум очищения буффера д-х для уменьшения количества обращения записи
- require("cookie-parser")/.cookieParser(["ключ"]) - принимает cookie, разбирает по переменным и записывает как свойства в об_соощ.cookies, значения j:.. - формат json, [создание ключа для сеанса, выполняется сверка д-х на наличие д-е.закодир_ключ - применяется для session(), тогда данные записываются в св-во об_соощ.signedCookies]
- require("cookie-Session")/.session(об_парам) - создание свойство запроса об_соощ.session для хранения простых д-х о клиенте (не Function,Date) до следующего запроса (ум - в ОП) для подготовки cookie ответа (только для подписанных cookie)
- об_парам настройки cookie
- keys:"имя_cookie_ф-ла" - установка имя для cookie_ф-ла (по ум - connect.sid)
- cookie:{maxAge: N, secure: true } - настройка cookie: срок хранения мс, защищенный протокол https:\\
- store:об_redis - хранение д-х в БД redis, где об_redis=new (require('connect-redis')(об_connect))({prefix:'sid'})
- работа с об_соощ.session
- об_соощ.session.имя - сохранение в св-ве любого значения
- об_соощ.session.save([callback]) - сохранение д-х (запускается автоматически при сеансе или вручную)
- об_соощ.session.destroy() - удаление д-х
- об_соощ.session.regenerate() -
- об_соощ.session.MemoryStore - хранилище д-х в памяти (используется по умолчанию)
- об_соощ.session.cookie - хранит глобальные настройки cookie
- .maxAge/.expires - срок хранения
- .httpOnly - доступ к д-м только серверу
- .path - путь ф-ла
- .domain - сайт
- .secure - признак защищенной связи https
- require("body-parser")/.bodyParser()[.ф-я()] - разбирает по переменным весь POST-запрос и записывает в свойство req.body, а файлы req.files [если ф-я отсутствует - выббирается автоматически по MIME-типу]
- json(об_парам) - разбирает д-е в формате JSON - с MIME-типом application/json
- urlencoded(об_парам) - разбирает д-е формы с MIME-типом x-www-form-urlencoded
- multipart(об_парам) - разбирает д-е формы с MIME-типом multipart/form-data
- require('method-override')/.methodOverride('X-HTTP-Method-Override') - установка заголовка XHR клиента для назначения метода req.method:DELETE,PUT,GET,POST
("_method" ) - установка переменной клиента для отправки скодом операции "..&_method=DELETE" (в форме - input hidden) прежний метод req.originalMethod - require("serve-favicon/")/.favicon("путь"+"favicon.ico") - установка значка сайта
- require("serve-index")("путь",об_парам) -
require("serve-static")/.static("путь",об_парам) - создание статического файл-сервера, определяет MIME-тип для заголовка ответа Content-Type, при запросе папки с index.html - он передается- acceptRanges -
- cacheControl -
- dotfiles -
- etag -
- extensions -
- fallthrough -
- index -
- lastModified -
- maxAge -
- redirect -
- setHeaders -
- require("vhost")/.vhost("домен",об_прилож1) - (виртуальный хостинг) перенаправляет запросы на домену для запуска приложеия, таких может быть несколько (применяют для избежания использования прокси-сервера - работает быстрее)
- basicAuth(д-е) - базовая аутентивикация (при открытии страницы браузер открывает стандартное окно с сам запрашивает имя и пароль)
- передаваемые д-е для проверки
- "имя","пароль" - сверка клиентского имени и пароля с переданным единым именем и паролем
- ф-я(пер_имя,пер_пароль) - ф-я проверяет полученные имя и пароль со своей базой
- ф-я(пер_имя,пер_пароль,ф-я_обр_вызов(err,об_user)) - асинхронная ф-я проверяет полученные имя и пароль с внешней базой
- csrf() - защита от атак межсайтовых запросов:создает уникальную строку сохраняя в req.session._csrf и сверяет со скрытым полем формы _csrf
- errorHandler(..) - ставят последним при ошибках возвращает клиенту трассу ошибок (применяют для разработки) (ум-в виде текста text/plain), при заголовке Accept="application/json" - формат json
- compress([об_парам]) - при заголовке запроса Accept-Encoding:gzip/deflate ответ сжимает указанным способом
- об_парам
- filter:ф-я(req) - разрешает сжимать д-е только при возврате ф-ии true
- level:N - степень сжатия (выполняется дольше)
- memLevel:N - степень быстродействия (использует много ОП)
- limit("N/Nkb/Nmb/Ngb") - ограничение длины запроса для исключения исчерпания памяти (ставят до bodyParser)
- query() - разбирает по переменным весь GET-запрос и записывает в свойство req.query
- directory("путь",[об_парам]) - на запрос пути в ответ формирует список папок и файлов в виде текста/JSON/HTML (зависит от заголовка Accept) (ставится перед static() )
- об_парам
- hidden:true - показывать скрытые ф-лы
- icons:true - отображать иконки ф-ов
- listen(N) - указание номера прослушивания порта
-
JSGI - Модуль связующий
Модули маршрутизаторов и прокси
-
Crossroads - Модуль маршрутизатора (фильтр пути запроса)
require('crossroads') - получение об_crossroads (необходима загрузка npm install crossroads)addRoute("шаблон",[ф-я(имя1,имя2,..)]) - создание об_слушателя с асинхронным обработчиком маршрута (анализ переменных шаблона) с шаблоном пути:- /строка/ - присутствие строки
- /{имя}/ - присутствие строки и передача переменной
- /:имя:/ - не обязательное присутствие строки и передача переменной
об_слушателя.matched - отдельная настройка маршрута - .add(ф-я(имя1,имя2,..)) - установка обработчика маршрута при его отсутствии
- .addOnce(..) -
- .has(..) -
- .remove[All](..) -
- parse(об_сообщ.url) - запуск анализатора строки для определения маршрута
-
http-proxy - Модуль перенаправления запроса на другой аддрес
require('http-proxy') - получение об_proxy (необходима загрузка npm install http-proxy)- createProxyServer([об_парам]) - создание слушателя прокси-сервера передающий все полученные запросы на другой вэб-сервер, можно передать в ws/web
- target:"протокол://домен:порт"или {host:..,port:..}
- forward
- agent
- ssl:{key:..,cert:..} - https
- ws:true - для WebSockets
- xfwd
- secure:true - перенаправление на https (порт 443)
- toProxy -
- prependPath
- ignorePath
- localAddress
- changeOrigin
- auth
- hostRewrite
- autoRewrite
- protocolRewrite
- headers:{..}
.createProxy() - создание об для изменения маршрута внутри вэб-серверра- web(req,res,об_парам,[ф-я_ошиб(об_ошиб)]) - перенаправление для http[s]
- ws(req,res,об_парам,[ф-я_ошиб(об_ошиб)]) - перенаправление для WebSocket
createServer([об_парам]) - создание слушателя прокси-сервера пер- об_парам
- путь1 : адрес+порт1 - перенаправляемый путь 1
- путь2 : адрес+порт2 - перенаправляемый путь 2
- .on("proxyReq",ф-я(proxyReq, req, res, options)) - обработчик при поступлении запроса для доп-настройки запроса на новый сервер(proxyReq.setHeader() )
- .on("upgrate",ф-я(req, socket, options)) - обработчик при получении новых д-х ws для доп-настройки запроса на новый сервер
- .on("error",ф-я(err,req, res)) - обработчик ошибок для отправки сообщения об ошибке
- .listen(N-порт,[ф-я_связи()]) - настройка номера порта для прослушивания, [в момент связи выполняется ф-я]
- .close() - закрытие указанного сервера
- createProxyServer([об_парам]) - создание слушателя прокси-сервера передающий все полученные запросы на другой вэб-сервер, можно передать в ws/web
Модули дополнительных функций
-
Модули для REPL
-
repl - Модуль для создания собственной версии REPL - интерпретатора Node.js
require('repl') - получение об_repl- .start([1/null],[2/null],[3/null],[4/null],[5/null]) - создание объекта модуля для выполнения каких-либо функций
- 1 - строка приглашения коммандной строки (ум - >)
- 2 - входной поток (ум - process.stdin)
- 3 - значенгие для eval (ум - asinc)
- 4 - признак возвращения первоначального глобального контекста или нового об (ум - false)
- 5 - отмена показа значений undefined (ум - false)
- .context - получение об_контекста нового пространства имен (создание св-в в файле заменяют ручной ввод)
- об_контекст.об_модуля - загрузка дополнительных модулей
-
colors - Модуль раскраски сообщений консоли (есть еще clicolor)
require('colors') - получение об_repl (необходима загрузка npm install)- "строка".ranbow - разноцветная строка при отображении на консоле
- "строка".bold - яркая строка при отображении на консоле
- .setTheme({имя1:'цвет1',имя2:'цвет2',..}) - создание именованых цветов ("строка".цвет1)
-
ansi - Модуль раскраски сообщений консоли
require('ansi') - получение об_ansi (необходима загрузка npm install ansi)- об_ansi(process.stdout) - создание об_вых_поток курсора (оболочка для вых потока)
- .bold() - установка режима жирного текста
- .resetBold() - отмена режима жирного текста
- .underline() - установка режима подчеркивания
- .resetUnderline() - отмена подчеркивания
- .reset() - очистка режима
- ???("#AABBFF") - установка цвета текста в формате CSS
- fg.цвет() - установка цвета текста (red/green/white/black/cyan/magenta/yellow..)
- bg.цвет() - установка цвета фона символа (red/green/white/black/cyan/magenta/yellow..)
- fg/bg.reset() - очистка цветового режима текста/фона
- .write("текст") - вывод текста в установленном режиме
- об_ansi(process.stdout) - создание об_вых_поток курсора (оболочка для вых потока)
-
Optimist - Модуль для просмотра ключей приложения
require('Optimist') - получение об (необходима загрузка npm install)- .argv - полусение об_ключей
- .o,.t,.. - получение коротких ключей
- .one,.two,.. - получение длинных ключей
- .argv - полусение об_ключей
-
-
Модули работы с файлами
-
FileSystem - Модуль для чтения-записи данных в файлах жесткого диска
require('fs') - получение об_fs.readFile('имя_ф','кодировка',ф-я(об_err,об_data)) - асинхронное чтение ф-ла по ф-ии принимающей аргументы,- об_err - код ошибки чтения (0 - без ошибки)
- об_data - ссылка буффера считанного ф-ла
- .readFileSync('имя_ф','кодировка') - чтение ф-ла, возвращает ссылку на буффер для присваивания переменной
- .writeFile('имя_ф',об_data,ф-я(об_err)) - асинхронное запись ф-ла
- .appendFile('имя_ф',об_data,ф-я(об_err)) - асинхронное до-запись в ф-л
.stat("путь/[файл]",ф-я(err,об_информ)) - получение информации о файле/каталоге- err.code - код ошибки ('ENOENT'-при отсутствии ф-ла)
- об_информ.isFile() - признак файла
- об_информ.isDirectory() - признак каталога
- об_информ.is[BlockDevice/CharacterDevice/SymbolicLink/FIFO/Socket]() - признак
- об_информ.size - размер файла (для заголовка 'Content-Length')
- об_информ.atime/.mtime/.ctime/.birthtime - время создания,модификации
- .statSync("путь/[файл]") - получение об_информ информации о файле/каталоге в синхронном режиме
.open("путь/имя_ф",флаг,[mode-знач],[ф-я(err,дескр)]) / .openSync("путь/имя_ф",флаг,[mode-знач]) - низкоуровневые открытие ф-ла для получения дескриптора.read(дескр,буфф,N_смеш_буфф,N_длина,N_смеш_файл,ф-я(err,Nбайт,буфф)) / .readSync(дескр,буфф,N_смеш_буфф,N_длина,N_смеш_файл) - низкоуровневые чтение байтов в буффер.write(дескр,буфф,N_смеш_буфф,N_длина,N_смеш_файл,ф-я(err,Nбайт,буфф)) / .writeSync(дескр,буфф,N_смеш_буфф,N_длина,N_смеш_файл) - низкоуровневые запись из буффера в файл.close(дескр,ф-я()) / .closeSync(дескр) - низкоуровневые закрытие ф-ла.createReadStream("путь/имя_ф",[об_парам]) - получить об_поток_чт чтения из ф-ла, об_парам = {highWaterMark: N} - размер порции д-х- об_поток_чт.on("open",ф-я) - обработчик ф-я() при открытии потока (можно привязать вх_птк к вых_птк: об_поток.pipe(об_отв_http))
- об_поток_чт.on("error",ф-я) - обработчик ф-я(err) при ошибке создания потока (отсутствует ф-л)
- об_поток_чт.on("data",ф-я) - обработчик ф-я(data) при получении д-х
- об_поток_чт.on("end",ф-я) - обработчик ф-я() при получении признака конца д-х
- об_поток_чт.on("close",ф-я) - обработчик ф-я() при завершении чтения
- об_поток_чт.pipe(об_поток_зап) - копирование ф-ла: подключение потока чтения к потоку записи (.pipe(res) - для файлового сервера,не требуется события "data","end")
.createWriteStream("путь/имя_ф",[об_парам]) - получить об_поток_зап записи в ф-л- об_парам
- flags:"a" - флаги (r/r+/w/w+/wx/wx+/a/a+/ax/ax+)
- encoding:"utf8"
- mode:"0666"
- fd :N - дескриптор файла, игнорируется параметр "путь/имя_ф"
- autoClose :true/false - авто-закрытие ф-ла после процесса
- Start :N - начало файла
- End:N - конец файла
- об_поток_зап.write(об_д-х,["кодировка"],[ф-я(об_ошиб)]) - запись в об_поток_зап об_д-х
- об_парам
.exists("имя_ф",ф-я(пер_bool)) - (устаревшая - не рекомендуется) асинхронная проверка наличия ф-ла, (0 - отсутствует).rename("имя_ф","нов_имя_ф",ф-я(err)) - асинхронное переименование ф-ла.unlink("имя_ф",ф-я(err)) - удаление ф-ла.readdir("путь/",ф-я(err,масс_file)) - получить массив имен ф-ов из каталога.readdirSync("путь/") - возвращает массив имен ф-ов из каталога.mkdir("путь/", [option]) - создание каталога, для создания подкаталогов ('./dir1/dir2') option = {recursive: true}.watchFile("имя_ф",ф-я(curr,prev)) - создание циклического опроса на изменение св-в ф-ла (проверка методом .stat()), ф-я выполняется при изменениях, curr-текущие параметры ,prev-предыдущие параметры (надежная ф-я но много ресурсов)- параметры ф-ла по методу .stat()
- .mtime - время модификации
.watch("имя_ф",[об_настр],ф-я(строк_команды,нов_имя)) - отслеживание изменений только имени ф-ла (но отличается от watchFile():в OS X - не следит за rename ).access("имя_ф/путь",флаги,ф-я(err)) - проверка разрешений по флагам- .promises - получение вида модуля fs с методами с Promise обработкой callback : func(..).then().catch(..), аналог promisify(func), где {promisify} = require('util')
-
fstream - Модуль для работы с нобором файлов (в папке) на высоком уровне
require('fstream') - получение об_fstream.Reader("путь"/об_настр) - создание потока чтения ф-ов из папки- .pipe(поток_записи) - привязка потоков
.Writer({path:"путь",[filter:ф-я],mode,sise,flags}) - создание потока записи ф-ов в папку [с фильтром файлов по ф-ии]- .write(дан-е) - запись
- .end() - завершение записи в поток
-
path - Модуль для поиска файлов
require('path') - получение об_path- normalize(путь) - преобразование относителного пути в абсолютный, вычисляет ..
- join("строка1","строка2",...) - объединяет строки слэшами
- basename(путь,[расширение]) - получить имя файла [без указанного расширения]
- delimiter - разделитель между путями в списках (windows - ;)
- dirname(путь) - получить путь без имени файла
- extname(путь) - получить расширение файла с точкой
- format({dir,root,base,name,ext}) - получение строки пути из об со строками
- parse(путь) - получение об {dir,root,base(name+ext),name,ext} со строками
- isAbsolute(путь) - проверка является ли путь абсолютным
- posix / win32 - применять методику на posix/win32
- relative(путь1,путь2) - получение относительного пути перехода от 1 к 2 с применением..
- resolve(путь,отн_путь1,отн_путь2,..) - вычисляет все пути и возвращает один
- sep - разделитель между папками для составления пути (windows - \, posix - /)
-
mime, mime/lite - Модуль работы с MIME-типами (https://wzrd.in/standalone/mime@latest)
require('mime'),require('mime/lite') - получение об (необходимо установить npm install mime)- .lookup("имя_файла")/.getType("имя_файла/расширение") - получить соответствующую строку MIME-типа по расширению (из справочника)
- .extension("MIME-тип")/getExtension("MIME-тип") - получить соответствующую строку расширения
- .define({"MIME-тип1":масс_расширен,...}) - добавление в справочник
- .load("файл.types") - загрузка файла-справочоника
-
-
Модули работы со строками
-
url - Модуль для текстового разбора адреса
require('url') - получение об_url.parse('url-адрес') - получение строки адреса- href - 'http://login:passw@www...com:1212/a/b?file=m&f=g#myhash' вся строка
- slashes - true
- auth - 'login:passw' имя и пароль
- host - 'www...com:1212' сайт с портом
- protocol - 'http:' протокол
- hostname - 'www...com' сайт
- port - '1212' порт
- path - '/a/b?file=m&f=g' путь со строкой поиска
- pathname - '/a/b' путь
- search - '?file=m&f=g' строка поиска
- query - {file:'m',f:'g'} об данных из строки поиска
- .format(об_url) - получить строку запроса из об
-
querystring - Модуль для преобразования строки url-запроса в объект и обратно
require('querystring') - получение об_querystring- .parse('пер1=знач1&пер2=знач2&..',[раздел_пар],[раздел_ключ],[об_настр]) - преобразование строки 'file=m', получить об {file:'m'} (одинаковые имена - массив значений),[предусмотреть разделитель пар (&), разделитель кючей (=)]
- .stringify(об,[раздел_пар],[раздел_ключ],[об_настр]) - преобразовние об {file:'m'}, получить строку 'file=m'
- .escape(строка) - кодировка строки
- .unescape(кодир_строка) - декодировка строки
-
htmlparser - Модуль разбора HTML-текста и создания json-описания
require('htmlparser') - получение об_htm (загрузка npm htmlparser)- new об_htm.RssHandler() - получение об_hnd
- new об_htm.Parser(об_hnd) - получение об_prs
- об_prs.parseComplete(об_д-х) -
- об_hnd.dom - массив специального типа
- об_hnd.dom.items - простой массив элементов
- Элемент имеет св-ва
- title -
- link -
-
formidable - Модуль разбора запроса с информацией форм
require('formidable') - получение об_f (загрузка npm install formidable)- new об_f.IncomingForm () - получение об_form
об_form.parse(req,[ф-я(err,fields,files)]) - начало разора [с единой ф-ей по окончании разбора]об_form.on('field', ф-я(field,value)) - обработчик при получении каждого имени и значении поляоб_form.on('file', ф-я(name,об_file)) - обработчик при получении каждого имени и значении файла- об_file
- size:N - размер ф-ла
- path:"путь+имя" - временный путь (.uploadDir) и имя тела ф-ла (ум - /tmp + имя_врем)
- name:имя_ф-ла - имя переданного ф-ла
- type:"MIME-тип" - MIME-тип ф-ла
- lastModifiedDate:дата - дата модификации ф-ла
- length: [Getter] -
- filename: [Getter] -
- mime: [Getter] -
об_form.on('end', ф-я()) - обработчик при окончании приема всех д-х.on('progress',ф-я(N-получено,N-всего)) - обработчик для индикации получения д-х- об_form.uploadDir - установка каталог сохранения полученных файлов (ум-/tmp)
-
-
Модули расширения возможностей JavaScript
-
underscore - Модуль дополнительных javascript-функций
require('underscore') - получение об_underscore (загрузить npm install).each(об/масс,ф-я(перем_знач,ключ/индекс,об/масс)) - выполнение ф-ии для каждого элемента массив/об.map(об/масс,ф-я(перем_знач,ключ/индекс,об/масс)) - получение массива из результатов ф-ии для каждого элемента массив/об.reduce[Right](об/масс,ф-я(результ,знач),нач_результ,ключ/индекс,об/масс) - получение результата из значений ф-ии для каждого элемента массив/об- is[тип](об) - проверка типа значения Array,Object,Arguments,Function,String,Number,Finite, Boolean,Date,RegExp,Error,NaN,Null,Undefined
- mixin({имя_функц1:ф-ия,..}) - добавление новых функций к об_underscore как метод
- noop() - пустая функция =function(){}
- random(min,max) - случайное целое число
- escape(строка) - преобразует спец-символы в escape-последавательность для HTML
- unescape(строка) - преобразует escape-последавательность в спец-символы
- result(об,'имя_свойств',[знач_умолч]) - получение св-ва у об [если его нет - значение по умолчанию]
- template(строка_шаблон),нов_функц(об) - создание новой функции-шаблонизатора, при передаче значений в об возвращает строку (шаблоны:<%= имя_перем %>,<% имя_перем %>,<%- имя_перем %>)
- chain(знач/масс/об)..функции..value() - создание начало цепочки, добавляя ф-ии модуля, value() - возвращает результат
-
readline - Модуль для по-строчного чтения потока
require('readline') - получение об_readlinecreateInterface({input:вх_птк,output:вых_птк,...}) создание нового об_интерфейса построчного чтения вх_птк и отправка в вых_птк.question("текст_вопрос",ф-я(об_ответ)) - вывод сообщения и ожидание строки ответв- .setPrompt("строка") - отображение строки приглашения ввода для приложения
- .prompt([true]) - ожидание ввода строки во входящий поток
- .close() - закрытие интепфейса, вызывает событие close
- .pause() - временно приостанавливает поток input, , вызывает событие pause
- .resume() - восстанавливает поток input после приостановки
- .write("строка"/null,[об]) - (для текстового терминала) запись строки/ кобинация клавиш
- .line - обработчик ф-я(строка) при получении вх_потоком конца строки (\n)
- .close - обработчик при закрытии
- поток.exit() / Ctrl+C / Ctrl+D - закрытие интерфейса
- об_readline.clearLine(вых_птк,-1/0/1) - (для текстового терминала) удаление всей/части строки от курсора
- об_readline.clearScreenDown(вых_птк) - (для текстового терминала) удаление строк ниже от курсора
- об_readline.cursorTo(вых_птк,N-x,N-y) - (для текстового терминала) смещает курсор на указанную координату
- об_readline.moveCursor(вых_птк,N-dx,N-dy) - (для текстового терминала) смещает курсор на указанное количество позиций
-
child_process - Модуль с библиотекой для дочерних процессов
require('child_process') - получение об.fork("Node-модуль",масс_аргументов,об_настр) - запуск Node-модуля в новом дочернем процессе, возвращает об_процесс- .send(об_сообщ) - передача в дочерний процесс д-х как событие message
- .on("message",ф-я(об_сообщ)) - установка обработчика события получения д-х от дочернего процесса
- .on("событ",ф-я(..)) - установка обработчика события дочернего процесса
- exit - событие при закрытии процесса и циклы событий и потоки завершены
- Node-модуль запущенный в дочернем процессе
- process.on("message",ф-я(об_сообщ)) - установка обработчика события принятия д-х
- process.send(об_сообщ) - передача в родительский процесс д-х как событие message
spawn("комманда",масс_аргументов,об_настр) - запуск новой оболочки (например - cmd.exe) в дочернем процессе без ф-ии, но возвращает об_процесс для связи- об_процесс.методы() - выполнение таких же методов process
- .stdin - входящий поток
- .stdout - выходящий поток, создает события data
- .stderr - поток ошидок, создает события data
- .on("событ",ф-я(..)) - установка обработчика события дочернего процесса
- exit - событие при закрытии процесса и циклы событий и потоки завершены
exec[Sync]("комманда",об_парам,[ф-я(об_ошиб,имя_stdout,имя_stderr)]) - запуск комманды в новом дочернем процессе, результат передается в ф-ию- об_парам
- timeout:N - мс максимальное время ожидания ответа
- cwd:'путь' - место запуска комманды
- detached:true - открепление дочернего процесса от родительского
- env:об - об с переменными среды
- stdio:'pipe/ignore/inherit'/[знач1,знач2,знач3]/'ipc'/поток - подключение stdin, stdout, stderr к родителю/не подключать/общение через сообщения/расшаривение потока
- encoding:'кодировка' - кодировка сообщений (ум - utf8)
- shell:'оболочка' - оболочка (ум для windows - cmd.exe)
- maxBuffer:N - максимальный размер буффера (ум - 200*1024), при превышении - завершение
execFile[Sync]("комманда/файл",масс_аргум,об_парам,ф-я(об_ошиб,stdout,stderr)) - запуск комманды/файла с аргументами в новом дочернем процессе, результат передается в ф-ию- Методы дочернего процесса
- connected - (true/false) показывает возможность отправлять/получать сообщения (после disconnect() - false)
- disconnect() - открепление дочернего от родительского
- kill([сигнал]) -
- pid - числовой идентификатор процесса
- send(об_данных,[сокет],,) - отправка сообщения дочернему (для node-модуля, должен быть установлен process.on('message',...))
-
util - Модуль дополнительных функций
require('util') - получение об- .is[тип](об) - проверка об является массивом(Array),регулярным выраж(RegExp),...
- .format(срока,арг1,...) - форматирование строки с подставляемыми аргументами, где в строке типы аргументов
- %s - строка
- %d - число целое или дробное
- %i - число целое
- %f - число дробное
- %% - символ процента
- .inspect(ob,true-показ_не_числа,null/N-число_глуб_об,true-цвета) - отображение об в консоле node
- .inherits(Класс,Класс1) - добавление в Класс наследованых ф-ий Класс1, где .super_ - ссылка на Класс1
- .promisify(ф-ия) - получение Promise-функции из простой - нов_ф(арг).then(ф-ия_успех).catch(ф-ия_неудача)
- .callbackify(ф-ия) - получение ф-ии обратного вызова из простой - нов_ф(ф-ия(ошиб,ответ))
-
Async - Модуль асинхронных шаблонов (для избежания вложенностей), содержит много ф-ий
require('asinc') - получение об (загрузка npm install).waterfall([ф-я1(..,ф-я_обр),ф-я2(..,ф-я_обр),..],ф-я_обр(err,результ)) - масс ф-ий (последний арг.-ф-я обр.вызова(err,..) где первый арг - об_ошиб) выполн. поочереди а значения передаются массивом в последнюю ф-ю.series(масс_функц,ф-я_обр(err,результ)) - ф-ии выполн. поочереди а значения передаются массивом в последнюю ф-ю.parallel({f1:ф-я1(..,ф-я_обр),f2:ф-я2(..,ф-я_обр),..},ф-я_обр(err,результ)) - ф-ии запускаются параллельно а значене передается в последнюю ф-ю обр вызова, возвнат - {f1:результ1, f2:результ2,..}.whilst(ф-я_пров,ф-я_итерац,ф-я_обр(err,результ)) - пока ф-я1 возвращает true повторяет ф-ю2, если возвращает false или ошибку - выполняет обработчик- .queue(..) - все функции запускаются параллельно, пока одна не завершит свою работу
.until(ф-я_пров,ф-я_итерац,ф-я_обр(err,результ)) - повторяет ф-ю1, если следующий вызов false или ошибку - выполняет следующую- .auto(..) - каждая ф-я выпоняется а результат передается следующей
- .apply(ф-я,арг1,...) - одна ф-я взаимодействует с другими
- .nextTick(ф-я) - запуск ф-ии на следующей итерации
-
nimble - Модуль асинхронных шаблонов (для избежания вложенностей), функций не много
require('nimble') - получение об (загрузка npm nimble)- .series([ф-я1(callback){..callback()},ф-я2(callback){..callback()},..]) - ф-ии выполн. поочереди последовательно
- .parallel([ф-я1(callback){..callback()},ф-я2(callback){..callback()},..]) - ф-ии выполн. одновременно, заканчиваются в разное время
-
Step - Модуль асинхронных шаблонов
require('step') - получение об_step (загрузка npm install)- об_step(ф-я1(..),ф-я2(..),..) - установка ф-ий, каждая по очереди получает об (this) для обработки
- this.group() - применение в об массива для перебора значений
- this.parallel() - применение нескольних значений обрабатываемых параллельно
-
Seq - Модуль асинхронных шаблоновзапускаемых в цепочке
require('seq') - получение об_seq (загрузка npm seq)- об_seq([]) - начало цепочки
- seq(ф-я) - функция запускается последовательно
- par(ф-я) - функция запускается параллельно
-
os - Модуль информации ОС
require('os') - получение об_os (необходима установка npm install os)- .EOL - символ конца строки (windows - \r\n)
- .cpus() - массив ядер процессора, .length - количество
- .platform() - строка платформы
- .type() - Имя ОС
- .release() - версия ОС
- .userInfo() - об с информацией о пользователе ОС
- .totalmem() - общий объем ОП
- .hostname() - имя хоста
- .homedir() - текущая папка пользователя в ОС
- .tmpdir() - папка для временных файлов
- .freemem() - размер свободной ОП
- .networkInterfaces() - информация о сети
-
dns - Модуль с определения доменного имени или IP-адреса
require('dns') - получение обlookup("домен",ф-я(об_ошиб,перем_IP)) - получение строки IP-адреса по имени домена (если небыло ошибок)reverse("IP-адрес",ф-я(об_ошиб,масс_домен)) - получение массива доменных имен по IP-адресуresolve("домен","A/NS/MX/..",ф-я(об_ошиб,масс_домен_серв)) - получение массива серверов доменных имен заданного типа для указанного домена
-
cluster - Модуль для выполнения node в многопроцессорном режиме
require('cluster') - получение об_cluster (необходима установка npm install cluster)- Для Express:
- об_cluster(об_серв) - подключение сервера (созданного http.createServer(..))
- .set("workers",N) - связующая настройка: запукск N процессов
- .use(об_cluster.reload()) - применение доп-функции: авто-перезапуск после модификации
- .listen(порт) - запуск прослушивания порта
- Вне Express:
- .fork() - запуск текущего приложения в подчиненном процессе (для другого ядра), получить об_проц
- .isMaster - возвращает true если текущий процесс главный а не запущен как дочерний (применяют для ветвления)
- .on('exit',ф-я(worker, code, signal) - обработчик при закрытии процесса, где worker - глобальный контекст, worker.process.pid - номер ядра
- об_проц.on('message',ф-я(об_сообщ)) - обработчик сообщений от подчиненных процессов
- об_проц.send(об_сообщ) - передача в подчиненный процесс сообщения
- Для подчиненного процесса
- process.on('message',ф-я(об_сообщ)) - обработчик любых сообщений
- http.Server(ф-я(req,res)).listen(N) - запуск сервера для прослушивания N-го порта
- process.send(об_сообщ) - передача в главный процесс сообщения
-
events - Модуль функций событий
require('events') - получение об- EventEmitter() - абстрактный класс управления событиями (об=new ..EventEmitter()-об можно добавить любому об для создания событий и обработчиков)
- Стандартные типы событий
- newListener -
- removeListener -
- data -
- close -
addListener("событие",ф-я(об_д-х)) - перехват события (синоним on(..))removeListener("событие",об_ф-я_обр) - отключение одного слушателя события- removeAllListener("событие") - отключение всех слушателей данного типа события
об.on('имя_соб',ф-я(аргум)) - (псевдоним addListener)установка обработчика событияon("событие",ф-я(об_д-х)) - перехват события ("data" - получение д-х,"close" - закрытие потока) и установка обработчика, при этом проверяется запрограммированое условие и запускается метод об.emit("имя_событ",[об_д-х])об.once('имя_соб',ф-я(аргум)) - установка единоразового обработчика события- setMaxListeners(N) - макс.количество обработчиков (ум-10), снять ограничение - 0
- getMaxListeners() - получить макс.количество обработчиков
- .setEncoding("кодировка") - изменение кодировки потока
- об.emit("имя_событ",[арг1,арг2,..]) - генерация указанного события [с передачей д-х]
- off("событие", ф-я) - отключение всех слушателей данного типа события
- .pause() - приостановка потока
- .resume() - возобновление потока
- вх_птк.pipe(вых_птк,[{end:false}]) - привязка потока чтения к потоку записи,[отмена закрытия вых_птк]
- определение назначения потока:readdble-чтение/writwable-запись
stream - потоки, наследуют EventEmitter
- Readable - чтение из потока
.read() - считывание порции данных .pause() - приостановка считывания .resume() - продолжение считывания .pipe() - передача данных в стрим записи .on('data', func) - событие получения порции д-х .on('close', func) - событие закрытия стрима .on('error', func) - событие ошибки - Writable - запись в поток
.write() - запись порции данных .end() - окончание записи данных .pause() - приостановка считывания .resume() - продолжение считывания .pipe() - передача данных в стрим записи .on('data', func) - событие получения порции д-х .on('close', func) - событие закрытия стрима .on('error', func) - событие ошибки - Duplex - двустороннее
- Transform - промежуточное преобразование потока (между чтен. и записи)
- pipeline(стр.чтен, [стр.транс1, ...], стр.зап, callback_err) - сокращенная форма создания цепочки из pipe
- Readable - чтение из потока
-
-
JQuery - Модуль библиотеки
require('jquery') - получение об (необходимо установить npm install jquery) -
Jsdom - Модуль создания браузерной оболочки windows (для тестирования)
require('jsdom') - получение об (необходимо установить npm install jsdom)
Модули безопасности
-
Модули шифрования
- Создание закрытого ключа и сертификата для клиента протокол https:// и порт по умолчанию 443
- Linux - пакет OpenSSL:
- openssl genrsa -des3 -out site.key 1024 - создание закрытого ключа site.key, создание пароля подписи сертификата
- openssl req -new -key site.key -out site.csr - создание запроса на сертификат site.csr, ввод пароля подписи сертификата, информации, имя хоста
- openssl rsa -in site.key -out site1.key - удаление из закрытого ключа потреность запроса кодовой фразы (иначе при каждом запуске сервера)
- site.key - установка для файла закрытого ключа чтения только администратору
- openssl x509 -req -days 365 -in site.csr -signkey site.key -out final.crt - создание файла сертификата final.crt (открытый ключ с информацией о владельце) с собственной подписью
require("https").createServer({key:"содержимое site.key",cert:"содержимое final.crt"},ф-я(req,res)).listen(443)
- Windows -
- Apple - библиотека Crypto
- Linux - пакет OpenSSL:
crypto - модуль для шифрование пароля
require('crypto') - создание об_crypto.createHash("алгоритм_кодир") - создание об_hash потока шифрования со способом кодирования ("sha1"/"sha512"/"sha256"/) Для проверки зашифровывают текст тем же алгоритмом и сравнивают с хранимым значением- .write("текст") - запись в поток шифрования вызывает событие readable
- .end() - завершение записи в поток
- .read() - считать текст при событии readable
- вх_поток.pipe(об_hash).pipe(вых_поток) - привязка потока шифрования в автоматическом режиме
- .update("соль"+"текст",['latin1/ascii/utf8']) - (ум-utf8) загрузка основного/дополнительного текста, для удлинения кодируемого текста (называют - соль), который сохраняется в потоке
- .digest('hex/latin1/base64') - вывод результата в 16-ричная/простая строка (ум-двоичный буффер)
- createCipher("алгоритм_кодир",пароль) - шифрование сертификата ('aes192')
- createDecipher("алгоритм_кодир",пароль) - дешифрование сертификата('aes192')
- createCipheriv("алгоритм_кодир",ключ,вектор) - шифрование('aes192')
- createDecipheriv("алгоритм_кодир",ключ,вектор) - дешифрование('aes192')
- createDiffieHellman() - обмен ключами
- createECDH() - обмен ключами
- createHmac("алгоритм_кодир",ключ) -
- createSign()
- getCiphers() - массив алгоритмов
- getCurves() - массив алгоритмов
- getHashes() - массив алгоритмов
- getDiffieHellman(группа) - создние об для обмена ключами (для тестирования)
- pbkdf2[Sync](текст,соль,N-операц,N-длина,"алгоритм_кодир",[ф-ия]) - ф-я шифрования [с обработчиком]
- privateEncrypt(ключ) - шифрование
- privateDecrypt(ключ) - дешифрование
- publicEncrypt(ключ) - шифрование
- publicDecrypt(ключ) - дешифрование
- randomBytes(N-длина,ф-я) - псевдослучайное строка длиной N
bcrypt - модуль для шифрования паролей
require('bcrypt') - создание об_bcrypt (npm install bcrypt).genSalt[Sync](N,[ф-я(err,перм_соль)]) - создания N-символьной соли (добавочной строки к паролю для шифрования).hash[Sync]("текст",N-длина/"соль",[ф-я(err,пер_закодир_пароль)]) - получение закодированой строки с солью.compare[Sync]("текст",пер_закодир_пароль,[ф-я(err,пер_лог)]) - проверка соответствия пароля
- Создание закрытого ключа и сертификата для клиента протокол https:// и порт по умолчанию 443
-
Модули аутонтификации и авторизации
- passport - основной связующий модуль
require('passport') - создать об_passp связующий модуль (npm install passport)об_passp.use(['имя_стратег',]об_стратегия) - установка алгоритма локальной стратегии ( способ проверки логина и пароля - полученные username,pasword)об_passp.serializeUser(ф-я(об_пользов,done){..done(null,об_пользов.id)}) - сохранение об_пользов в локальном хранилище для всего сеанса работы, возвращая только idоб_passp.deserializeUser(ф-я(id,done){логика поиска..done(err,об_пользов}) - получение об_пользов из локального хранилища по его idоб_passp.authenticate('local'/..,об_настр,ф-я) - twitter,facebook,google,linkedin,githubapp.use(require('express-session')({secret:"текст"})) - хранение об_пользов в локальном хранилищеapp.use(об_passp.initialize()) - инициализация об_passp в Expressapp.use(об_passp.session()) - применение хранение об_пользов в локальном хранилище
Настройка путей роутера Express
app.post("путь_login",ф-я_проверки_аутент(req, res, next)) - добавляется ф-я_проверки_аутент выполняет return next() если аутентификация пройденаapp.post("путь_регисрац",ф-я_добавления_пользов(req, res, next)) - добавляется ф-я_проверки_аутент выполняет return next() если аутентификация пройденаapp.get("путь_logout",ф-я_неудач_входа(req, res, next)) - добавляется ф-я_проверки_аутент выполняет return next() если аутентификация пройдена
- passport-local - модуль стратегии локальной аутонтификации (функция проверки - на локальном сервере)
require('passport-local').Strategy - создать об_passp_loc локальную стратегию связующий модуль (npm install passport-local)new об_passp_loc([об_парам],ф-я(username,pasword,done){..return done(err)/done(null,false,{message:"сообщ о неверном вводе"})/done(null,об_пользов)}) - установка параметров и локальной стратегии (внутренняя процедура проверки логина и пароля - полученные username,pasword), при необходимости -дополнительные д-е в об_парам {св1:зн1,св2:зн2,..username:имя_поля1,password:имя_поля2}- req.isAutentificated() - добавляется метод: возвращает true - аутентификация пройдена
- req.logIn(user,ф-я(err)) -
- req.user - добавляется об_пользов с информацией о пользователе
- res.redirect("путь") - перезапуск запроса сновым путем
- passport-twitter - модуль twitter-стратегии (хранение паролей на сайте twitter)
require('passport-twitter').Strategy - создать об_passp_tw стратегию twitter связующий модуль (npm install passport-twitter)- Необходимо разработчику зарегистрироваться на twitter для получения: 1-ключ, 2-секрет
об_passp.use(new об_passp_tw(об_парам_tw,ф-я(token,tokenSecret,profile,done){обработка token,tokenSecret,profile})) - установка стратегии twitter,ф-я сохраняет д-е польователя в локальной базе по profile.id, запускают process.nextTick(function() {}) для получения всех д-х- об_парам_tw:
- consumerKey:"ключ twitter" - сохраненный ключ разработчика twitter
- consumerSecret:"секрет twitter" - сохраненный секрет разработчика twitter
- callbackUrl:"адрес+путь-/auth/twitter/callback" - адрес+путь запроса к приложению для ответа twitter с данными пользователя
- об_passp.serializeUser(ф-я(об_пользов,done){..done(null,об_пользов,id)}) - созранение об_пользов в локальном хранилище для всего сеанса работы, оставляя только id
- об_passp.deserializeUser(ф-я(id,done){..) - получение об_пользов из локального хранилища по его id
- app.use(об_passp.initialize()) - инициализация об_passp
- app.use(об_passp.session()) - применение хранение об_пользов в локальном хранилище
- app.get("путь/admin",ф-я_проверки_аутент(req,res,next),ф-я(req,res)) - добавляется ф-я_проверки_аутент выполняет return next() если аутентификация пройдена
- app.get("/auth",ф-я(req,res)) - страница для перехода по ссылке на "/auth/twitter"
- app.get("/auth/twitter",об_passp.authenticate("twitter"),ф-я_удач(req,res)) - вызов страницы twitter
- app.get("/auth/twitter/callback",об_passp.authenticate("twitter",об_парам_ошиб),ф-я_удач(req,res)) - страница (по запросу от twitter) с пройденной аутентификацией
- passport - основной связующий модуль
-
Модули защиты от атак
- Инъекции javascript-кода в переменную (выполнение ф-ей eval("строка") )
- JSON.parse("строка") - читает только значение, а eval("строка") выполняет строку
- Очистка входных д-х текстовых полей от посторонних символов, слов
- node-mysql - модуль имеет метод client.escape экранирует текст удаляя инъекции
node-validator - модуль проверки текстового значения (npm install node-validator)- Методы
check("текст",["Сообщение об ошибке"]).is[тип]() - проверка типа д-х, при неправильном - ошибка- Типы
- Email - адрес электронной почты
- Int
- sanitize("текст",["Сообщение об ошибке"]).xss() - проверка текста на наличие атаки
express-validator - модуль проверки текстового значения для express (npm install express-validator)req.check("имя_перем",["Сообщение об ошибке"]).is[тип]() - апроверка типа д-х, при неправильном - ошибка- Типы
- Email - адрес электронной почты
- Int
- req.sanitize("имя_перем",["Сообщение об ошибке"]).xss() - проверка текста на наличие атаки
app.use(require("express-validator")) - внедрение связующего медода
Методы:
-
Модули использования "песочниц"
vm - модуль виртуальной машины (npm install vm)- require("vm") - создание об_vm виртуальной машины
- .createScript("javascript-текст",["имя_стэка"]) - создание об_скрипта, изолирование скрипта
- .createContext(об) - создание об_конт изолированого контекста (не имеющих родителей)
- .runInContext("javascript-текст",об_конт,["имя_стэка"]) - запуск скрипта внутри об_контексте
- .runInThisContext("javascript-текст",об) - запуск скрипта в контексте об (св-ва - переменные), скрипту доступны только эти переменные
- об_скрипта.runInNewContext(об) - запуск скрипта в контексте об (св-ва - переменные), скрипту доступны только эти переменные
- об_скрипта.runInContext(об_конт) - запуск скрипта в об_контексте
Модули баз данных
-
redis - быстрый сервер для хранения д-х в виде пар "ключ-значение"
require('redis') - получение об_redis (необходима установка npm install redis, hiredis).createClient([N-порт],["хост/адрес"],[об_парам]) - создание об_клиент (если клиент на серв: ум- порт:6379,хост:"127.0.0.1"),- об_парам (ум - ключи настроены на redis-сервера):
- parser - парсер ответа Redis-протокола:javascript (ум-hiredis)
- return_buffers - передача ответов как буфферы, не строки (ум-false)
- detect_buffers - при получении запроса в виде буффера, передача ответов начинается как буфферы(ум-false)
- socket_nodelay - вызов setNoDelay для TCP-потока (ум-true)
- no_ready_check - запрет отправки на сервер проверки готовности (ум-false)
- об_redis.print - стандартная ф-я вывода на консоль ошибки или ответа: (err,об_ответ)=>{}
- об_клиент.quit() - закрытие подключение клиента к серверу
- об_клиент.end() - принудительное закрытие подключения к серверу (если сервер завис)
- об_клиент.on("error",ф-я(err)) - обработчик при ошибке коздания клиента
- об_клиент.multi().команда1().команда2()...exec(ф-я(err,масс_ответ)) - объединение методов об_клиент в цепочку выполняемых отдельно, результаты передаются как эл массива в ф-ю обратного вызова последнего метода exec()
- об_клиент.select(N) - выбор N-й БД
- об_клиент.exists('ключ',ф-я(err,об_ответ)) - проверка существования ключа
- об_клиент.del('ключ',ф-я(err,об_ответ)) - удаление даных по ключу
- об_клиент.expire('ключ',N-сек) - удаление даных по ключу через N секуд
- Типы хранилищ
- Ключ-значение (аналог объекта)
- об_клиент.set('ключ','значен',[ф-я(err,об_ответ)]) / (масс_ключ_значен,ф-я) - сохранение одного строчного/числового/витового значения
- об_клиент.get('ключ',[ф-я(err,об_ответ)]) - получение одного строчного значения
- об_клиент.incr('ключ',ф-я(err,об_ответ)) - когда значение - число, увеличивает на 1
- об_клиент.decr('ключ',ф-я(err,об_ответ)) - когда значение - число, уменьшает на 1
- об_клиент.incrby('ключ',N,ф-я(err,об_ответ)) - когда значение - число, увеличивает на N
- об_клиент.decrby('ключ',N,ф-я(err,об_ответ)) - когда значение - число, уменьшает на N
- Хэш - таблица цифровых ключей ID привязанных к нескольким полям со значениями (подобие хранимых объектов)
- об_клиент.hset("знач_ID","имя_поля","значен",ф-я(err,об_ответ)) - запись в хэш (по которому индексируется), ф-я возвращает ошибку и подтверждение сервера
- об_клиент.hvals("знач_ID",ф-я(err,масс_ответ)) - получение ответа в виде массива об
- об_клиент.hgetall("знач_ID",ф-я(err,об_ответ)) - получить из хэша все поля одного знач_ID в виде об
- об_клиент.hmset("знач_ID",{"поле1":"знач1","поле2":"знач2",..},об_redis.print/ф-я(err,об_ответ)) - запись в хэш всех значений, ф-я возвращает ошибку или подтверждение сервера
- об_клиент.hmset("знач_ID","поле1","знач1","поле2","знач2",..,об_redis.print/ф-я(err,об_ответ)) - запись в хэш всех значений, ф-я возвращает ошибку или подтверждение сервера
- об_клиент.hget("знач_ID","поле",ф-я(err,об_ответ)) - получить из хэша одно значение поля
- об_клиент.hkey("знач_ID",ф-я(err,об_масс_полей)) - получить из хэша все имена полей в виде простого массива
- Нумерованный список "list" (аналог массива) - выборка для диапазона значений из отсортированого массива
- об_клиент.zadd("знач_ID",об_д-х1,об_д-х2,..) - запись в отсортированый набор
- об_клиент.sadd("знач_ID",об_д-х) - запись в отсортированый набор
- об_клиент.rpush("имя_списка",об_д-х, ф-я) / (["имя_списка","знач1","знач1"..],ф-я) - запись д-х в конец
- об_клиент.lpush("имя_списка",об_д-х, об_redis.print/ф-я(err,об_ответ)) - запись д-х в начало
- об_клиент.lpop("имя_списка",ф-я(err,об_ответ)) - извлечение первого элемента д-х с удалением из базы
- об_клиент.z[rev]range('ID',N1,N2,ф-я(err,result)) - массив из значений от N1-индекс до N2-индекс в отсотрированном наборе [по убыванию]
- об_клиент.lrange('имя_списка',N1,N2,ф-я(err,result)) - массив из значений от N1-индекс до N2-индекс (-1 - конец списка) в отсотрированном списке
- Не нумерованный набор "set"- выборка значений по уникальному значению
- об_клиент.sadd("знач_ID",об_д-х,об_redis.print/ф-я(err,об_ответ)) / (["имя_списка",знач1,знач2..],ф-я) - запись в не сортированый набор
- об_клиент.smembers("знач_ID",ф-я(err,об_ответ)) - получить списка значений об_д-х
- Не нумерованный набор "set"- выборка значений по уникальному значению
- об_клиент.zadd("знач_ID",об_д-х1,об_д-х2,..) - запись в отсортированый набор
- об_клиент.rpush("имя_списка",об_д-х) - запись д-х в конец
- об_клиент.lpush("имя_списка",об_д-х, об_redis.print/ф-я(err,об_ответ)) - запись д-х в начало
- об_клиент.lpop("имя_списка",ф-я(err,об_ответ)) - извлечение первого элемента д-х с удалением из базы
- об_клиент.z[rev]range('ID',N1,N2,ф-я(err,result)) - массив об_значений от N1-индекс до N2-индекс в отсотрированном наборе [по убыванию]
- об_клиент.lrange('имя_списка',N1,N2,ф-я(err,result)) - массив об_значений от N1-индекс до N2-индекс (-1 - конец списка) в отсотрированном списке
- об_клиент.llen('имя_списка',ф-я(err,result)) - получить количество записей
- Ключ-значение (аналог объекта)
- об_клиент.incr("знач_ID","имя_поля","строка") - добавление к значению поля хэша дополнительную строку
- об_клиент.hincrby("знач_ID","имя_поля",N) - запись в хэш в "имя_поля" значения увеличенное на N
- об_клиент.subscribe("знач_ID") - подписка на канал
- об_клиент.on("message",ф-я(перем_имя_канала,об_сообщ)) - получение соощения с канала
- об_клиент.publish("знач_ID",об_д-х) - сохранение в канале одного об_д-х
- об_клиент.unsubscribe("знач_ID") - отключение клиента от канала
-
redis-cli - утилита работы с redis в коммандной строке
(необходима установка ???? npm install mysql, драйвера БД: github.com/mongodb/node-mongodb-native)- redis-cli - запуск утилиты
- get ключ - получить значение по кючу
- hgetall ключ - получить все поля и значения по кючу
- quit - закрытие утилиты
-
MySQL - хранение д-х на сервере MySQL
require('mysql') - создание об_mysql (необходима установка npm install mysql, драйвера БД: github.com/mongodb/node-mongodb-native)об_mysql.createConnection({host:'имя_хост',user:'имя_польз',password:'пароль',database:'имя_БД') - создание об_БД соединения с сервером БД- об_БД.query("SQL-запрос ? ?",[масс_значен_??],ф-я(err)) - выполнение SQL-запроса не требующих получения д-х (CREATE,INSERT,DELETE,UPDATE)
- об_БД.query("SQL-запрос ? ?",[масс_значен_??],ф-я(err,rows)) - выполнение SQL-запроса c получением массива д-х rows (SELECT)
-
MongoDB - хранение д-х на самом сервере в виде пар "ключ-об_значение" в двоичном формате
require('mongodb') - создание об_mongodb (необходима установка npm install mongodb, драйвера БД: github.com/mongodb/node-mongodb-native)new об_mongodb.Server('имя_хост',порт,об_парам) - создание об_сервБД соединения с сервером БД по протоколу TCP (ум - 'localhost',27017)- об_парам :
- auto_reconnect:true - автоматическое переподключение при обрыве связи
- poolSize:N - количество соединений обслуживается параллельно
- new об_mongodb.ObjectID('строка кода') - конструктор для значения поля _id, сохраняется для каждой записи
- об_mongodb.MongoClient.connect("URL-аддрес[/имя_БД]",[об_парам],ф-я(err,об_клиент/об_БД)) - открытие соединения с сервером об_клиеннт или БД (если в аддресе указано имя БД), {safe:true} - ошибка при отсутствии табл
new об_клиеннт.Db('имя_БД',об_БД,[об_парам]) / =об_клиеннт.db('имя_БД') - создание новой/открытие БД и получение об_БД- .dropCollection("имя_табл",ф-я(err,об_ответа)) - удаление таблицы из БД
- .open(err,об_БД) - выполнение открытия БД
- .close() - закрытие БД
- .collection("имя_табл",[об_парам],ф-я(err,об_табл)) - создание об_таблицы только только при добавлении 1-й строки, {safe:true} - ошибка при отсутствии табл
.createCollection("имя_табл",[об_парам],ф-я(err,об_табл)) - создание пустой таблицы или подключиться к существующей, {safe:true} - ошибка при наличии табл.drop(ф-я(err,об_успех)]) - удаление всей таблицы из БД.remove(null/об_выборка,[об_парам],[ф-я(err,об_ответ)]) - удаление всех/выбранных документов таблицы- об_выборка :
- поле1:значен1 - фильтр выборки
- об_парам :
- safe:true/{w:N, timeout:N}/{fsync:true}/{defaulf:false} - безопасный режим
.insert(об_д-х/масс_об_д-х,{}/об_парам,[ф-я(err,масс_об_д-х)]) - вставка одного/массива об_д-х в таблицу, возврат массива об с добавленным _id- об_парам :
- safe:true/{w:N, timeout:N}/{fsync:true}/{defaulf:false} - безопасный режим
- keepGoing:true - продолжение работы после ошибки вставки
- serializeFunctions:true - функции в об_д-х сериализируются
.insertOne(об_д-х,{}/об_парам,[ф-я(err,результ_об_д-х)]) - вставка одного об_д-х в таблицу, возврат массива об с добавленным _id.insertMany(масс_об_д-х,{}/об_парам,[ф-я(err,результ_об_д-х)]) - вставка массива об_д-х в таблицу, возврат массива об с добавленным _id.find({}/об_запрос,[об_парам],[ф-я(err,об_ответ)]) - получить указатель на все док-ты запроса (.toArray(ф-я(err,масс_об_д-х))-получить массив из курсора)- Цепочки
- .skip(N) - из всей выборки пропустить первые N
- .limit(N) - из всей выборки выбрать первые N
- .batchSize(N)
- .comment('..') - комментарий
- .addCursorFlag('имя_флага',true) - установка флага (tailable/oplogReplay/noCursorTimeout/awaitData/awaitData/partial)
- .addQueryModifier('$orderby', об) - сортировка
- .max(N)
- .maxScan(N)
- .maxTimeMS(N)
- .min(N)
- .returnKey(N)
- .showRecordId(true)
- .snapshot(true)
- .sort([['имя_свойст', 1]]) - сортировка по свойству (1 возрастание,-1 убывание)
- .hint('a_1')
- .toArray(ф-я(err,масс_об_д-х)) - получение результата в виде массива
- .next(ф-я(err,д-е)) - получение результата
- .each(ф-я(err,об)) - выполнение ф-ии для каждого об выборки
- .findOne({}/об_запрос,[об_парам],[ф-я(err,об_д-х)]) - получить 1-й док-т запроса
- .findOneAndUpdate(об_запрос,об_модиф,[об_парам],[ф-я(err, result)]) - находит документ и изменяет его
- .findOneAndDelete(об_запрос,[об_парам],[ф-я()]) - находит документ и удаляет его
- .findOneAndReplace(об_запрос,[об_парам],[ф-я()]) - находит документы и удаляет их, возвращает удаленный
- .findAndRemove(об_запрос,[об_парам],[ф-я()]) - находит документы и удаляет их, возвращает удаленный
.findAndModify(об_запрос,[масс_полей_сортир],[об_парам],[ф-я()]) - находит док-т для последующих действий (remove или upsert), возвращает измененный/удаленный- limit:N - ограничение кол-ва найденных док-ов(ум без обраничений-0)
- sort:масс_индексов - масс соотв эл, используемый для сортировки
- fields:об - об для выбора полей {поле1:0/1, поле2:0/1}, где 1-вкл, 0-нет (ум-все 1), lj,добавляется идентификатор _id
- skip:N - выборка начинается с N+1 эл
- hint:об - об для указания индексов {"_id":1}
- explain:true - установка расширения запроса (ум-false)
- snapshot:true - установка выдачи информации о запросе (ум-false)
- timeout:true - применяет время действия курсора (ум-false)
- tailable:true - разрешает установить курсор на конец (ум-false)
- batchSize:N - установка парам batchSize для getMoreCommand() (ум-0)
- returnKey:true - установка возврата только индексного ключа (ум-false)
- maxScan:N - ограничение кол-ва сканируемых эл
- min:N - установка границ индексов
- max:N - установка границ индексов
- showDiskLoc:true - устанавливает показ диска с результатами (ум-false)
- comment:'строка' - установка комментария к запросу
- raw:true - установка выдачи результата как строкового буффера (ум-false)
- read:true - направление запроса на вспомогательный сервер (ум-false)
- new:true - (для findAndModify) добавляет документ при отсутствии
- remove:true - (для findAndModify) после нахождения документа удаляет
- имя_поля:значение - фильтр по значению поля
- об_парам :
- об_запрос :
.updateOne(об_запрос,об_модиф,[об_парам],[ф-я(err,об_ответ)]) - находит документ и заменяет/добавляет(если не находит) об_д-х.updateMany(об_запрос,об_модиф,[об_парам],[ф-я(err,об_ответ)]) - находит документ и заменяет/добавляет(если не находит) об_д-х.update(об_запрос,об_модиф,[об_парам],[ф-я(err,об_ответ)]) - находит документ и заменяет/добавляет(если не находит) об_д-х- $set:об_измен - получает об с полями {"имя_поля1":нов_знач1,..} имеющими новые значения
- $inc:N - увеличивает значение числовое поля на указаную величину
- $unset:"имя_поля" - удаление поля из об_д-х
- $push:{"имя_поля":знач} - добавляет одно значение к полю-массиву (при неоходимости преобразовывает поле в массив)
- $pushAll:{"имя_поля":[знач1,знач2..]} - добавляет нескольких значений к полю-массиву (при неоходимости преобразовывает поле в массив)
- $addToSet:{"имя_поля":знач} - добавляет одно значение к полю-массиву если поле - массив
- $pull:{"имя_поля":знач} - удаление значения из поля-массива
- $pullAll:{"имя_поля":[знач1,знач2..]} - удаление нескольких значений из поля-массива
- $rename:{"имя_поля":"нов_имя_поля"} - переименование поля
- $bit - выполнение по-разрядной операции имя_поля:значение - фильтр по значению поля
- safe:true/{w:N, timeout:N}/{fsync:true}/{defaulf:false} - безопасный режим
- upsert:true - при отсутствии документа выполняется вставка (ум-false)
- multi:true - обновнять все документы по указанному фильтру (ум-false)
- serializeFunctions:true - функции в об_д-х сериализируются (ум-false)
- об_модиф :
- об_парам :
- .deleteOne({}/об_запрос,[об_парам],[ф-я(err,об_д-х)]) - удалить 1-й док-т запроса
- .deleteMany({}/об_запрос,[об_парам],[ф-я(err,об_д-х)]) - удалить все док-ты запроса
- .bulkWrite(масс_об_алгоритм,[об_парам],[ф-я(err,об_д-х)]) - выполнение последовательности действий
- {insertOne:{document:об}} - добавить 1 об
- {insertMany:{document:масс_об}} - добавить несколько об
- {updateOne:{filter:об,update:об_изм,upsert:true}} - изменить 1 об
- {updateMany:{filter:об,update:об_изм,upsert:true}} - изменить много об
- {updateOne:{filter:об}} - удалить 1 об
- {updateOne:{filter:об}} - удалить много об
- {replaceOne:{filter:об,replacemant:об,upsert:true}} - замена 1 об
- .initializeOrderedBulkOp(). - сохранение последовательности действий в виде цепочек
- .insert(об) - добавление 1 об
- .find(об_поиск) - поиск выборки
- .upsert() - (после find())
- .deleteOne() - удаление 1 об (после find())
- .execute(ф-я(err,result)) - запуск цепочки и проверка результата
- new об_таблицы.bson_serializer.ObjectID("ID-строка") - создание новую строку и получить _id, передав строковое значение
-
Mongoose модуль для работы с базой MongoDB - хранение д-х с упрощенным управлением
require('mongoose') - создание об_mongoose (необходима установка npm install mongoose, драйвера БД: github.com/mongodb/node-mongodb-native)- об_mongoose.connect('mongodb://домен/имя_БД',[об_настр],[ф-ия(err)]) / об_связи = об_mongoose.createConnection() - подключение к БД (ум - 127.0.0.1)
- об_mongoose.connect('аддрес',[ф-ия(err)]).then(ф-ия_успех(),ф-ия_ошиб(err)) - подключение к БД (ум - 127.0.0.1)
- об_mongoose.disconnect() - закрытие БД
- об_mongoose.Types.ObjectId - класс уникального поля _id (указывают в структуре, с оператором new - генерирует новый)
- об_mongoose.connection.on("open",ф-я()) - обработчик при подключении к БД
new об_mongoose.Schema({имя_поля1:тип1,имя_поля2:тип2,..}) - создание об_структуры хранимых объектов- Тип поля - простое имя_типа/сложный в виде об:
- type:имя_типа - String/Number/Date/Boolean/Array/Buffer/Mixed/Object
- require:true/false - (для String) обязательное поле
- trim:true/false - (для String) удаляет крайние пробелы
- unique:true/false - исключает повторения
- default:значен - значение по умолчанию
- min/max:N-значен - ограничение числового поля
- match:RegExp-значене - значение должно соответствовать рег.выражению
- об_структуры - методы:
- .path('имя') -
- .set(ф-я) -
- .pre(ф-я) -
- .virtual('имя_поля').get(ф-я(){return знач}) - вычисляемое поле по ф-ии
- об_связи/об_mongoose.model("имя_табл",об_структуры) - создание об_табл(c методами драйвера mongoDB), которая создается только с 1-м элементом
об_связи/об_mongoose.model("имя_табл") - получить об_табл, созданную заранееnew об_табл() - создать об_строки - ссылку на новую строку- св-ва и методы об_строк
- об_строки.имя_поля1=знеч1 - присвоение новому полю значения / изменение значения
- об_строки.имя_поля1.remove() - удаление поля
- об_строки.save(ф-я(err)) - сохранение текущей строки в БД, с выполнением функции
- об_строки.remove() - удаление текущей строки из БД
- об_табл.find(об_запрос,[ф-я(err,масс_об_строк)]) - поиск строк, строчное значение может содержать рег.знач
- об_табл.findOne(об_запрос,ф-я(err,масс_об_строк)) - поиск строк
- об_табл.findOneAndUpdate(об_запрос,об_измен,ф-я(err,масс_об_строк)) - поиск строк
- об_табл.findById("значение _id",ф-я(err,об_строки)) - поиск одной строки по уникальному полю _id, нельзя добавлять цепочки
- об_табл.findByIdAndUpdate("значение _id",об_измен,ф-я(err,об_строки)) - поиск одной строки по уникальному полю _id, нельзя добавлять цепочки
- об_табл.update(об_запрос,об_измен_д-х,об_парам,ф-я(err,масс_об_строк)) - обновление строк
- об_табл.remove(об_запрос,ф-я(err,масс_об_строк)) - обновление строк
- об_табл.findOneAndRemove(об_запрос,ф-я(err,масс_об_строк)) - поиск строк
- об_табл.findByIdAndRemove("значение _id",ф-я(err,об_строки)) - поиск одной строки по уникальному полю _id, нельзя добавлять цепочки Цепочки
- .exec(ф-я(err,масс_об_строк)) - ф-я обработки в конце цепочки
- .where() -
- .and() -
- .or() -
- .limit(N) - выборка только первых N значений
- .sort('[-]имя_поля') - сортировка [по убыванию]
- .any() -
- .select('список_полей') - в выборку передаются выбранные поля
Модули шаблонов
JADE - шаблон HTML упрощенной записи со вставкой переменных JavaScript(входит в Express)- app.set("view engine","jade") - по умолчанию установка JADE обработчика шаблонов
- app.set("view options",об_парам) - запрет использование макета {layout:false}
- res.render("jade-шаблон",{арг1:знач1,арг2:знач2,..},ф-я(err,перем_html)) - получения HTML-текста с установленными в шаблон аргументами
- jade шаблон.jade - утилита быстрого преобразования шаблон.jade в шаблон.html в коммандной строке
- об_jade.compile("jade-шаблон",{filename:"имя_файла"}) - создание jade_ф-ии для подстановки аргументов и получения HTML, по имени ф-ла сохраняется кэш
- jade_ф-ия({перем1:знач1,перем2:знач2,..}) - создание HTML-строки
- extends layout - (для файла контента)предварительная установка каркаса JADE-шаблона "layout.jade" как основа всей страницы
- block имя_блока - (для файла контента)определение начала блока, который будет подставлен в основной шаблон (в одном ф-ле может быть несколько блоков вставляемых в каркас)
- block append имя_блока - (для файла контента)определение начала добавочного блока, который будет добавляется в уже описанный блок основной шаблон
- block имя_блока - (для файла каркаса шаблона) определение места размещения каждого блока
- include путь/имя_файла[.html/.css] - (для файла основного шаблона) установка дополнительного JADE-шаблона[или html-файла] "имя_файла.jade" (можно добавить шапку или подвал)
- тэг текст - элемент "тэг" с содержимым текстом (тэг DIV с классами - .имя_класса или id - #имя_id можно опускать)
- тэг1:тэг2 текст - элемент "тэг2" единственный вложен в "тэг1" и содержит текст, без примнения каскада
- тэг(аттр1='знач1',аттр2='знач2'..) .. - элемент "тэг" со значениями аттрибутов
- тэг.имя_класса - указание класса тэга
- тэг#имя_id - указание ID тэга
- тэг= имя_перем - элемент "тэг" с экранированным содержимым из имя_перем установленным в шаблон
- тэг!= имя_перем - элемент "тэг" с не экранированным содержимым из имя_перем установленным в шаблон
- тэг- выражение - элемент "тэг" и выполняется выражение без отображения
- тэг текст1 #{javascript-выражение} текст2 - элемент "тэг" с содержимым текстом1,2 и дополненный содержимым из javascript-выражения
- тэг(атр1=имя_перем) - элемент "тэг" с содержимым аттрибута с подставленным значением
- | текст - строка текста записывается как есть и не обрабатывается jade-анализатором
- тэг. - указывает что в тэге только текст (или обычный HTML) и новая строка может начинаться без |
- javascript-выражение с отступом - встраивание на отдельной строке javascript-выражения с/без префикса "-", с/без скобок, следующая jade-строка с отступом зависит от выражения
- в javascript-выражениях выражения пишут без префикса и скобок: if,else if,else,case(вместо switch),when(вместо case, не требует break),default,until..(вместо while!..),while,each in(вместо for-in),unless..(вместо if!..)
- style - тэг стилей, содержимое в отступе подставляется как текст без анализатора (для применения include *.css необходимо |
style ...) - mixin имя_mixin(аргум1,аргум2,..) - создание аналога ф-ии создающей в каскаде ниже часть jade-шаблона по аргументам, применяют: mixin имя_mixin(знач1,знач2,..)
- Для Express:
- Вне express:
- Содержание файла *.jade (каскадное размещение начальных тэгов в сообветствии структуры DOM)
EJS для Node - шаблон HTML/ со вставкой JavaScript (входит в Express)(необходима установка npm install ejs)- app.set("view engine","ejs") - установка EJS обработчика шаблонов
- res.render("ejs-файл",{арг1:знач1,арг2:знач2,..},ф-я(err,перем_html)) - получения HTML-текста с установленными в шаблон аргументами
- об_ejs.[open/close]('символы') / об_ejs.[open/close]='символы' - установка новых комбинаций открытия/закрытия javascript-кода
- об_ejs.renderFile("имя_ejs-файла",об_парам,ф-я(err,перем_HTML-строки)) - формирование текстовой строки HTML-кода из шаблона с подставленными параметрами
- об_ejs.render("ejs-строка",об_парам) - формирование текстовой строки HTML-кода из шаблона с подставленными параметрами
- об_парам
- имя_об:об / locals:об(исключает зарезервированые слова) - передача значений в шаблон
- cache:true - сохранение содержимого ф-ла в памяти кэша для быстрого доступа
- filename:"имя_ф-ла_шаблона" - имя ф-ла шаблона для хранения в кэше
- об_ejs.compile("ejs-строка") - создание откомпилированой ф-ии(об_парам), при запуске формирует текстовую строку HTML-кода
ТЭГ текстТЭГ - отображение элемента "тэг" с содержимым текстом% JavaScript-код % - выполнение логики JavaScript-кода без отображения% include путь/имя_файла[.html/.css] % - вставка дополнительного шаблона/файла% =выражение % - отображение экранированого(уголки заменяются на набор символов) значения выражения% -выражение % - отображение не экранированого(уголки не заменяются) значения выражения%=:/%-: выражение | флт1 | флт2 | ... % - отображение значения выражения с фильтрами, где ставят двоеточие (фильтр выполняет действие со значением и передает результат следующему)- Фильтры для отображения значения:
-
строки
- capitaize - перевод первой буквы текста в верхний регистр
- downcase - перевод текста в нижний регистр
- upcase - перевод текста в верхний регистр
- truncate:N - ограничить строку до длины N символов
- truncate_words:N - ограничить все строки текста до длины N слов
- replace:рег_выр/строка,'стр' - замена под-строк по шаблону на строку
- prepend:'строка' - добавление строки в начало
- append:'строка' - добавление строки в конец число
- plus:N - получить результат сложения
- minus:N - получить результат вычитания
- times:N - получить результат умножения
- divided_by:N - получить результат деления массив
- first - первый (индекс [0]) элемент массива
- last - последний элемент массива
- get:N - получить значение N-го эл массива
- sort - сортировка массива значений по значению
- size - получить число длины массива
- join или join:'символ' - объелинение массива строк в одну с разделителем (ум - ,)
- reverse - массив/текст сортирует в обратном порядке значения/слова объект
- get:'имя_поля' - получить значение поля об
- json - получить из об строку в формате json
- map:'имя_поля' - получение из массива об по "имя_поля" массива значений
- sort_by:'имя_поля' - сортировка массива об по одному полю
- об_ejs.filters.имя_ф-ии_фильтр=ф-я(вх_знач,[аргум1,аргум2,..]){..обработка вх_знач return вых_знач} - создание фильтра пользователя в виде ф-ии
- Для Express:
- Вне express: об_ejs = require('ejs') (требуется установка npm install ejs)
- Содержание файла *.ejs
Hogan - шаблон от Twitter на языке Mustache (необходима установка npm install hogan.js)- пер_шаблон=".." - получение строки шаблона
- об_д-х={..} - получение об с полями для заполнения шаблона
- об_hogan.compile(пер_шаблон,[об_парам]) - создание откомпилированого об_шаблона, автоматически кэшируется
- об_парам - настройка шаблона
- delimiters: '<% %>' - изменение символов открытия и закрытия вставок (ум-"{{}}")
- sectionTags:{o:"символ1",c:"символ2"} - изменение символов открытия и закрытия секции (ум-"#" и "/")
- об_шаблона.render(об_д-х,[об_компонент]) - получение HTML-строки подставлением об_д-х [и об_компонент: {имя_комп1:об_шаблона1,..}]
- Содержание шаблона Hogan
ТЭГ текстТЭГ - отображение элемента "тэг" с содержимым текстом- {{выражение}} - отображение экранированого(уголки заменяются на набор символов) значения выражения, не отображается: undefined,false,[]
- {{{выражение}}} / {{&выражение}} - отображение не экранированого(уголки не заменяются) значения выражения
- {{!текст}} - комментарий
- {{#имя_об}} цикл св-в {{/имя_об}} - секция для перебора св-в об, где доступны имена св-в напрямую:{{св-во}}
- {{^имя_об}} текст об отсутствии {{/имя_об}} - отображение текста при имя_об = undefined,false,[]
- {{>имя_компонент}} - отображение компонента содержащего об_шаблона (фрагмент откомпилированого шаблона)
об_hogan = require('hogan.js') - получить об_hoganStylus - шалоны упрощенной записи для стилей (необходима установка npm install stylus)- Для Express:
- app.use(middleware({src:"путь_шаблона",dest:"путь_CSS"})) - установка путей для шаблонов *.styl (view) и для готового CSS-файла *.css (public)
- Содержание файла *.styl (каскадное размещение селекторов и свойств со значениями без-{}:; )
- селекторы друг-под-другом - аналог ","
- &селектор - (отступ на уровне свойства) & повторяет предыдущий селектор (используют с псевдоклассом)
require('stylus')
Модули платформ для создания сайта
-
Express (концепция RESTful - комманды в записях путей)
require('express') - получение об_ex (необходима загрузка модуляnpm install express )- Генератор приложений
npm install express-generator -g - установка генератора express-приложенийexpress имя - выполнить в коммандной строке, создает папку "имя" со структорой и приложение app.js (сервер с портом 3000)- Дополнительные параметры установки
- -h/--help - просмотр всех возможных комманд
- -v/--version - просмотр номера версии
- -s/--session - добавить использование контроля сессии
- -e/--ejs - использовать для представлений шаблоны EJS (по умолчанию - JADE)
- -J/--jshtml - использовать для представлений шаблоны jshtml (по умолчанию - JADE)
- -H/--hogan - использовать для представлений шаблоны hogan.js (по умолчанию - JADE)
- -c/--css less/stilus - использовать для css препроцессор less или stilus (по умолчанию - не используется)
- -f/--force - Структура папок
- public/ - папка (управляется файл.сервером) для файлов стилей - *.css, javascript - *.js, image - *.jpg
- routes/ - папка для скриптов маршрутизатора
- view/ - папка для файлов-шаблонов
- npm install -d - выполнить в коммандной строке в новом каталоге для подгрузки всех связанных модулей
- node app.js - (для linux и др) запуск сервера с имеющимися установками
- node bin/www - (для Windows) запуск сервера с имеющимися установками
app.js - главное приложение (запускает модули: express,http,./routes)- об_express() - создание об_прилож, уже содержит http-сервер
.configure (["режим работы"],ф-я()) - (устаревшая) запуск функции конфигурации в любом/указанном (определяется по переменной окружения системы NODE_ENV) режиме работы
содержимое ф-ии:
- Установка переменных приложения, все хранятся в об_прилож.settings
.set("ключ","значение") - установки любых параметров конфигурации- параметры автоматически определяемые Express
- "view" - установка папки с файлами представления,шаблонами (сгенерир-__dirname+"/views")
- "view engine" - определения модуля представлений по умолчанию для игнорирования расширения ф-ла (res.render('имя',об_значений)), другие установленные в package.json - по расширению (сгенерир-"jade")
- "view cache" - отключение сохранения шаблонов в кэше для динамического изменения шаблонов (ум - включено для быстрой загрузки)
- "port" - установка номера порта
- .get("ключ") - получить значение установленного параметра конфигурации
- .enable("ключ") - установка булевого параметра конфигурации в true
- .disable("ключ") - установка булевого параметра конфигурации в false
- .enabled("ключ") - проверка установки булевого параметра конфигурации в true
- .disabled("ключ") - проверка установки булевого параметра конфигурации в false
.use(["/часть_пути"],ф-ии_интерфейса) - по пути/не зависимо от пути связующий метод добавляет в приложение функционал, получает набор аргументов-ф-ий- favicon(['путь+favicon.ico']) - при запросе "/favicon.ico" предоставляет иконку статическим методом из указанного пути (favicon = require('serve-favicon'))
morgan(["имя_формат"/"формат"],об_настр) - ведение логистики в указаннои формате на экране сервера (ум-"dev") (morgan = require('morgan'))- Формат
- combined/common/dev/short/tiny - имена стандартных форматов
- :date['clf/iso/web'] - дата в казанном формате
- :http-version - версия http
- :method
- :referrer
- :remote-addr
- :remote-user
- :req[header]
- :res[header]
- :response-time[digits]
- :status
- :url
- :user-agent
- morgan.token('имя_перем',function(req,res){return значение}) - создание пользовательской переменной формата Объект настроек
- stream:поток_запись - запись вывода в поток_запись (файл)
- об_express.static("путь") - метод (единственный встроенный в express) создания статического файлового сервера для указанного пути (ум-__dirname+"/public")
- req.on("static",ф-я()) - обработчик при принятии запроса на статический ф-л
- bodyParser.ф-я() - синтаксический разбор запроса и присвоение в св-во req.body (bodyParser=require('body-parser'))
- bodyParser.json([об_настр]) - разбор данных в формате json {inflate,limit,reviver,strict,type,verify}
- bodyParser.raw([об_настр]) - разбор бинарных данных {inflate,limit,type,verify}
- bodyParser.text([об_настр]) - разбор текстовых данных {defaultCharset,inflate,limit,type,verify}
- bodyParser.urlencoded([об_настр]) - разбор данных переданных в url и форм {extended,inflate,limit,parameterLimit,type,verify}
- multer(['путь_копии']).ф-я() - синтаксический разбор данных FormData, передает в req.body и req.file[s] (multer=require('multer'))
- multer().single('имя_поля') - req.fields поля формы, req.file один файл
- multer().array('имя_поля',N-колич) - req.fields поля формы, req.files массив файлов
- multer().fields([{name:'имя_поля1',maxCount:N-max},..]) - req.fields поля формы, req.files об массивов/одиноких файлов
- cookieParser() - синтаксический разбор данных coocies, передает в req.cookies (cookieParser=require('cookie-parser'))
- .session(об_парам) - создание свойство запроса об_соощ.session для хранения простых д-х о клиенте (не Function,Date) до следующего запроса (ум - в ОП) для подготовки cookie ответа (только для подписанных cookie) (session = require('express-session'))
- об_парам настройки cookie
- keys:"имя_cookie_ф-ла" - установка имя для cookie_ф-ла (по ум - connect.sid)
- cookie:{maxAge: N, secure: true } - настройка cookie: срок хранения мс, защищенный протокол https:\\
- store:об_redis - хранение д-х в БД redis, где об_redis=new (require('connect-redis')(об_connect))({prefix:'sid'})
- работа с об_соощ.session
- об_соощ.session.имя - сохранение в св-ве любого значения
- об_соощ.session.save([callback]) - сохранение д-х (запускается автоматически при сеансе или вручную)
- об_соощ.session.destroy(ф-я(err)) - удаление д-х
- об_соощ.session.regenerate() -
- об_соощ.session.MemoryStore - хранилище д-х в памяти (используется по умолчанию)
- об_соощ.session.cookie - хранит глобальные настройки cookie
- .maxAge/.expires - срок хранения
- .httpOnly - доступ к д-м только серверу
- .path - путь ф-ла
- .domain - сайт
- .secure - признак защищенной связи https
- methodOverride("имя_переменной/X-имя_заголовка") - эмуляция REST-возможностей (когда браузер не позволяет) по переменной/заголовку отпреляет метод (methodOverride=require('method-override'))
- об_express.staticCache([об_парам]) - установка статического кэширования
- об_парам:
- maxObjects:N - изменить количество объектов
- maxLength:N - изменить размер объектов
- serveIndex("путь",[об_парам]) - для отображения файлов (serveIndex = require('serve-index'))
- об_парам:
- hidden:true - показывать скрытые ф-лы
- icons:true - отображать иконки ф-ов
- filter: - отображать
- stylesheet:true - отображать ф-ов
- template: - отображать иконки ф-ов
- об_прилож.router - выполнения переход программы при найденных маршрутах
- ф-я(req,res,next) - ф-я пользователя на случай когда ни одна ф-я не обработала запрос
errorhandler([об_парам]) - ф-ия обработки ошибок (устанавливают в configure для режима разработки), (errorhandler = require('errorhandler'))- об_парам (для разработчиков):
- dumpExceptions:true - направлять сообщение об ошибках в поток
sdterr - showStack:true - создать для исключения HTML-код
- dumpExceptions:true - направлять сообщение об ошибках в поток
- ф-я(err,req,res,next) - ф-я пользователя обработки ошибок (вместо errorHandler() ), содержит 4 аргумента
.get/post/put/delete("путь",масс_ф-ий/[ф-я_вериф1(req,res,[next]),ф-я_вериф2,..],ф-я(req,res)) - обработчик при соответствии пути и методов "GET/POST/PUT/DELETE" (ум-модуль routes.index), для запуска следующего обраб. - арум next, next() - переход к другой ф-ии ,а next('route') - переход к другому маршруту- Путь (при сооветствии формируется единый об route со свойствами:.regexp,.params,..):
/../ - (тип-RegExp) найденные значения в скобках помещают в массив req.params"текст1 ? текст2" - (тип-строка) точное соответствие текста1, текста2 и предыдущая буква/(подстрока) добавлена (количество - 0,1,2,...)"текст1 + текст2" - (тип-строка) точное соответствие текста1, текста2 и предыдущая буква/(подстрока) добавлена (количество - 1,2,...)"текст1 * текст2" - (тип-строка) точное соответствие текста1, текста2 и любая подстрока добавлена (длина - 0,1,2,...)"текст/:имя_перем1/:имя_перем2" - (тип-строка) точное соответствие текста и передача значений переменных как войства в req.params
.all("путь",[ф-я_вериф1(req,res,next),ф-я_вериф2,..],ф-я(req,res)) - обработчик при соответствии пути любого метода.param("имя"/["имя1","имя2",..],[ф-я_вериф(req,res,next, перем_знач)) - обработчик при получении параметра в маршруте.param(ф-ия('имя_парам',знач){ return ф-я(req,res,next, перем_знач)}) - создание ф-ии обраб анализирует значение параметра.route("путь").МЕТОД1(ф-ия).МЕТОД2(ф-ия) - начало цепочки для подключения обработчиков по методу- .listen(N-порт,ф-я) - запуск сервера для прослушивания N-порта
/routes/index.js - модуль обработки маршрутаres.render("имя_шаблона",об_парам,[ф-я(err,перем_HTML_код)]) - создает HTML-код по шаблону (ум-"index") с подстановкой переменных из об_парам- об_парам:
- св-во:значение - установка значений для шаблона (ум-{title:"Express"})
- ф-я - выполняется после создания HTML-кода:
- err - код ошибки возникшей при создании HTML-код
- перем_HTML_код - текст созданого HTML-кода
- об_express.Router() - создание об_маршрута для выделения части пути и анализировать оставшую часть пути (об_маршрута.use(), об_маршрута.метод(), подключение use("путь",об_маршрута))
- Request - об полученного запроса
- req.headers - об с заголовками
- req.originalUrl / req.url - путь и строка запроса
- req.proocol - протокол
- req.host - домен
- req.hostname - домен
- req.path - путь
- req.query - об содержит все полученные переменные методом "GET" как свойства
- req.accepted - масс_об с инф-й о заголовке Accept:[q=0.-1.,]MIME-тип формат ответа (об={value:"MIME-тип",quality:0.-1.},quality-приоритет)
- req.ip - IP аддрес
- req.body - (при установке bodyParse()) содержит все полученные переменные методом "POST" как свойства
- req.fields, req.file[s] - (при установке multer()) содержит все полученные переменные методом "POST" как свойства
- req.params - содержит все переменные маршрута при их установке
- req.app - доступ к об приложения
- req.cookies - об полученных cookies (при установке cookieParser())
- req.route - строка пути по которой пройден маршрут
- req.fresh/stale - определение свежих и старых данных
- req.subdomains - массив подстрок в строке домена (разделены точками)
- req.xhr - определение применения клиентом об xhr, а не Jquery
- req.get("имя_заголовка") - возвращает значение заголовка
- req.param("имя_перем") - возвращает значение параметра, или переменной из запроса
- req.get("имя_заголовка") - возвращает значение заголовка
- Response - об подготовки и отправки ответа
- res.type('расширение'/'MIME-тип') - вычисление и установка заголовка Content-Type
- res.send("сообщение") - (для модуля express) передача данных клиенту (создает заголовки и отправляет res.end())
- res.sendFile("имя-ф-ла",[об_парам],[ф-я(err)]) - отправка содержимого файла
- об_парам
- maxAge:oneYear -
- res.json(об) - передача данных клиенту в формате json-строки
- res.jsonp(об) - передача данных клиенту в формате json-строки
- res.format({MIME-тип1/расширение1:ф-я1(),MIME-тип2/расширение2:ф-я2(),..}) - в зависимости от принятого формата в заголовке Accept - выполняет ф-ю
- res.status(N-код_ошибки).format({MIME-тип1/расширение1:ф-я1(),MIME-тип2/расширение2:ф-я2(),..}) - в зависимости от заголовка Accept - устанавливает код ошибки и выполняет ф-ю
- res.status(N-код_ошибки).send("сообщение") - отправка кода ошибки и ответа
- res.sendStatus(N-статус) - отправка отправителю кода статуса и строку HTML-кода, установленной по умолчанию
- res.download("имя-ф-ла",[об_парам],["новое_имя_ф-ла"],[ф-я(err)]) - браузер предлагает сохранить файл у клиента (передается заголовок Content-Disposition : имя_ф-ла)
- res.end(["сообщение"],[коодировка]) - завершение ответа
- об_прилож.locals([об]) - добавление в метод .render() для шаблона значения переменных приложения (опускают app.)
- res.locals([об]) - добавление в метод .render() для шаблона значения переменных запроса (опускают res.)
- res/об_прилож.render("путь+имя_шаблона",{арг1:знач1,арг2:знач2,..},[ф-я(err,перем_html)]) - отправка отправителю/передача ф-ии HTML-кода созданного из шаблона со значениями (опускают об.)
- res.location("путь") -
- res.redirect([N-код],"путь") - перезапуск запроса с новым путем - относительный/абсолютный/относительно корня
- об_express.redirect(..) - перенаправление запроса
- res.app - ссылка на об приложения
- res.headersSend - проверка уже отправленного заголовка
- res.append('имя_заголовка','значение') - добавление еще одного заголовка
- res.set(об_заголовк) - установка всех заголовков
- res.get("имя_заголовка") - получить значение установленного заголовка
- res.attachment('имя_файла') - установка заголовков для передачи файла (имя файла, MIME-тип)
- res.cookie('имя','значение',об_настр) - установка одного значения cookies
- res.clearCookie('имя',об_настр) - удаление одного значения cookies
- Решение для создания MVC
- Контроллер
- Создание папки Controllers
- файл1 со всеми export.ф-ии_X обработки маршрутов
- файл2 с export.ф-ией_R (принимает об_арр,имя_об) подключает файл1, запускает app.get/post/put/delete реализуя все необходимые методы управления данными с настройкой маршрутов
- Основное приложение:
- подключает файл2
- Массив имен об: list_об=["имя_об1","имя_об2",..]
- Запуск ф-ии_R для каждого об: list_об.forEach(function(имя){модуль.ф-ия_R(app,имя)})
- Представление
- Создание папки view/имя_об для размещения шаблонов визуализации об
- Создание папки public/имя_об для размещения статических файлов визуализации об (*.html,*.img,*.css)
- Основное приложение:
- Модель
- Хранение всех д-х в БД
- Основное приложение:
- Контроллер
- Генератор приложений
-
Другие фреймверки
- Geddy (концепция MVC)
- Flatiron
- Ember.js (концепция MVC)
- Calipso (на базе Express) - полноценный CMS с использованием MongoDB
- Express-Resource - низкоуровневая платформа Express с простой MVC
- RailwayJS - (на базе Express) аналог Ruby on Rails с полноценной MVC
- Tower.js - аналог Ruby on Rails с полноценной MVC
- Strata - применяет модули WSGI(Python) и Rack(Ruby)
Тестирование
- curl - утилита тестирования запросов из командной строки (вместо браузера)
- curl --request GET/POST/PUT/DELETE адрес [--data 'имя1=знач1&имя1=знач1&..'] - запрос [с данными POST]
- assert - модуть тестирования
require('assert') - создание об_assert для тестирования значений в приложении- .equal(выражен1,выражен2,["Сообщение об ошибке"]) - проверка выражен1==выражен2, иначе ошибка
- .strictEqual(выражен1,выражен2,["Сообщение об ошибке"]) - проверка выражен1===выражен2, иначе ошибка
- .deepEqual(об1,об2,["Сообщение об ошибке"]) - проверка выражен1[элем]==выражен2[элем], иначе ошибка
- .notEqual(выражен1,выражен2,["Сообщение об ошибке"]) - проверка выражен1!=выражен2, иначе ошибка
- .notStrictEqual(выражен1,выражен2,["Сообщение об ошибке"]) - проверка выражен1!==выражен2, иначе ошибка
- .notDeepEqual(об1,об2,["Сообщение об ошибке"]) - проверка выражен1[элем]!=выражен2[элем], иначе ошибка
- .ok(выражен,["Сообщение об ошибке"]) - проверка выражен==true, иначе ошибка
- об_assert(выражен) - проверка выражен1==true, иначе ошибка
- .fail(выражен1,выражен2,"Сообщение об ошибке","знак") - проверка выражен1+"знак"+выражен2, иначе ошибка
- .ifError(выражен) - проверка выражен==false, иначе ошибка (применяют для проверки наличия об_ошибки)
- .throws(ф-я,[об_ошиб/рег_выр],["Сообщение об ошибке"]) - проверка наличия в ф-ии ошибки типа об_ошиб/текст ошибки соотв рег_выр, иначе ошибка
- .doesNotThrow(ф-я,[об_ошиб/рег_выр],["Сообщение об ошибке"]) - проверка отсутствия в ф-ии ошибки типа об_ошиб/соотв рег_выр, иначе ошибка
- should - модуть тестирования
require('should') - дополняет класс Object методами для тестирования:об.should.метод() (npm install should)- .equal(выражен,["Сообщение об ошибке"]) - проверка об==выражен, иначе ошибка
- .include("под-строка",["Сообщение об ошибке"]) - проверка об содержит "под-строка", иначе ошибка
- .have.имя_св-во(знач) - проверка об содержит имя_св-во=знач, иначе ошибка
- nodeunit - модуть тестирования
тестирования значений в приложении npm install -g nodeunit (необходима библиотека утверждений assert)- nodeunit папка_с_тестами/файл_теста.js - запуск теста и получение результата
- Содержание файла теста
- module.exports={'test1':ф-я1(об_test),'test2':ф-я2(об_test),..} - cоздание файла теста с ф-ями объединяющие группы тестов, которые получают об_test
- об_test.expect(N) - 1-й метод: указание количества тестов в группе
- об_test.equal(выражен1,выражен2,["Сообщение об ошибке"]) - проверка выражен1==выражен2, иначе ошибка
- об_test.strictEqual(выражен1,выражен2,["Сообщение об ошибке"]) - проверка выражен1===выражен2, иначе ошибка
- об_test.deepEqual(об1,об2,["Сообщение об ошибке"]) - проверка выражен1[элем]==выражен2[элем], иначе ошибка
- об_test.notEqual(выражен1,выражен2,["Сообщение об ошибке"]) - проверка выражен1!=выражен2, иначе ошибка
- об_test.notStrictEqual(выражен1,выражен2,["Сообщение об ошибке"]) - проверка выражен1!==выражен2, иначе ошибка
- об_test.notDeepEqual(об1,об2,["Сообщение об ошибке"]) - проверка выражен1[элем]!=выражен2[элем], иначе ошибка
- об_test.fail(выражен1,выражен2,"Сообщение об ошибке","знак") - проверка выражен1+"знак"+выражен2, иначе ошибка
- об_test.ifError(выражен) - проверка выражен==false, иначе ошибка (применяют для проверки наличия об_ошибки)
- об_test.throws(ф-я,[об_ошиб/рег_выр],["Сообщение об ошибке"]) - проверка наличия в ф-ии ошибки типа об_ошиб/соотв рег_выр, иначе ошибка
- об_test.doesNotThrow(ф-я,[об_ошиб/рег_выр],["Сообщение об ошибке"]) - проверка отсутствия в ф-ии ошибки типа об_ошиб/соотв рег_выр, иначе ошибка
- об_test.done() - последний метод завершает группу из N тестов
- mocha - модуть тестирования (приемник Espresso)
npm install -g mocha (необходима библиотека утверждений should/assert )- mocha [ключи] файл_теста.js - запуск теста и получение результата
- Дополнительные ключи
- —ignored-leaks - отмена ф-ии: при создании глобальной переменных - генерирует ошибку
- –globals имя1 имя2 .. - разрешение создании только указанных глобальной переменных
- –timeout N - указание максимальной длительности теста (ум - 2000мс)
- Содержание файла теста
- var перем = require('имя_приложения') - подключение тестируемого приложкния
- describe/suite("имя_блока_теста",ф-я()) - при наличии перем/метода(..) - выполнение ф-ии
- it/test("имя_теста_утверждения",ф-я()) - ф-я где проверают утверждение с помощью: assert()/equal()/..
- it/test("имя_теста_утверждения",ф-я(done){..done();}) - ф-я где проверают асинхронное утверждение с помощью: assert()/equal()/.. ,последняя ф-я - done()
- before/setup
- after/teardown
- beforeEach(ф-я()) - выполнение ф-ии перед каждым describe()
- beforeEach(ф-я(done){..done();}) - ф-я где проверают асинхронное утверждение с помощью: assert()/equal()/.. ,последняя ф-я - done()()) - выполнение ф-ии перед каждым describe()
- afterEach(ф-я()) - выполнение ф-ии после каждого describe()
- об1.should.тест(об2) - запуск теста (equal())
- mocha [ключи] файл_теста.js - запуск теста и получение результата
- Tobi - модуть тестирования с имитацией браузера
npm install tobi (необходима библиотека утверждений should, модули jsdom,htmlparser,jQuery)- node test.js, где test.js содержит:
- require('tobi') - создание об_tobi
- об_tobi.createBrowser(N-порт,'хост-сервера') - имитация браузера подключаемый к серверу, получение об_brow
- об_brow.get("путь",ф-я(res,$){}) - запуск GET-запроса с указаным "путем" и получение в ф-ии HTML-страницы
- $('form') - доступ к форме ввода
- .fill({поле1:знач1,поле2:знач2,..}) - заполнение полей формы для передачи формы
- .submit(ф-я(res,$){тестирование ответа}) - передача д-х серверу, получение ответа, тестирование в ф-ии: should.модули()
- об_tobi.createBrowser(require("имя_сервер.js")) - имитация браузера подключаемый к серверу без запуска серверного приложения, получение об_brow
- об_brow.get("путь",ф-я(res,$){}) - запуск GET-запроса с указаным "путем" и получение в ф-ии HTML-страницы
- $('form') - создание формы ввода
- .fill({поле1:знач1,поле2:знач2,..}) - заполнение полей формы для передачи формы
- .submit(ф-я(res,$){тестирование ответа}) - передача д-х серверу, получение ответа, тестирование в ф-ии: should.модули()
- jasmine - модуть тестирования (приемник Espresso)
npm install jasmine-node- Создаются каталоги для тестов: specs
- Файлы тестов именуютя: имя.spec.js
- jasmine-node путь_корня - запуск теста и получение результата
- Содержание файла теста
- require('имя_модуля') - подключение тестируемого модуля
- describe("имя_блока_тестов",ф-я(){тесты}) - контейнер для группы тестов выполняемых в ф-ии
- xdescribe(...) - отключение блока теста
- ddescribe(...) - отключение всех блоков тестов кроме этого
- beforeEach(ф-я(){предварительные действия}) - выполнение ф-ии перед запуском каждого теста it()
- it("имя_теста",ф-я(){тест}) - один тест выполняемы в ф-ии (проверяются несколько утверждений)
- xit(...) - отключение теста
- iit(...) - отключение всех тестов кроме этого
- expect(выражение). - запуск выражения и передача результата по цепочке
- .toEqual(значение) - сравнение результата со значением
- .toBeTruthy() - выражение возвращает true
- .toBeDefined(..) -
- .toContain(значение) - среди элементов выражения-массива присутствует указанное значение
- об1.should.тест(об2) - запуск теста утверждения (equal())
- done() - стандартная ф-я обратного вызова
Общение с сервером
Введите переменную сервера для просмотра GET - запрос
Git - локальное хранилище версий программ, может работать с сетевым хранилищем GitHub
- Настройка
- git config --global user.name "Ваше имя" - запипись имени автора
- git config --global user.email "Ваш эл.адрес" - запись почты автора
- git config --global -l - отображение глобальной информации
- git config --local -l - отображение локальной информации
- создать новую папку и перейти в нее
- git init - создание репозитория в текущем каталоге (будет создана папка ".git" для мета-данных)
- Файлы и папки для работы с git
- .git - папка со всей информацией о файлах
- .gitkeep - пустой файл для сохранения пустого каталога
- .gitignore - файл с перечисленными построчно не сохраняемыми файлами и папками
- git status [ф-л.js] - проверка состояния ф-лов/ф-ла
git add [.]/ ф-л1.js [папка ..] - передача весь текущий каталог с подкаталогами/измененных ф-ов, не пустых папок (в пустую папку кладут пустой файл .gitkeep) в индекс для последующего сохранения (помещенные в папку .git) в набор файлов локальноого хранилища git, возможно даже переименование- git add -p ф-л1.js [папка ..] - передача измененных ф-ов с подтверждением изменений для индексирования: каждое измение будет переспрашиваться сохранять (y), не сохранять (n), при нажатии ?+Enter выдается расшифровка всех этих функций
- git add ф-л1.js - после физического удаления ф-ла, который был проиндексирован - файл удаляется из индекса, а после git commit - файл удаляется из репозитория
git commit [-m 'комментарий'] - сохранение всех добавлений/изменений [с комментарием внесенных изменений]- git commit -a/--all [-m 'комментарий'] - сохранение всех изменений в измененных файлах [с комментарием внесенных изменений] (пропуск команды git add для файлов уже находящихся в репозитории)
- git commit [-m 'комментарий'] [ф-л1 ..] - сохранение всех изменений только в указанных файлах [с комментарием внесенных изменений] (пропуск команды git add для уже сохраненных файлов)
- git commit [-m "коммент"] --author="имя <email>" --date="дата" [ф-л1 ..] - сохранение всех изменений в измененных файлах с указанием автора и даты (если автор и коммитер - разные люди)
- git commit --amend --no-edit -m 'комментарий' - перезапись последнего сохранение коммита с редактором кооментария (--no-edit - без редактора) заново: исправление комментария, или предварительное добавление файлов через git add
- git revert HEAD^ / HEAD~N / id-коммита - вернуть изменения к коммиту предыдущему / на N коммитов назад / указанному по id-коммита
git rm ф-л1.js [ф-л2.js] - удаление ф-ла из папки и индекса, но если там есть не сохраненные изменениия - будет отказ- git rm -r папка - удаление ф-лов с папкой из директории и индекса
- git rm -r --cashed папка - удаление ф-лов с папкой только из индекса, а физически они остаются в директории
- git rm -f/--force ф-л1.js [ф-л2.js] - удаление ф-лов из директории и индекса, даже если там были изменения
- git mv ф-л_стар.js ф-л_нов.js - переименование ф-ла и сохранение в индексе (так же можно 1-переименовать ф-л, 2-git add нов_файл
- git diff ф-л.js - просмотр всех не индексированых (до git add) изменений ф-ла по ставнению с последним коммитом
- git checkout [HEAD] ф-л.js - вернуть все изменения отображенные в diff, HEAD - ссылка на текущую ветку, без HEAD - из индекса
- git log [--oneline] - отобразить список сохраненных comit [сокращенно - по одной строке]
- git reflog [--date=iso] (или git log --oneline -g) - отобразить список изменений ветки HEAD (текущей ветки) [с датой]: все commit и checkout, комманда пригодится для восстановления удаленной ветки git branch нов_имя id-коммита/'HEAD@{N}'
- git reset - удалить коммит, изменения
- git reset [HEAD] ф-л.js - (после команды add) вернуть файл из индекса - файлы подготовленные к сохранению (обратно add), HEAD - ссылка на текущую ветку
- git reset (7знаков кода операции) - удалить выполенную операцию и все последующие по цепочке (add,commit,...) по ее коду отображенному в log
- git reset --hard id-коммита/HEAD~/[HEAD] - "жесткий коммит" смещает текущий коммит (HEAD) на указанный предыдущий коммит/текущий сохраненный коммит(удаляет изменения), а все последующие теряются (после операции сохраняется переменная ORIG_HEAD с ссылкой на предыдущий коммит)
- git reset --soft HEAD~ - "мягкий коммит" смещает текущий коммит (HEAD) на указанный предыдущий коммит, а все изменения отображаются как индексированые но не закомиченные (ORIG_HEAD ссылается на бывший текущий коммит)
git show - отобразить измененные строки одного последнего comit- git show [id-комитта] [--pretty=fuller] - отобразить один comit по идентификатору (первые 4 или больше знака) и просмотр изменений, --pretty=fuller ключ для информации о коммитере (если автор и коммитер - разные люди)
- git show HEAD - отобразить список сохраненных comit и просмотр изменений (аналог двух комманд:log,diff), (HEAD - ссылка на текущую переключенную ветку последний комит, HEAD~ - предыдущий коммит, HEAD~3 - 3 коммита назад)
- git show HEAD[~N]:файл - вывести в консоль весь текст файла старой версии
- git branch - работа с ветвями
- git branch [-v] - просмотр всех ветвей, где текущая ветвь отмечена звездочкой - *, [с указантем id последнего коммита]
- git branch -v -a - просмотр всех локальных ветвей и удаленных
- git branch имя_ветви - создание новой ветви
- git branch -f имя_ветви id-коммита - переход текущей ветки на предыдущий коммит этой же ветки (предварительно надо: git branch нов;git checkout нов;), тогда нов - бывшее последнее состояние текущей ветки, аналогично: git checkout -B имя_ветви id-коммита
- git branch -d имя_ветви - удаление ветви после git merge (но коммиты остаются), находясь на другой
- git branch -D имя_ветви - удаление ветви без git merge, находясь на другой - со временем (30-60 дней) будет безвозвратно удалена (можно успеть сохранить: git branch имя id-ветки)
- git checkout - переход между ветвями
- git checkout имя_ветви/@{-N} - переключение на указанную ветвь/на N-ю предыдущую (при просмотре git branch эта ветвь отмечена звездочкой), позволяет переключиться если все текущие изменения закомичены (флаг -f/--force игнорирует предупреждения и изменения исчезнут)
- git checkout -b имя_ветви - создание и переключение на указанную ветвь (замена двух комманд: git branch имя; git checkout имя)
- git checkout -f [HEAD] - убираем все изменения после последнего коммита: переключение на текущую ветвь [HEAD - тоже текущая] (остаемся на той же ветке) и игнорируем предупреждения
- git checkout имя_ветви/id-коммита файл - восстановление старой версии одного файла из сохраненного коммита/ветки
- git stash - перенос изменений в стэк
- git stash - все изменения после коммита временно переносятся в стэк (теперь их нет) для последующего восстановления
- git stash pop - восстановление сохраненных изменений (независимо от ветки)
- git tag - работа с тэгами (псевданимами) коммитов
- git tag [-a] имя id-коммита/имя_ветки - создание тэга (псевдонима) коммита [с редактором комментариев, -m ".." - короткими комментариями]
- git tag - список тэгов
- git tag -d имя_тэга - удаление тэга
- git describe [id-коммита] - отображает имя тэга текущего коммита/указанного по id (если тут тэга нет - отображается ближайший тэг - N-удаленность)
- git merge - объединение ветвей
- git merge имя_ветки - копирование в текущую ветвь другую имя_ветки
- git merge имя_ветви - "перемотка" перенос указателя текущей ветки в место (далее по линии) дополнительной ветви, теперь обе ветки в одном месте с одинаковыми изменениями (в переменной ORIG_HEAD сохраняется бывшый id-коммит текущей ветки для быстрого возвращения: git branch -f имя_ветки ORIG_HEAD)
- git merge --no-ff --no-edit имя_ветви - "отказ от перемотки"
- Возможен конфликт merge - если на главной ветви уже прошли изменения, операция не выполняется, в измененном файле появляется сообщение о вариантах главной и дополнительной ветви, автору надо убрать лишнее и выполнить add, commit
- git merge имя_ветви - объединение текущей и (по двум разным линиям - есть базовый коммит) дополнительной ветви, возможны варианты сравнивая с базой:
- 1ветка-файл изменен, 2ветка-нет - конфликта нет, изменения заносятся в индекс, необходим новый git commit
- 1ветка-файл изменен, 2ветка-файл изменен - конфликт, тогда в конфликтном файле команда записывает фрагменты из обейх веток, их надо исправить
- Работа с ветвями
- master - имя основной ветви
- origin - спевдоним удаленного репозитория github
- Работа с удаленным репозиторием github
- git clone адрес_GitHub_репозитория.git/папка_источик [имя_папки] - создание в текущей/указанной папке копии всех папок и файлов записанных в GitHub-репозиторий/папке_источнике
- git remote add origin git@github.com:имя_польз/имя_проекта.git - подключение к ветке origin локольного git-хранилища сетевого GitHub-хранилища для последующей передачи изменений в GitHub
- git remote -v - просмотр в клонированой директории адрес источника файлов origin с указанием fetch, push
- git push [-u] origin имя_ветви - перемещение д-х из текущей ветви в клонированный источник (GitHub-репозиторий) (master - в главную ветвь github, -u - восходящий узел, origin - удаленный источник gothub, все эти ключи повторно можно не указывать)
- git fetch - сравнение клонированой локальной директории с оригиналом из github на наличие изменений и копирует на локальный компьютер (осталось слить - git merge)
- git pull origin ветка-github - копирование в текущую origin ветку все изменения из ветки github
- git pull - копирование в д-х о коммитах из github в репозиторий на локальный компьютер, по умолчанию из master-githib в master-loc (если на github выполнялись изменения: pull request + merge, добавление или удаление файлов)
- git add README - созданный ф-л README.md (в формате MarkDown) с описанием приложения добавляют в корень репозитория
- git config - создание особых настроек
- git config --global alias.имя "!git add .;git commit" - сохранение двух-строчкой подпрограмки сохранения по спевдониму: git имя -m "коммент"
- git config --global core.exclidesFile ~/.gitignore - сохранение глобального .gitignore, чтобы не заполнять его в каждом проекте
- gitk --all - приложение отображает грав коммитов и информацию по git
- git rebase имя_ветки - после создания текущей ветки из имя_ветки, она уже изменилась, измененные данные заново переносятся в текущую
GitHub - сетевое хранилище программ и связи с git
- Настройка
- Регистрация на сайте
- Создание ключа SSH: по одресу https: //github.com/settings/ssh нажать кнопку "Add SSH Key"
- Создание GitHub-хранилища проекта
- "New Repositury" - (ссылка https: //github.com/new) создание нового пустого репозитория (хранилища проекта)
- Заполнение всех полей нового репозитория, нажать кнопку "Create Repository" (создается пустое хранилище и пустой перечень ошибок проекта)
- Работа в git
- Передача из git всех изменений в GitHub-репозитори: git remote add origin github-адрес_проекта.git, git push..
- Клонирование GitHub-репозитория в git для работы: git clone адрес_GitHub_репозитория.git
- Создание ветки GitHub-хранилища проекта
- "Your Fork" - разветвить готовый репозиторий (т.е. продублировать главное хранилище) для параллельной работы в git
- Клонирование ветвь GitHub-репозитория в git для внесения изменений: git clone адрес_GitHub_ветви_репозитория.git
- Работа в git (изменения ф-ов, git add ф-лы, git commit..)
- Передача из git всех изменений обратно в GitHub-репозитори: git push origin master
- На странице ветки нажать на кнопку "Pull Request" - создание запроса владельцу на передачу всех изменений ф-ов ветки в главный репозиторий
- После заполнения полей описания изменений нажать на кнопку "Send Pull Request" - отправить запрос владельцу на изменения ф-ов ветки
- Для владельца: в списке проблем создается новая запись
- "Issues" - (для пользователей) раздел для просмотра/описания проблемных вопросов
- Владелец может нажать кнопки для решения проблем:
- "Merge Pull Request"-объединить
- "Con?rm Merge"-подтвердить
Облачные ресурсы
MongoLab - облако для бесплатного размещения 500мб д-х формата JSON в открытой БД MongoDB
Сайт "https:// mongolab.com"- Регистрация на сайте
- запрос https:// api.mongolab.com/api/1/databases/[DB name]/
collections/[collection name]/[item id]?apiKey=[secret key]
- параметры в URL-строке
- apiKey - передается всегда для идентификации пользователя БД (это описано https:// support.mongolab.com/entries/20433053-rest-api-for-mongodb)
- Перечень методов віполняемых на сервер MongoLab
- GET
- PUT
- DELETE
- OPTIONS - автоматический запрос браузера для подтверждения выполнить запрос не GET,POST,HEAD
Поле для испытаний
Attr