Как не утонуть в мегабайтах js-кода

30

Upload: tfmailru

Post on 27-Jun-2015

278 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Как не утонуть в мегабайтах JS-кода
Page 2: Как не утонуть в мегабайтах JS-кода

Сайты в 2002 году

– мало javascript– независимость

Page 3: Как не утонуть в мегабайтах JS-кода

Структура проекта

/js /common.js /editor.js

Page 4: Как не утонуть в мегабайтах JS-кода

2005 год

/js

/common.js /editor.js /js-lib.js

Page 5: Как не утонуть в мегабайтах JS-кода
Page 6: Как не утонуть в мегабайтах JS-кода

Проблемы

– Путаница– Растущий размер файла– Нет code reuse

Page 7: Как не утонуть в мегабайтах JS-кода
Page 8: Как не утонуть в мегабайтах JS-кода

Логическое разделение

/js /folder.js /message.js /search.js ...

Page 9: Как не утонуть в мегабайтах JS-кода

Проблемы

– Размер– Подключение– Сопровождение

Page 10: Как не утонуть в мегабайтах JS-кода

Результат

<head> <script></script> <script></script> <script></script> …</had>

Page 11: Как не утонуть в мегабайтах JS-кода

Тег как компонент

<div class="component" onclick="return {type:'folder'}"></div>

Page 12: Как не утонуть в мегабайтах JS-кода

Тег как компонент

<div class="component" onclick="return {type:'folder'}"></div>

Page 13: Как не утонуть в мегабайтах JS-кода

Нужен функционал

– Найти компонент– Определить компонент– Подключить JS файлы– Очередность подключения– Один файл один раз

Page 14: Как не утонуть в мегабайтах JS-кода

Найти компонет

getElementsByCSSSelector('.component');

Page 15: Как не утонуть в мегабайтах JS-кода

Старые браузеры

<div id=“random_12345”> … </div><script>create(“random_12345”)</script>

Page 16: Как не утонуть в мегабайтах JS-кода

Тип компонента

<div class="component" onclick="return {type:'folder'}"></div>

var type = div.onclick().type;

Page 17: Как не утонуть в мегабайтах JS-кода

Генерация тега script

createScript = function (src, charset){ script = document.createElement('script'); ... head.insertBefore(script, head.firstChild);}

Page 18: Как не утонуть в мегабайтах JS-кода

require

require( // зависимость от других файлов ['file1', 'file2' ...], // уведомление о загрузке (callback) function(){ // инициализация loaded('file'); });

Page 19: Как не утонуть в мегабайтах JS-кода

require дерево

Folders -> Dates -> Strings

Folders.jsrequire('Dates', function(){loaded('Folders')});Dates.jsrequire('Strings', function(){loaded('Dates')});Strings.js/* Strings staff */ loaded('Strings')

Page 20: Как не утонуть в мегабайтах JS-кода

Запуск компонента

component = getElsBySelector('.component');type = component.onclick().type;

require( [getFileName(type)], function(){ window[type].init(); });

Page 21: Как не утонуть в мегабайтах JS-кода

Тег как компонент

<div class="component" onclick="return {type:'folder'}"></div>

Page 22: Как не утонуть в мегабайтах JS-кода

События

Page 23: Как не утонуть в мегабайтах JS-кода

Календарь разработчика

Page 24: Как не утонуть в мегабайтах JS-кода

Календарь заказчиков

Page 25: Как не утонуть в мегабайтах JS-кода

Календарь заказчиков

Page 26: Как не утонуть в мегабайтах JS-кода

Календарь заказчиков

Page 27: Как не утонуть в мегабайтах JS-кода

События

CB.observe (type, listener, object);

CB.dispatch (type, object, event);

Page 28: Как не утонуть в мегабайтах JS-кода

Очереди

CB.dispatch (type, object, event, 1);

CB.observe (type, listener, object);

Page 29: Как не утонуть в мегабайтах JS-кода

Календарь заказчиков

Page 30: Как не утонуть в мегабайтах JS-кода

Сумин АндрейРуководитель разработки клиентской части

[email protected]

СПАСИБО!