SlideShare a Scribd company logo
CommonJS в браузере Шувалов Антон 
1
Что такое CommonJS? 
2
Как работает CommonJS? 
3
Как работает CommonJS 
'use strict'; 
var $ = require('jquery'); 
var counter = 0; 
exports.inc = function (count) { 
counter += count || 1; 
}; 
exports.get = function () { 
return counter; 
} 
4
Как работает CommonJS 
(function (require, exports, …) { 
var 
var 
exports. 
exports. 
} 
5 
})(require, exports, …)
$ browserify index.js > bundle.js 
6
Вложенные зависимости 
Jonathan:proxy.js jong$ pkgcount --duplicates 
NAME COUNT 
abbrev@1.0.5 25 
accepts@1.0.7 9 
amdefine@0.1.0 105 
ansi-regex@0.1.0 8 
ansi-regex@0.2.1 16 
ansi-styles@1.0.0 26 
ansi-styles@1.1.0 8 
argparse@0.1.15 34 
asn1@0.1.11 26 
assert-plus@0.1.2 26 
ast-types@0.4.8 17 
async@0.2.10 60 
async@0.9.0 60 
…и еще 200 строк 
7
Плоские зависимости 
// get-val.js 
module.exports = function init($) { 
return function(el){ 
return $(el).val(); 
} 
}; 
8
Плоские зависимости 
// get-val.js 
module.exports = function init($) { 
return function(el){ 
return $(el).val(); 
} 
}; 
// index.js 
var $ = require('jquery'); 
var $getVal = require('get-val')($); 
var password = $getVal('.password'); 
9
Плоские зависимости 
// index.js 
var Backbone = require('Backbone'); 
var $ = Backbone.$ = require('jquery'); 
10
(function (factory) { 
"use strict"; 
if (typeof define === 'function' && define.amd) { 
// using AMD 
define(['jquery'], factory); 
} else if (typeof exports !== 'undefined') { 
// using CommonJS 
module.exports = factory2; 
} else { 
// no AMD/CommonJS; invoke directly 
factory(jQuery); 
} 
})(function($) { 
"use strict"; 
// plugin code 
}); 
http://dontkry.com/posts/code/browserify-and-the-universal-module-definition.html 
11 
Поддержка
NPM 
8 629 620 downloads in the last day 
121 187 099 downloads in the last week 
475 001 308 downloads in the last month 
12
CommonJS в браузере: 
- Простота 
- Нет шаблонного кода 
- Миллионы готовых модулей в NPM 
13
|_~(˘▾˘~) 
- http://github.com/shuvalov-anton 
- http://twitter.com/shuvalov_anton 
- http://shuvalov.info 
14

More Related Content

PDF
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
PDF
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
PDF
Devcamp nodejs-2010
PDF
Суперсилы Chrome developer tools
PDF
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
PDF
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
PDF
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
PDF
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
Devcamp nodejs-2010
Суперсилы Chrome developer tools
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС

What's hot (19)

PDF
Изоморфные Java script приложения с catberry.js
PDF
Сергей Константинов — Что интересного готовит нам W3C
PDF
Пластилиновый код: как перестать кодить и начать жить
PPTX
I tmozg js_school
PPT
Take more from Jquery
PPTX
Нетривиальная обработка ошибок
PDF
Vuejs composition API
PDF
Почему Mojolicious?
PDF
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
PDF
WordPress Cron API
PPTX
ODP
MongoDB: Приложение по поиску точек на карте
PPTX
Основы MongoDB + NodeJS
PPTX
Основы JS
PDF
Making Scalable JavaScript Application
KEY
Batch processing in rails
PDF
'The best practices' by KONSTANTIN KULAKSYZ at OdessaJS'2020
PDF
Decorators' recipes
PDF
Дмитрий Щадей "Зачем и как мы используем jsLint"
Изоморфные Java script приложения с catberry.js
Сергей Константинов — Что интересного готовит нам W3C
Пластилиновый код: как перестать кодить и начать жить
I tmozg js_school
Take more from Jquery
Нетривиальная обработка ошибок
Vuejs composition API
Почему Mojolicious?
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
WordPress Cron API
MongoDB: Приложение по поиску точек на карте
Основы MongoDB + NodeJS
Основы JS
Making Scalable JavaScript Application
Batch processing in rails
'The best practices' by KONSTANTIN KULAKSYZ at OdessaJS'2020
Decorators' recipes
Дмитрий Щадей "Зачем и как мы используем jsLint"
Ad

