11
2- # URL objects
2+ # Объекты URL
33
4- The built-in [ URL] ( https://url.spec.whatwg.org/#api ) class provides a convenient interface for creating and parsing URLs .
4+ Встроенный класс [ URL] ( https://url.spec.whatwg.org/#api ) предоставляет удобный интерфейс для создания и анализа URL-адресов .
55
6- We don't have to use it at all. There are no networking methods that require exactly an ` URL ` object, strings are good enough. But sometimes it can be really helpful .
6+ Мы не обязаны его использовать. Нет сетевых методов, которые требуют объект ` URL ` , достаточно использовать строку. Но иногда он может быть полезным .
77
8- ## Creating an URL
8+ ## Создание URL
99
10- The syntax to create a new URL object :
10+ Синтаксис создания нового объекта URL:
1111
1212``` js
1313new URL (url, [base])
1414```
1515
16- - ** ` url ` ** -- the text url
17- - ** ` base ` ** -- an optional base for the ` url `
16+ - ** ` url ` ** -- URL-адрес
17+ - ** ` base ` ** -- дополнительные опции для ` url `
1818
19- The ` URL ` object immediately allows us to access its components, so it's a nice way to parse the url, e.g. :
19+ Объект ` URL ` позволяет нам получить доступ к его свойствам, поэтому это отличный способ распарсить URL-адрес, например :
2020
2121``` js run
2222let url = new URL (' https://javascript.info/url' );
@@ -26,71 +26,70 @@ alert(url.host); // javascript.info
2626alert (url .pathname ); // /url
2727```
2828
29- Here's the cheatsheet :
29+ Вот шпаргалка :
3030
3131![ ] ( url-object.png )
3232
33- - ` href ` is the full url, same as ` url.toString() `
34- - ` protocol ` ends with the colon character ` : `
35- - ` search ` starts with the question mark ` ? `
36- - ` hash ` starts with the hash character ` # `
37- - there are also ` user ` and ` password ` properties if HTTP authentication is present .
33+ - ` href ` это полный URL-адрес, точно такой же, как ` url.toString() `
34+ - ` protocol ` заканчивается символом двоеточия ` : `
35+ - ` search ` начинается с вопросительного знака ` ? `
36+ - ` hash ` начинается с символа ` # `
37+ - также есть свойства ` user ` и ` password ` , если используется HTTP-аутентификация .
3838
39- We can also use ` URL ` to create relative urls, using the second argument :
39+ Мы можем использовать объект ` URL ` для создания относительных URL-адресов, используя второй аргумент :
4040
4141``` js run
4242let url = new URL (' profile/admin' , ' https://javascript.info' );
4343
4444alert (url); // https://javascript.info/profile/admin
4545
46- url = new URL (' tester' , url); // go to 'tester' relative to current url path
46+ url = new URL (' tester' , url); // перейти к 'tester' относительно текущего URL
4747
4848alert (url); // https://javascript.info/profile/tester
4949```
5050
5151```smart header="We can use ` URL ` everywhere instead of a string"
52- We can use an ` URL ` object in ` fetch ` or ` XMLHttpRequest ` , almost everywhere where a string url is expected.
53-
54- In the vast majority of methods it's automatically converted to a string.
52+ Мы можем использовать объект ` URL ` в методах ` fetch ` или ` XMLHttpRequest ` и почти во всех других, где ожидается URL-строка.
53+ В подавляющем большинстве методов он автоматически конвертируется в строку.
5554```
5655
57- ## SearchParams
56+ ## Параметры поиска
5857
59- Let's say we want to create an url with given search params, for instance , `https://google.com/search?query=value`.
58+ Допустим, мы хотим создать URL-адрес с заданными параметрами, например , `https://google.com/search?query=value`.
6059
61- They must be correctly encoded .
60+ Они должны быть правильно закодированы .
6261
63- In very old browsers, before `URL` appeared, we'd use built-in functions `encodeURIComponent/decodeURIComponent`.
62+ В очень старых браузерах, до появления `URL`, мы использовали встроенные функции `encodeURIComponent/decodeURIComponent`.
6463
65- Now, there's no need : `url.searchParams` is an object of type [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams).
64+ Сейчас в этом нет необходимости : `url.searchParams` -- это объект типа [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams).
6665
67- It provides convenient methods for search parameters :
66+ Он предоставляет удобные методы для работы с параметрами :
6867
69- - **`append(name, value)`** -- add the parameter ,
70- - **`delete(name)`** -- remove the parameter ,
71- - **`get(name)`** -- get the parameter ,
72- - **`getAll(name)`** -- get all parameters with that name (if many, e.g. `?user=John&user=Pete`),
73- - **`has(name)`** -- check for the existance of the parameter ,
74- - **`set(name, value)`** -- set/replace the parameter ,
75- - **`sort()`** -- sort parameters by name, rarely needed ,
76- - ...and also iterable, similar to `Map`.
68+ - **`append(name, value)`** -- добавить параметр ,
69+ - **`delete(name)`** -- удалить параметр ,
70+ - **`get(name)`** -- получить параметр ,
71+ - **`getAll(name)`** -- получить все параметры с этим именем (если их много, например: `?user=John&user=Pete`),
72+ - **`has(name)`** -- проверить наличие параметра ,
73+ - **`set(name, value)`** -- задать/заменить параметр ,
74+ - **`sort()`** -- отсортировать параметры по имени, используется редко ,
75+ - ...и также методы для итерации, как в объектах `Map`.
7776
78- So , `URL` object also provides an easy way to operate on url parameters .
77+ Таким образом , `URL` объект также дает возможность оперировать параметрами URL-адреса .
7978
80- For example :
79+ Пример :
8180
8281```js run
8382let url = new URL('https://google.com/search');
84- url.searchParams.set('query', 'test me !');
83+ url.searchParams.set('query', 'проверь меня !');
8584
86- alert(url); // https://google.com/search?query=test+me %21
85+ alert(url); // https://google.com/search?query=проверь+меня %21
8786
88- url.searchParams.set('tbs', 'qdr:y'); // add param for date range: past year
87+ url.searchParams.set('tbs', 'qdr:y'); // добавить параметр для диапазона дат: прошлый год
8988
90- alert(url); // https://google.com/search?query=test+me %21&tbs=qdr%3Ay
89+ alert(url); // https://google.com/search?query=проверь+меня %21&tbs=qdr%3Ay
9190
92- // iterate over search parameters (decoded )
91+ // перебор параметров поиска (декодирование )
9392for(let [name, value] of url.searchParams) {
94- alert(`${name}=${value}`); // query=test me !, then tbs=qdr:y
93+ alert(`${name}=${value}`); // query=проверь меня !, далее tbs=qdr:y
9594}
9695```
0 commit comments