Skip to content

Commit aa6637a

Browse files
authored
Merge pull request #256 from OliverWall/master
5-network/06-url
2 parents f0b88f1 + 765011b commit aa6637a

1 file changed

Lines changed: 40 additions & 41 deletions

File tree

5-network/06-url/article.md

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
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
1313
new 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
2222
let url = new URL('https://javascript.info/url');
@@ -26,71 +26,70 @@ alert(url.host); // javascript.info
2626
alert(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
4242
let url = new URL('profile/admin', 'https://javascript.info');
4343

4444
alert(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

4848
alert(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
8382
let 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+
// перебор параметров поиска (декодирование)
9392
for(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

Comments
 (0)