full stack javascript case study na podstawie maracuya jukebox audio player
TRANSCRIPT
Full Stack JavaScriptMaracuyá Jukebox
Marek Będkowski
Plan
• Demo
• Ogólne wprowadzenie
• Zarządzanie zależnościami/automatyzacja zadań
• Zarządzanie modułami natywnymi
Demo
A co to ja winampa nie znam???
Demo
Ogólne wprowadzenie
Ogólne wprowadzenie
JS Stack• Nodejs
• Npm
• Grunt
• Sqlite
• Expressjs
• Socket.io
• jQuery/jQueryMobile
• PhoneGap
• Weinre
• Node-webkit
Npm – zarządzanie zależnościami
• package.json (https://github.com/bendi/maracuya-jukebox/blob/master/maracuya/package.json)
• Zdalne repo: npmjs.org
Total Packages: 79 946
12 299 994 downloads in the last day71 743 126 downloads in the last week300 030 760 downloads in the last month
Grunt – automatyzacja zadań
• Gruntfile.js (https://github.com/bendi/maracuya-jukebox/blob/master/maracuya/Gruntfile.js)
• Oficjalna strona: gruntjs.com
• Łatwo rozszerzanie poprzez pluginy (obecnie 3079)
• grunt-contrib-jshint
Nodejs a wieloplatformowość
Nodejs a wieloplatformowość
Maracuyá Jukebox a odtwarzacz mp3
Odtwarzacz mp3
• …a może napiszę go sam
Odtwarzacz mp3
• Open-source
• multi-arch
• No external deps
• play/pause/next/prev/jump/volume
Odtwarzacz mp3
• Mpg123
• Open-source
• multi-arch
• No external deps
• Tryb interaktywny (play/pause/next/prev/jump/volume)
Nodejs a wieloplatformowość
Node-gyp kompilacja modułów natywnych
• Wielo platformowe narzędzie kompilacji
• Pochodna projektu gyp znanego z Chromium
Mpg123 a nodejs…
• node-mpg123n – natywny moduł korzystający z API mpg123
• Wieloplatformowość w takim samym zakresie jak nodejs
Mpg123 a nodejs…
• node-mpg123n – natywny moduł korzystający z API mpg123
• Wieloplatformowość w takim samym zakresie jak nodejs
• Wymaga kompilacji modułu podczas wykonywania komendy npminstall
Czy muszę to konfigurować/kompilować???
• node-gyp - konfiguracja
•On Windows:
•Python (v2.7.3 recommended, v3.x.x is not supported)
•Windows XP/Vista/7:
•Microsoft Visual Studio C++ 2010 (Express version works well)
•For 64-bit builds of node and native modules you will also need the Windows 7
64-bit SDK
•If the install fails, try uninstalling any C++ 2010 x64&x86 Redistributable that
you have installed first.
•If you get errors that the 64-bit compilers are not installed you may also need
the compiler update for the Windows SDK 7.1
•Windows 7/8:
•Microsoft Visual Studio C++ 2012 for Windows Desktop (Express version works
well)
Konfigurować?
A może by tak przechowywać binarki?
Npm – przechowuje biblioteki JavaScript
A może tak przechowywać binarki?
• Node-pre-gyp
Features
• A command line tool called node-pre-gyp that can install your package'sc++ module from a binary.
• A variety of developer targeted commands for packaging, testing, and publishing binaries.
A gdzie je przechowywać?
• Amazon S3
• Mpg123n repo (http://mpg123n.s3.amazonaws.com)
Npm install pobiera binarkę
• Npm install (wersja modulu /ABI/platform)
• node-pre-gyp http GET https://mpg123n.s3-us-west-2.amazonaws.com/Release/bindings-v0.0.21-node-v11-win32-ia32.tar.gz
• node-pre-gyp http 200 https://mpg123n.s3-us-west-2.amazonaws.com/Release/bindings-v0.0.21-node-v11-win32-ia32.tar.gz
• [mpg123n] Success: "C:\Users\marek.bedkowski\Documents\maracuya-jukebox\maracuya\node_modules\mpg123n\build\Release\bindings.node" is installed
Konfiguracja
• Package.json
"binary": {"module_name": "bindings","module_path": "./build/Release","host": "https://mpg123n.s3-us-west-2.amazonaws.com","remote_path" : "./{configuration}/"
}
Podsumowanie
• Npm – zarzadzanie zależościami/biblioteki JS
• Node-gyp – buduje moduły natywne
• Node-pre-gyp – pomija proces budowania (pobiera binarkę)
• Grunt – automatyzacja zadań/buduje projekt
Pytania?
Dziękuję za uwagę
Marek Będkowski