91
О себе Александр Кучеренко В DataArt полгода Занимаюсь программированием 7+ лет За это время писал на: PHP, JavaScript, ActionScript3, C#, Java(Android), Objective-C

Node JS проблемы надежности, и пути их решения

Embed Size (px)

Citation preview

Page 1: Node JS проблемы надежности, и пути их решения

О себе

Александр Кучеренко

• В DataArt полгода

• Занимаюсь программированием 7+ лет

• За это время писал на: PHP, JavaScript, ActionScript3, C#, Java(Android), Objective-C

Page 2: Node JS проблемы надежности, и пути их решения

Node JS проблемы надежности, и пути их решения

(Мой личный опыт)

Page 3: Node JS проблемы надежности, и пути их решения

Node JS +

1. Весело писать код.

2. Огромное количество готовых решений.

3. Перспективно.

4. Легко разворачивать, легко писать.

5. Возможен прирост производительности.

6. Модно.

Page 4: Node JS проблемы надежности, и пути их решения

Node JS -

1. Не надежно.

2. Утечки памяти.

3. Слишком быстро развивается.

4. Сложные вещи делать сложно.

Page 5: Node JS проблемы надежности, и пути их решения

Node JS

Стоит ли связываться?

Есть ли необходимость именно в Node JS?

Нужно шарить код между бекендом и фронтендом?

Возможно вашу задачу можно решить на Python, Ruby… PHP (если не стыдно)

Page 6: Node JS проблемы надежности, и пути их решения

Node JS

Ловим Exceptions

Page 7: Node JS проблемы надежности, и пути их решения

Node JS

В Javascript есть два вида кода

Синхронный Асинхронный

Page 8: Node JS проблемы надежности, и пути их решения

Bower

http://bower.io/

Page 9: Node JS проблемы надежности, и пути их решения

Bower

$npm install -g bower

Page 10: Node JS проблемы надежности, и пути их решения

Bower

1. Манифест ./bower.json

2. По дефолту все скачивается в ./components

3. Умеет управлять зависимостями

Page 11: Node JS проблемы надежности, и пути их решения

Bower

Хочу погоду на сайт!

Page 12: Node JS проблемы надежности, и пути их решения

Bower

Хочу погоду на сайт!

Page 13: Node JS проблемы надежности, и пути их решения

Bower

bower.json

$ bower install

Page 14: Node JS проблемы надежности, и пути их решения

Bower

Обновление

Page 15: Node JS проблемы надежности, и пути их решения

Bower

Плюсы?

1. Не надо комитить все в репозиторий

2. Легко и относительно безопасно обновить любой из компонентов

3. Разные тулзы понимают bower

Page 16: Node JS проблемы надежности, и пути их решения

Bower

Минусы?

1. При деплое это нужно будет установить

Page 17: Node JS проблемы надежности, и пути их решения

Bower

Минусы?

1. При деплое это нужно будет установить

Page 18: Node JS проблемы надежности, и пути их решения

Bower

Минусы?

1. При деплое это нужно будет установить

Page 19: Node JS проблемы надежности, и пути их решения

Вопросы

Page 20: Node JS проблемы надежности, и пути их решения

Require JS

А как все это подключать ?

Page 21: Node JS проблемы надежности, и пути их решения

Require JS

Как обычно мы делаем

Page 22: Node JS проблемы надежности, и пути их решения

Require JS

Page 23: Node JS проблемы надежности, и пути их решения

Require JS

http://requirejs.org/

Page 24: Node JS проблемы надежности, и пути их решения

Require JS

AMD?

Page 25: Node JS проблемы надежности, и пути их решения

Require JS

Asynchronous Module Definition (AMD)

define(id?, dependencies?, factory)

Page 26: Node JS проблемы надежности, и пути их решения

Require JS

Подключаем Require JS

Page 27: Node JS проблемы надежности, и пути их решения

Require JS

Page 28: Node JS проблемы надежности, и пути их решения

Require JS

Как выглядит модуль?

Page 29: Node JS проблемы надежности, и пути их решения

Require JS

Как выглядит модуль?

Page 30: Node JS проблемы надежности, и пути их решения

Require JS

А есть еще CommonJS

Page 31: Node JS проблемы надежности, и пути их решения

Require JS

Плюсы?

1. Организация кода

2. Управление порядком загрузки

