4. Область видимости 4/17
Недостаток #3: область видимости (scope)
Немедленно вызываемые функции (Immediately-Invoked Function Expression) — IIFE
Передача параметров в немедленно вызываемую функцию
“Поднятие” (hoisting)
Совет эксперта:
5. Шаг вперёд: шаблон модуль 5/17
Суть этого паттерна заключается с создании локальной
области видимости, в которой определяются локальные,
«приватные» переменные и функции. Сама же
немедленно вызываемая функция возращает объект с
методами, использующими приватные переменные и
функции.
6. Способ получше - AMD модули 6/17
Самая распространённая реализация — RequireJS
Асинхронная загрузка
7. Как бы сделал Node.js - Browserify 7/17
— пакетный менеджер node.js
● Модули имеют своё пространство имён (namespace)
— быстро растущее собрание стандартов JS для разработки в областях, выходящих за рамки
традиционного использования внутри браузера
● Согласно CommonJS модули определяются присваиванием
объекта к module.exports
8. Доставка JS при помощи Browserify 8/17
https://nodejs.org/api/modules.html#modules_file_modules
9. Browserify и Watchify 9/17
Кто поможет автоматизировать всё на свете?
Это команда считывает ваш main.js и
пишет его содержимое в bundle.js
(разумеется, включая пакетные
зависимости).
Но! Каждый раз жать комманду в консоли?
Watchify поможет!
11. Browserify vs RequireJS
11/17
Недостатки:
● Визуально более громоздкий синтаксис
● Не лучшее решение для бекэнда
● Плохо разрешает циклические ссылки
● Lazy load делать сложнее
● Нужен nodeJS
● Не все фронтенд библиотеки есть в npm
12. Bower - пакентный менеджер фронтэнда
12/17
Установка
Поиск
Проверка актуальных версий пакетов