Skip to content

Commit 963f237

Browse files
committed
up
1 parent ae6b504 commit 963f237

File tree

6 files changed

+163
-1
lines changed

6 files changed

+163
-1
lines changed

1-js/10-es-modern/11-promise/2-promise-sequence/solution.view/index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,5 @@
2929
});
3030

3131
</script>
32-
3332
</body>
3433
</html>
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
2+
# Модули
3+
4+
Концепция модулей как способа организации JavaScript-кода существовала давно.
5+
6+
Когда приложение сложное и кода много -- мы пытаемся разбить его на файлы. В каждом файле описываем какую-то часть, а в дальнейшем -- собираем эти части воедино.
7+
8+
Модули в стандарте EcmaScript предоставляют удобные средства для этого.
9+
10+
Такие средства предлагались сообществом и ранее, например:
11+
12+
<ul>
13+
<li>[CommonJS](http://wiki.commonjs.org/wiki/Modules/1.1)</li>
14+
<li>[AMD](https://en.wikipedia.org/wiki/Asynchronous_module_definition)</li>
15+
<li>[UMD](https://github.com/umdjs/umd)</li>
16+
</ul>
17+
18+
Все они требуют различных библиотек или систем сборки для использования.
19+
20+
Новый стандарт отличается от них прежде всего тем, что это -- стандарт. А значит, со временем, будет поддерживаться браузерами без дополнительных утилит.
21+
22+
Сейчас браузерной поддержки почти нет. Поэтому ES-модули используются вместе с системами сборки, такими как [webpack](http://webpack.github.io/), [brunch](http://brunch.io/) и другими, при подключённом [Babel.JS](https://babeljs.io).
23+
24+
25+
## Что такое модуль?
26+
27+
Модулем считается файл с кодом.
28+
29+
В этом файле ключевым словом `export` помечаются переменные и функции, которые могут быть использованы снаружи.
30+
31+
Другие модули могут подключать их через вызов `import`.
32+
33+
Нагляднее всего это проиллюстрировать примером.
34+
35+
Модуль `one.js` экспортирует переменную `one`:
36+
37+
```js
38+
export let one = 1;
39+
```
40+
41+
Модуль `two.js`:
42+
```
43+
let two = 2;
44+
45+
export {two}
46+
```
47+
48+
49+
[codetabs src="nums"]
50+
51+
52+
53+
То есть, браузер, в котором есть поддержка модулей, или система сборки ("сегодняшний" вариант)
54+
55+
Модуль -- это файл со специальными командами:
56+
57+
<ul>
58+
<li>Экспорты -- </li>
59+
60+
61+
62+
63+
64+
65+
Общее между ними
66+
67+
Модуль -- способ организации кода по файлам. Каждый файл
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/******/ (function(modules) { // webpackBootstrap
2+
/******/ // The module cache
3+
/******/ var installedModules = {};
4+
5+
/******/ // The require function
6+
/******/ function __webpack_require__(moduleId) {
7+
8+
/******/ // Check if module is in cache
9+
/******/ if(installedModules[moduleId])
10+
/******/ return installedModules[moduleId].exports;
11+
12+
/******/ // Create a new module (and put it into the cache)
13+
/******/ var module = installedModules[moduleId] = {
14+
/******/ exports: {},
15+
/******/ id: moduleId,
16+
/******/ loaded: false
17+
/******/ };
18+
19+
/******/ // Execute the module function
20+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21+
22+
/******/ // Flag the module as loaded
23+
/******/ module.loaded = true;
24+
25+
/******/ // Return the exports of the module
26+
/******/ return module.exports;
27+
/******/ }
28+
29+
30+
/******/ // expose the modules object (__webpack_modules__)
31+
/******/ __webpack_require__.m = modules;
32+
33+
/******/ // expose the module cache
34+
/******/ __webpack_require__.c = installedModules;
35+
36+
/******/ // __webpack_public_path__
37+
/******/ __webpack_require__.p = "";
38+
39+
/******/ // Load entry module and return exports
40+
/******/ return __webpack_require__(0);
41+
/******/ })
42+
/************************************************************************/
43+
/******/ ([
44+
/* 0 */
45+
/***/ function(module, exports, __webpack_require__) {
46+
47+
'use strict';
48+
49+
var _nums = __webpack_require__(1);
50+
51+
console.log(_nums.one + _nums.two);
52+
53+
/***/ },
54+
/* 1 */
55+
/***/ function(module, exports) {
56+
57+
"use strict";
58+
59+
Object.defineProperty(exports, "__esModule", {
60+
value: true
61+
});
62+
var one = 1;
63+
64+
exports.one = one;
65+
var two = 2;
66+
67+
exports.two = two;
68+
69+
/***/ }
70+
/******/ ]);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import {one, two} from './nums';
2+
3+
console.log(one + two);
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export let one = 1;
2+
3+
let two = 2;
4+
5+
export {two};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Required:
2+
// npm i -g webpack
3+
// npm i babel-loader
4+
5+
module.exports = {
6+
entry: './main',
7+
8+
output: {
9+
filename: 'bundle.js'
10+
},
11+
12+
module: {
13+
loaders: [
14+
{ test: /\.js$/, loader: "babel" }
15+
]
16+
}
17+
};
18+

0 commit comments

Comments
 (0)