3. Вложенные зависимости

4. Отлично работает на NodeJs

5. Имплементация AMD (Asynchronous Module Definition) спецификации

Page 32: Node JS проблемы надежности, и пути их решения

Require JS

Минусы?

1. Если зависимостей много в них можно запутаться

Page 33: Node JS проблемы надежности, и пути их решения

Вопросы

Page 34: Node JS проблемы надежности, и пути их решения

Backbone JS

Что такое :

http://backbonejs.org/

Page 35: Node JS проблемы надежности, и пути их решения

Backbone JS

Backbone JS это:

1. Не фреймворк

2. Models, View, Collections and Events

3. И Router

4. И много-много JSON и REST

Page 36: Node JS проблемы надежности, и пути их решения

Backbone JS

Почему Backbone JS?

1. Потому что 6,5 kb

2. Не решает за меня как мне писать моё приложение

3. Не лезет в мой HTML

4. Есть расширения на все случаи жизни

5. Отлично документирован

6. НЕТ МАГИИ!!

7. There's More Than One Way To Do It

Page 37: Node JS проблемы надежности, и пути их решения

Backbone JS

Кто использует Backbone JS?

Page 38: Node JS проблемы надежности, и пути их решения

Backbone JS

Кто использует Backbone JS?

Page 39: Node JS проблемы надежности, и пути их решения

Backbone JS

Кто использует Backbone JS?

Page 40: Node JS проблемы надежности, и пути их решения

Backbone JS

Backbone JS это библиотека:

1. marionette.js

2. chaplin.js

3. vertebrae.js

4. backbone boilerplate

5. thorax

Page 41: Node JS проблемы надежности, и пути их решения

Backbone JS

Чего хочет Backbone:

1. underscore.js /lo-dash.js

2. json2.js для IE

3. jQuery / Zepto

Page 42: Node JS проблемы надежности, и пути их решения

Backbone JS

Как это работает?

Page 43: Node JS проблемы надежности, и пути их решения

Backbone JS

MODELS

Models are the heart of any JavaScriptapplication, containing the interactive data aswell as a large part of the logic surrounding it:conversions, validation, computed properties,and access control.

backbonejs.org/#Model

Page 44: Node JS проблемы надежности, и пути их решения

Backbone JS

Как создать модель?

Page 45: Node JS проблемы надежности, и пути их решения

Backbone JS

Создали, а что дальше?

Page 46: Node JS проблемы надежности, и пути их решения

Backbone JS

А изменить ?

Page 47: Node JS проблемы надежности, и пути их решения

Backbone JS

EVENTS

Hey, I've changed!

Page 48: Node JS проблемы надежности, и пути их решения

Backbone JS

Page 49: Node JS проблемы надежности, и пути их решения

Backbone JS

А можно и по другому:

Page 50: Node JS проблемы надежности, и пути их решения

Backbone JS

Готовим модель:

Page 51: Node JS проблемы надежности, и пути их решения

Backbone JS

Валидация:

Page 52: Node JS проблемы надежности, и пути их решения

Backbone JS

Валидация:

Page 53: Node JS проблемы надежности, и пути их решения

Backbone JS

URL, REST из коробки:

Backbone.sync

Page 54: Node JS проблемы надежности, и пути их решения

Backbone JS

URL, REST из коробки:

Backbone.sync

Page 55: Node JS проблемы надежности, и пути их решения

Backbone JS

Примеры:

1. Users

2. All pages

3. Latest news

Page 56: Node JS проблемы надежности, и пути их решения

Backbone JS

Как создать коллекцию:

Page 57: Node JS проблемы надежности, и пути их решения

Backbone JS

Получаем модели:

Page 58: Node JS проблемы надежности, и пути их решения

Backbone JS

Удаляем модели:

Page 59: Node JS проблемы надежности, и пути их решения

Backbone JS

Добавляем модели:

Page 60: Node JS проблемы надежности, и пути их решения

Backbone JS

Сортируем коллекцию:

Page 61: Node JS проблемы надежности, и пути их решения

Backbone JS

Сортируем коллекцию:

Page 62: Node JS проблемы надежности, и пути их решения

Backbone JS

VIEWS

Views are objects which do two things:

1. display data (most of the time models)

2. capture user interaction to trigger code.

Page 63: Node JS проблемы надежности, и пути их решения

