SlideShare a Scribd company logo
www.fg.cz
Využití NodeJS pro Javisty
Michal Franc
2
3
4
5
TEST
snadná instalace
množství test runnerů / frameworků / assert
6
var request = require('supertest');
var base = require('../base.js');
request = request(base.baseUrl);
describe('úložiště obrázky', function() {
it('poskytuje uložený obsah dle uri', function(done) {
request
.get('/storage/pictures/logo.jpg‚)
.auth(base.user,base.pass)
.expect('Content-Type', /image/)
.expect('Cache-Control', /600/)
.expect(200, done);
})
});
7
var request = require('supertest'); var base = require('../base.js');
var cheerio = require('cheerio'); var should = require('should');
request = request(base.baseUrl);
describe('Úvodní stránka', function() {
before(function(done) {
request.get('/homepage.html').auth(base.user,base.pass)
.end(function(err, res) {
if (err) return done(err);
this.doc = cheerio.load(res.text); done();
}.bind(this));
});
it('obsahuje zprávy za 1-10dní', function() {
this.doc('#middle').find('.one-day-line').length
.should.within(1,10);
});
});
8
CLI
integrace do command line
9
> npm install –g yo
> sudo npm install -g yo@1.1.2
10
Yeoman – YO
project scaffolding
11
12
• Založení projektu – edeecms generátor
• Načte developer settings
• Provede git pull kostry projektu
• Zeptá se na vlastnosti projektu, výběr modulů
• Dle výběru zkopíruje složky z kostry
• Vygeneruje heslo do db
• Založí databázi
• Stáhne základní závislosti pro další provoz
• Modifikace projektu – subgenerátor
• Přidání modulu
• Založení databáze
13
14
Grunt
task runner
buildování js, css
15
> grunt server
16
> grunt deployWar
17
> grunt deployWar
sshexec: {
deployWar: {
command: [
'cd <%= projectRoot %>/<%= warRoot %>',
'mv ./<%= expandedWar %>'+
' ./backup/<%= expandedWar %>'+
'<%= grunt.template.today("yyyymmdd-HHMMss") %>',
'rm -rf ./<%= expandedWar %>/',
'unzip -o ./<%= warFile %>'+
' -d ./<%= expandedWar %>',
'rm ./<%= warFile %>',
'find ./backup/ -maxdepth 1 -ctime +3 | xargs rm -rf'
].join(' && '),
options: { config: 'sshsettings' }
}}
18
NodeJS – npm
Mocha (Jasmine)
Yeoman
Bower
Grunt (Gulp)
19
Proč?

More Related Content

PDF
CRCE - přehled datového modelu a vybraná API
PPTX
Selenium Webdriver - jOpenSpace 2015
PDF
Miroslav Bajtoš - Nativní async/await v Node.js - už tam jsme?
PPTX
Vizuální regresní testy
PDF
Použití Next.js a Reactí UI khinihovny v aplikaci
PPT
2010 JBoss Application Server
PPTX
MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)
PPTX
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
CRCE - přehled datového modelu a vybraná API
Selenium Webdriver - jOpenSpace 2015
Miroslav Bajtoš - Nativní async/await v Node.js - už tam jsme?
Vizuální regresní testy
Použití Next.js a Reactí UI khinihovny v aplikaci
2010 JBoss Application Server
MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
Ad

Využití NodeJS pro Javisty - jOpenSpace 2014

  • 1. www.fg.cz Využití NodeJS pro Javisty Michal Franc
  • 2. 2
  • 3. 3
  • 4. 4
  • 5. 5 TEST snadná instalace množství test runnerů / frameworků / assert
  • 6. 6 var request = require('supertest'); var base = require('../base.js'); request = request(base.baseUrl); describe('úložiště obrázky', function() { it('poskytuje uložený obsah dle uri', function(done) { request .get('/storage/pictures/logo.jpg‚) .auth(base.user,base.pass) .expect('Content-Type', /image/) .expect('Cache-Control', /600/) .expect(200, done); }) });
  • 7. 7 var request = require('supertest'); var base = require('../base.js'); var cheerio = require('cheerio'); var should = require('should'); request = request(base.baseUrl); describe('Úvodní stránka', function() { before(function(done) { request.get('/homepage.html').auth(base.user,base.pass) .end(function(err, res) { if (err) return done(err); this.doc = cheerio.load(res.text); done(); }.bind(this)); }); it('obsahuje zprávy za 1-10dní', function() { this.doc('#middle').find('.one-day-line').length .should.within(1,10); }); });
  • 9. 9 > npm install –g yo > sudo npm install -g yo@1.1.2
  • 11. 11
  • 12. 12 • Založení projektu – edeecms generátor • Načte developer settings • Provede git pull kostry projektu • Zeptá se na vlastnosti projektu, výběr modulů • Dle výběru zkopíruje složky z kostry • Vygeneruje heslo do db • Založí databázi • Stáhne základní závislosti pro další provoz • Modifikace projektu – subgenerátor • Přidání modulu • Založení databáze
  • 13. 13
  • 17. 17 > grunt deployWar sshexec: { deployWar: { command: [ 'cd <%= projectRoot %>/<%= warRoot %>', 'mv ./<%= expandedWar %>'+ ' ./backup/<%= expandedWar %>'+ '<%= grunt.template.today("yyyymmdd-HHMMss") %>', 'rm -rf ./<%= expandedWar %>/', 'unzip -o ./<%= warFile %>'+ ' -d ./<%= expandedWar %>', 'rm ./<%= warFile %>', 'find ./backup/ -maxdepth 1 -ctime +3 | xargs rm -rf' ].join(' && '), options: { config: 'sshsettings' } }}
  • 18. 18 NodeJS – npm Mocha (Jasmine) Yeoman Bower Grunt (Gulp)

Editor's Notes

  • #2: Reálné use casy použití Doplnit možnosti Vaší aplikace
  • #3: Nodejs stojí za pozornost Mladá technologie
  • #4: NodeJS staví na JS enginu Google V8 Míří na síťové aplikace, rest API apod., silné jsou i webové aplikace Kolem V8 jsou async IO API
  • #5: NodeJS je používán pro workflow v rámci webdevelopmentu Pokud nepoužíváte, měli byste vyzkoušet
  • #6: Jednoduchá instalace Na výběr je několik test runnerů – Jasmine, Mocha, Karma
  • #7: Jednoduchý test hlaviček
  • #8: Snadno parsovat stránku
  • #9: Oproti javě je instalace dotaženější v integraci na cli NPM install -g
  • #11: Založení projektu Mvn archetype sucks
  • #13: Založení projektu pomocí yeoman umí řešit i složitější porces Příklad pro založení Edee CMS projektu
  • #14: Změny lze diffnout
  • #15: Task runner Primárně build js, css
  • #16: Pomocí grunt tasku lze stáhnout webovou aplikaci s embedovaným Tomcat, rychlé spoustění projektu bez konfigurace
  • #17: Grunt task na deployment pomocí ssh
  • #20: Nabízí se pro poskytování služeb pro testery, technické uživatele aplikace Rozšíříte si obzory – díky tomu můžete přijít s něčím novým