Upload
it61
View
278
Download
2
Embed Size (px)
Citation preview
From .NET to Node.js,путешествие туда и обратно?
Виталий Слободин @vitalliumm
Backend Meetup 23.01.2015
Кто я?
• упоротый .NET разработчик • сижу на .NET больше 5 лет (не отпускает)
• Node.js - 1,5 года коммерческой разработки
Почему?
Зачем?
Убийца - садовник?
Трилогия
1. Нежданное
путешествие
2. Пустошь Смауга
3. Битва пяти воинств
Нежданное путешествие
Почему Node.js?• JavaScript
• скорость
• асинхронность
• одна кодовая база
• работает везде
• и другое
Асинхронность
Пустошь Смауга
.NET vs Node.jsIIS => Node.exe
C# / VB => JavaScript
NuGet => npm ASP.NET WebForm => Express + EJS
ASP.NET MVC => Express + Vash ASP.NET WebAPI => Express
SignalR => socket.io
Переключаемся…
npm init npm install express —save
npm install vash —save
express.js
package.json vs packages.config
package.json packages.config
vash (@razor)
middlewares?
middlewares!npm install body-parser —save
npm install compression —save
npm install cookie-parser —save
npm install express-mailer —save
npm install express-session —save
.NET vs Node.js
C# => NodeJs
F# => NodeJs
Python => NodeJs
TSQL => NodeJs
Powershell => NodeJs
Битва пяти воинств
Орки (ES5)• дублированные callback’и• вызов callback'а может потеряться по дороге• В обработчик emitter могут прийти несколько событий типа «error»• Callback'и — отстой• У вас могут быть ошибки вообще из других потоков
… урки (ES2015)• Если не поймать ошибку, то все полетит к чертям• Часто непонятно, как именно обрабатываются ошибки• Обработчики ошибок слишком многословны• Callback'и — отстой (╯°□°)╯︵ ┻━┻• библиотека может случайно запустить callback несколько раз, или
неправильно очистит обработчики
Отладка?
console.log• встроенный отладчик
• node-inspector
• http://www.joyent.com/developers/node/debug
• отладчики в IDE
Do not disturb… Debugging is in progress…
JavaScript
Мы в дерьме
TypeScript FTW!
JavaScript vs TypeScript
JavaScript vs TypeScript
TypeScript
TypeScript• Аннотации типов • проверка на этапе редактирования • классы • интерфейсы • “миксины” • параметры по умолчанию • шаблоны • модули • и другое
Завершаем приключение
Q&A
Спасибо!
Какменя найти:
http://vk.com/vitallium @vitaliumm
http://github.com/vitallium
http://it61.herokuapp.com
А также в нашемуютном Slack чате: