More Related Content Similar to Филипп Ковалев — Путь в npm Similar to Филипп Ковалев — Путь в npm (20) Филипп Ковалев — Путь в npm2. Зачем модули?
1. Делимся решениями с другими командами
2. Уменьшаем кодовую базу приложения
3. Повышаем качество кода
2
3. Почему показываем «наружу»
1. Тесты, документация, дисциплина
2. Фидбек: фич-реквесты, баги, критика
3. Соискатели могут ознакомиться с предметом
3
6. npm install xamel
xamel .parse(xmlString, function( err , xml ) {
if ( ! err ) {
console.log( JSON.stringify( xml ) );
}
});
01.
02.
03.
04.
05.
6
7. <text>
м <fix> о </fix> сква
</text>
{ text: {
_: 'мсква' ,
fix: 'о'
} }
Порядок узлов: пример
01.
02.
03.
01.
02.
03.
04.
7
9. API для доступа к узлам
xml .$( 'banner/title/text()' )
xml .$( 'menu/item' ).eq( 0 ).attr( 'link' )
xml .$( 'list/*' ).eq( 0 ).name
01.
02.
03.
9
10. Array#map/reduce
var result = xml .$( 'text/node()' )
.map(function( el ) {
return ( el instanceof xamel.Tag ) ?
{ fix : el .text() } :
el ;
});
01.
02.
03.
04.
05.
06.
10
11. Умеет разбирать часть дерева
xamel .parse(
xml,
{ buildPath : 'path/to/node' } ,
function( error , nodeset ) {
// ...
});
01.
02.
03.
04.
05.
06.
11
16. npm install susanin
— Заточен под ЧПУ
— Парсинг запроса и формирование ссылок
— Гибкое определение параметров в URL
— Связывание URL с данными
16
18. npm install terror
var Terror = require( 'terror' ),
MyError = Terror .create( 'MyError' , {
STRANGE_THING_HAPPENS :
[ 2001 , 'Something strange happens' ]
});
01.
02.
03.
04.
05.
18
19. Бросаем исключение
throw MyError .create(
MyError .CODES.STRANGE_THING_HAPPENS);
throw new MyError (
MyError .CODES.STRANGE_THING_HAPPENS);
01.
02.
01.
02.
19
24. npm install asker
— gzip
— Кастомная обработка HTTP кодов ответа
— Перезапросы
— Тонкая настройка http.Agent
— Интеграция с Terror
— Promise обертка vow-asker
24
26. Пример вызова
var ask = require( 'asker' );
ask ({ host : 'ya.ru' }, function( err , response ) {
if ( ! err ) {
console.log( response .data);
}
});
01.
02.
03.
04.
05.
06.
26
28. Объект response.meta
{
options : Object ,
time : { network : Number , total : Number },
retries : { total : Number , used : Number }
}
01.
02.
03.
04.
05.
28
36. Чек лист
— Тесты и jshint конфиг
— Документация для людей
— «Чистота» API
— CI и контроль за зависисмостями
— Взаимодействие с пользователями
36