Backbone JS

Создаем View

Page 64: Node JS проблемы надежности, и пути их решения

Backbone JS

Добавляем контент:

The view is just an empty div.

Page 65: Node JS проблемы надежности, и пути их решения

Backbone JS

Обновляем View вместе с моделью:

Page 66: Node JS проблемы надежности, и пути их решения

Backbone JS

Шаблоны:

Page 67: Node JS проблемы надежности, и пути их решения

Backbone JS

Page 68: Node JS проблемы надежности, и пути их решения

Backbone JS

Взаимодействие с пользователем:

Page 69: Node JS проблемы надежности, и пути их решения

Backbone JS

EVENTS

Hey, I`m back!

Page 70: Node JS проблемы надежности, и пути их решения

Backbone JS

Добавляем события в любой объект:

Page 71: Node JS проблемы надежности, и пути их решения

Backbone JS

ROUTER

Page 72: Node JS проблемы надежности, и пути их решения

Вопросы

Page 73: Node JS проблемы надежности, и пути их решения

Classes in JS

Есть ли класcы в JS?

- НЕТ!

Page 74: Node JS проблемы надежности, и пути их решения

Classes in JS

А можно сделать JS?

- ДА!

Page 75: Node JS проблемы надежности, и пути их решения

Classes in JS

А нужно ?

1. Наследование в JS это не удобно

2. ECMAScript 6 class && extends

3. Почему бы и нет?

Page 76: Node JS проблемы надежности, и пути их решения

Classes in JS

Page 77: Node JS проблемы надежности, и пути их решения

Classes in JS

Как?

js-toolbox

https://github.com/jimmydo/js-toolbox

Page 78: Node JS проблемы надежности, и пути их решения

Вопросы

Page 79: Node JS проблемы надежности, и пути их решения

Grunt JS

А давайте это все соберем в один маленький файлик?

Page 80: Node JS проблемы надежности, и пути их решения

Grunt JS

Проблемы в раю:

1. У нас есть SASS, у нас есть LESS И Stylus

2. А еще у нас 5 тысяч файлов суммарно на 50 мегабайт которые надо доставить клиенту, все исходники на CoffeScript

3. А еще мы а еще мы хотим чтобы это все собиралось автоматом на инстансах

Page 81: Node JS проблемы надежности, и пути их решения

Grunt JS

Page 82: Node JS проблемы надежности, и пути их решения

Grunt JS

Зачем?

1. Автоматизировать рутину

2. Помощь при деплое

3. Просто использовать

4. Есть много готовых плагинов

5. Популярен

Page 83: Node JS проблемы надежности, и пути их решения

Grunt JS

Установка

$npm install -g grunt-cli

$npm install grunt --save

Page 84: Node JS проблемы надежности, и пути их решения

Grunt JS

GRUNTFILE.JS

Page 85: Node JS проблемы надежности, и пути их решения

Grunt JS

GRUNTFILE.JS

Page 86: Node JS проблемы надежности, и пути их решения

Grunt JS

GRUNTFILE.JS

Page 87: Node JS проблемы надежности, и пути их решения

Grunt JS

$grunt

Page 88: Node JS проблемы надежности, и пути их решения

Grunt JS

Плагины:

Page 89: Node JS проблемы надежности, и пути их решения

Grunt JS

Кто использует:

Page 90: Node JS проблемы надежности, и пути их решения

Вопросы

Page 91: Node JS проблемы надежности, и пути их решения

Ссылочки

Bower презентация:• http://danheberden.com/presentations/bower

Bower• http://bower.io/

Require JS• http://requirejs.org/

Backbone• http://backbonejs.org/

JS-toolbox• https://github.com/jimmydo/js-toolbox

Grunt JS• http://gruntjs.com/

Мой Github:• https://github.com/AlexTiTanium

backbone-orm:• http://vidigami.github.io/backbone-orm/

rivetsjs• http://www.rivetsjs.com/

backbone.stickit• http://nytimes.github.io/backbone.stickit/

Marionette• http://marionettejs.com/

chaplinjs.org • http://chaplinjs.org/

Vertebrae • https://github.com/hautelook/vertebrae

Backbone-boilerplate:• https://github.com/backbone-boilerplate/backbone-boilerplate

Thorax• https://github.com/walmartlabs/thorax