Skip to content

Commit 6b40991

Browse files
authored
Merge pull request #205 from otmon76/1.13.3
Dynamic imports
2 parents 169eeef + 59e03b6 commit 6b40991

File tree

3 files changed

+51
-51
lines changed

3 files changed

+51
-51
lines changed
Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,98 @@
1-
# Dynamic imports
1+
# Dynamické importy
22

3-
Export and import statements that we covered in previous chapters are called "static". The syntax is very simple and strict.
3+
Příkazy exportu a importu, které jsme uvedli v předchozích kapitolách, se nazývají „statické“. Jejich syntaxe je velmi jednoduchá a striktní.
44

5-
First, we can't dynamically generate any parameters of `import`.
5+
Za prvé, žádné parametry příkazu `import` nemůžeme dynamicky generovat.
66

7-
The module path must be a primitive string, can't be a function call. This won't work:
7+
Cesta k modulu musí být primitivní řetězec, ne volání funkce. Tohle nebude fungovat:
88

99
```js
10-
import ... from *!*getModuleName()*/!*; // Error, only from "string" is allowed
10+
import ... from *!*vraťNázevModulu()*/!*; // Chyba, povoleno je jen from "řetězec"
1111
```
1212

13-
Second, we can't import conditionally or at run-time:
13+
Za druhé, nemůžeme importovat podmíněně nebo za běhu skriptu:
1414

1515
```js
1616
if(...) {
17-
import ...; // Error, not allowed!
17+
import ...; // Chyba, tohle není dovoleno!
1818
}
1919

2020
{
21-
import ...; // Error, we can't put import in any block
21+
import ...; // Chyba, nemůžeme umístit import do bloku
2222
}
2323
```
2424

25-
That's because `import`/`export` aim to provide a backbone for the code structure. That's a good thing, as code structure can be analyzed, modules can be gathered and bundled into one file by special tools, unused exports can be removed ("tree-shaken"). That's possible only because the structure of imports/exports is simple and fixed.
25+
Je to proto, že záměrem příkazů `import`/`export` je poskytnout páteř struktury kódu. To je dobrá věc, protože strukturu kódu můžeme analyzovat, moduly můžeme speciálními nástroji shromažďovat a spojovat do jednoho souboru, nepoužité exporty můžeme odstraňovat („třesení stromem“). To je možné jen proto, že struktura importů a exportů je jednoduchá a pevná.
2626

27-
But how can we import a module dynamically, on-demand?
27+
Jak ale můžeme importovat modul dynamicky, na požádání?
2828

29-
## The import() expression
29+
## Výraz import()
3030

31-
The `import(module)` expression loads the module and returns a promise that resolves into a module object that contains all its exports. It can be called from any place in the code.
31+
Výraz `import(modul)` načte modul a vrátí příslib, který se splní do objektu modulu obsahujícího všechny jeho exporty. Může být volán z kteréhokoli místa v kódu.
3232

33-
We can use it dynamically in any place of the code, for instance:
33+
Můžeme jej používat dynamicky na kterémkoli místě kódu, například:
3434

3535
```js
36-
let modulePath = prompt("Which module to load?");
36+
let cestaModulu = prompt("Který modul načíst?");
3737

38-
import(modulePath)
39-
.then(obj => <module object>)
40-
.catch(err => <loading error, e.g. if no such module>)
38+
import(cestaModulu)
39+
.then(obj => <objekt modulu>)
40+
.catch(chyba => <chyba při načítání, např. když takový modul neexistuje>)
4141
```
4242

43-
Or, we could use `let module = await import(modulePath)` if inside an async function.
43+
Nebo můžeme použít `let modul = await import(cestaModulu)`, jsme-li uvnitř asynchronní funkce.
4444

45-
For instance, if we have the following module `say.js`:
45+
Například jestliže máme následující modul `řekni.js`:
4646

4747
```js
48-
// 📁 say.js
49-
export function hi() {
50-
alert(`Hello`);
48+
// 📁 řekni.js
49+
export function ahoj() {
50+
alert(`Ahoj`);
5151
}
5252

53-
export function bye() {
54-
alert(`Bye`);
53+
export function nashle() {
54+
alert(`Nashle`);
5555
}
5656
```
5757

58-
...Then dynamic import can be like this:
58+
...Pak dynamický import může vypadat takto:
5959

6060
```js
61-
let {hi, bye} = await import('./say.js');
61+
let {ahoj, nashle} = await import('./řekni.js');
6262

63-
hi();
64-
bye();
63+
ahoj();
64+
nashle();
6565
```
6666

67-
Or, if `say.js` has the default export:
67+
Nebo jestliže `řekni.js` obsahuje výchozí export:
6868

6969
```js
70-
// 📁 say.js
70+
// 📁 řekni.js
7171
export default function() {
72-
alert("Module loaded (export default)!");
72+
alert("Modul načten (výchozí export)!");
7373
}
7474
```
7575

76-
...Then, in order to access it, we can use `default` property of the module object:
76+
...Pak můžeme pro přístup k němu použít vlastnost `default` objektu modulu:
7777

7878
```js
79-
let obj = await import('./say.js');
80-
let say = obj.default;
81-
// or, in one line: let {default: say} = await import('./say.js');
79+
let obj = await import('./řekni.js');
80+
let řekni = obj.default;
81+
// nebo na jednom řádku: let {default: řekni} = await import('./řekni.js');
8282

83-
say();
83+
řekni();
8484
```
8585

86-
Here's the full example:
86+
Zde je celý příklad:
8787

8888
[codetabs src="say" current="index.html"]
8989

9090
```smart
91-
Dynamic imports work in regular scripts, they don't require `script type="module"`.
91+
Dynamické importy fungují i v běžných skriptech, nevyžadují `script type="module"`.
9292
```
9393

9494
```smart
95-
Although `import()` looks like a function call, it's a special syntax that just happens to use parentheses (similar to `super()`).
95+
Ačkoli `import()` vypadá jako volání funkce, je to speciální syntaxe, která prostě jen používá závorky (podobně jako `super()`).
9696
97-
So we can't copy `import` to a variable or use `call/apply` with it. It's not a function.
97+
Nemůžeme tedy kopírovat `import` do proměnné nebo s ním používat `call/apply`. Není to funkce.
9898
```
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<!doctype html>
22
<script>
3-
async function load() {
4-
let say = await import('./say.js');
5-
say.hi(); // Hello!
6-
say.bye(); // Bye!
7-
say.default(); // Module loaded (export default)!
3+
async function načti() {
4+
let řekni = await import('./say.js');
5+
řekni.ahoj(); // Ahoj!
6+
řekni.nashle(); // Nashle!
7+
řekni.default(); // Modul načten (výchozí export)!
88
}
99
</script>
10-
<button onclick="load()">Click me</button>
10+
<button onclick="načti()">Klikni na mě</button>
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
export function hi() {
2-
alert(`Hello`);
1+
export function ahoj() {
2+
alert(`Ahoj`);
33
}
44

5-
export function bye() {
6-
alert(`Bye`);
5+
export function nashle() {
6+
alert(`Nashle`);
77
}
88

99
export default function() {
10-
alert("Module loaded (export default)!");
10+
alert("Modul načten (výchozí export)!");
1111
}

0 commit comments

Comments
 (0)