SlideShare a Scribd company logo
1 of 17
Download to read offline
Browserifyдоставка JS
М.В. Бакулин 1/17
быстро, дёшево, надёжно
Традиционный способ добавления JS 2/17
© http://www.technology-ebay.de/the-teams/mobile-de/blog/packing-the-web-like-a-boss.html
Недостаток #1: порядок имеет значение
Зависимости 3/17
Недостаток #2: зависимости плагинов
vlager.edu.ru:
Область видимости 4/17
Недостаток #3: область видимости (scope)
Немедленно вызываемые функции (Immediately-Invoked Function Expression) — IIFE
Передача параметров в немедленно вызываемую функцию
“Поднятие” (hoisting)
Совет эксперта:
Шаг вперёд: шаблон модуль 5/17
Суть этого паттерна заключается с создании локальной
области видимости, в которой определяются локальные,
«приватные» переменные и функции. Сама же
немедленно вызываемая функция возращает объект с
методами, использующими приватные переменные и
функции.
Способ получше - AMD модули 6/17
Самая распространённая реализация — RequireJS
Асинхронная загрузка
Как бы сделал Node.js - Browserify 7/17
— пакетный менеджер node.js
● Модули имеют своё пространство имён (namespace)
— быстро растущее собрание стандартов JS для разработки в областях, выходящих за рамки
традиционного использования внутри браузера
● Согласно CommonJS модули определяются присваиванием
объекта к module.exports
Доставка JS при помощи Browserify 8/17
https://nodejs.org/api/modules.html#modules_file_modules
Browserify и Watchify 9/17
Кто поможет автоматизировать всё на свете?
Это команда считывает ваш main.js и
пишет его содержимое в bundle.js
(разумеется, включая пакетные
зависимости).
Но! Каждый раз жать комманду в консоли?
Watchify поможет!
Gulp <3 Browserify 10/17
Простой вариант
Добавим “мяска”
Запуск
Browserify vs RequireJS
11/17
Недостатки:
● Визуально более громоздкий синтаксис
● Не лучшее решение для бекэнда
● Плохо разрешает циклические ссылки
● Lazy load делать сложнее
● Нужен nodeJS
● Не все фронтенд библиотеки есть в npm
Bower - пакентный менеджер фронтэнда
12/17
Установка
Поиск
Проверка актуальных версий пакетов
Мы освоили новый модный
инструмент для фронтэнда!
13/17
но...
Это уже устарело
14/17
15/17
Передовая: webpack и модули ES6
Смесь CommonJs и AMD (webpack)
ES6 модуль
Вызов ES6 модуля
16/17
Спасибо
17/17

More Related Content

Similar to Browerify

ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf Conference
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Denis Tsvettsih
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill Chebunin
 
Phalcon. Что нового?
Phalcon. Что нового?Phalcon. Что нового?
Phalcon. Что нового?Oleksandr Torosh
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Александр Егурцов
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
Continuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons LearnedContinuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons LearnedAleksandr Tarasov
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советыSQALab
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Эволюция BackDoor.Flashback
Эволюция BackDoor.FlashbackЭволюция BackDoor.Flashback
Эволюция BackDoor.Flashbackhexminer
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakAmasty
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Телепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup MinskТелепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup MinskMODX Беларусь
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Метапрограммирование интерфейсов в ASP.NET MVC Framework
Метапрограммирование интерфейсов в ASP.NET MVC FrameworkМетапрограммирование интерфейсов в ASP.NET MVC Framework
Метапрограммирование интерфейсов в ASP.NET MVC FrameworkAlexander Byndyu
 

Similar to Browerify (20)

ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus
 
Backbone lesson 1
Backbone lesson 1Backbone lesson 1
Backbone lesson 1
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
Phalcon. Что нового?
Phalcon. Что нового?Phalcon. Что нового?
Phalcon. Что нового?
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Continuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons LearnedContinuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons Learned
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советы
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Эволюция BackDoor.Flashback
Эволюция BackDoor.FlashbackЭволюция BackDoor.Flashback
Эволюция BackDoor.Flashback
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
 
Yulia tsuba
Yulia tsubaYulia tsuba
Yulia tsuba
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Телепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup MinskТелепортация MODX - MODX Meetup Minsk
Телепортация MODX - MODX Meetup Minsk
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Symfony 3
Symfony 3Symfony 3
Symfony 3
 
Метапрограммирование интерфейсов в ASP.NET MVC Framework
Метапрограммирование интерфейсов в ASP.NET MVC FrameworkМетапрограммирование интерфейсов в ASP.NET MVC Framework
Метапрограммирование интерфейсов в ASP.NET MVC Framework
 

Browerify

  • 1. Browserifyдоставка JS М.В. Бакулин 1/17 быстро, дёшево, надёжно
  • 2. Традиционный способ добавления JS 2/17 © http://www.technology-ebay.de/the-teams/mobile-de/blog/packing-the-web-like-a-boss.html Недостаток #1: порядок имеет значение
  • 3. Зависимости 3/17 Недостаток #2: зависимости плагинов vlager.edu.ru:
  • 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 поможет!
  • 10. Gulp <3 Browserify 10/17 Простой вариант Добавим “мяска” Запуск
  • 11. Browserify vs RequireJS 11/17 Недостатки: ● Визуально более громоздкий синтаксис ● Не лучшее решение для бекэнда ● Плохо разрешает циклические ссылки ● Lazy load делать сложнее ● Нужен nodeJS ● Не все фронтенд библиотеки есть в npm
  • 12. Bower - пакентный менеджер фронтэнда 12/17 Установка Поиск Проверка актуальных версий пакетов
  • 13. Мы освоили новый модный инструмент для фронтэнда! 13/17 но...
  • 15. 15/17
  • 16. Передовая: webpack и модули ES6 Смесь CommonJs и AMD (webpack) ES6 модуль Вызов ES6 модуля 16/17