Viewers also liked (20)

PDF
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
PPTX
Разработка веб-приложений с помощью TypeScript
PDF
Where to test first?
PDF
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
ODP
Quality assurance
PDF
шардинг на коленке
PPTX
Организация надежного резервного копирования веб-проекта. Практика и подводны...
PPTX
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
PPTX
Controlling Component Chaos with NuGet and Versioning
PDF
Организация конвейера автоматизации тестирования / Алексей Петров (Mail.ru Gr...
PDF
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
PPTX
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
PPTX
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
PDF
Single Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/store
PPT
MongoDB basics in Russian
PDF
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
PPTX
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
PPTX
Нагрузочное тестирование теория Кожухов
PDF
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
PDF
"Angular 2: Всех переиграл" Евгений Жарков
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
Разработка веб-приложений с помощью TypeScript
Where to test first?
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Quality assurance
шардинг на коленке
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Controlling Component Chaos with NuGet and Versioning
Организация конвейера автоматизации тестирования / Алексей Петров (Mail.ru Gr...
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Single Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/store
MongoDB basics in Russian
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Нагрузочное тестирование теория Кожухов
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
"Angular 2: Всех переиграл" Евгений Жарков
Ad

Similar to "CommonJS для браузера", Антон Шувалов, MoscowJS 15 (15)

PPT
JavaScript-библиотека
PPT
Web весна 2012 лекция 9
PDF
JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)
PPTX
JavaScript-модули "из прошлого в будущее"
PDF
Современный фронтенд -- как не утонуть в море хайпа?
PPT
Арсений Заречнев и Федор Шумов - Одностраничные приложения
PDF
Арсений Заречнев и Федор Шумов - Одностраничные приложения
PDF
Внутреннее устройство и оптимизация бандла webpack
PDF
webpack: 7 бед - один ответ
PDF
Frontend: Путешествие в мир модульных загрузчиков
PPTX
Node JS проблемы надежности, и пути их решения
PDF
Basis.js – «под капотом»
PDF
Современный фронтенд за 30 минут.
PPTX
What do you MEAN? или введение в Fullstack JavaScript
JavaScript-библиотека
Web весна 2012 лекция 9
JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)
JavaScript-модули "из прошлого в будущее"
Современный фронтенд -- как не утонуть в море хайпа?
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Внутреннее устройство и оптимизация бандла webpack
webpack: 7 бед - один ответ
Frontend: Путешествие в мир модульных загрузчиков
Node JS проблемы надежности, и пути их решения
Basis.js – «под капотом»
Современный фронтенд за 30 минут.
What do you MEAN? или введение в Fullstack JavaScript

More from MoscowJS (20)

PDF
Александр Русаков - TypeScript 2 in action
PDF
Виктор Розаев - Как не сломать обратную совместимость в Public API
PDF
Favicon на стероидах
PDF
E2E-тестирование мобильных приложений
PDF
Reliable DOM testing with browser-monkey
PDF
Basis.js - Production Ready SPA Framework
PDF
Контекст в React, Николай Надоричев, MoscowJS 31
PDF
Верстка Canvas, Алексей Охрименко, MoscowJS 31
PDF
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
PDF
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
PDF
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
PDF
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
PDF
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
PDF
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
PDF
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
PDF
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
PDF
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
PDF
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
PDF
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
PDF
"Доклад не про React", Антон Виноградов, MoscowJS 27
Александр Русаков - TypeScript 2 in action
Виктор Розаев - Как не сломать обратную совместимость в Public API
Favicon на стероидах
E2E-тестирование мобильных приложений
Reliable DOM testing with browser-monkey
Basis.js - Production Ready SPA Framework
Контекст в React, Николай Надоричев, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
"Доклад не про React", Антон Виноградов, MoscowJS 27

"CommonJS для браузера", Антон Шувалов, MoscowJS 15