Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
-
Upload
codemotion -
Category
Technology
-
view
311 -
download
6
Transcript of Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Luciano MurruniComtaste S.r.l
Senior Software Developer @jimilucio
[email protected] www.comtaste.com
Come ottimizzare il workflow
di web app con Javascript
2
Argomenti trattati:- Strumenti e tool a disposizione per velocizzare e migliorare la
scrittura e la qualità del software
- Cos'è Yeoman e come si può usare per la nostra applicazione
- Cos'è Bower e perché diventa fondamentale per gestire le dipendenze di progetto
- Cos'è Grunt/Gulp, ed in che modo ci aiuta ad automatizzare i nostri task
- Come si effettua il test del nostro codice
- Come si crea un pacchetto ottimizzato per il rilascio in produzione
Come ottimizzare il workflow di web app con javascript
3
Frameworks
Come ottimizzare il workflow di web app con javascript
PatternCoding
Test Optimizzation
Version control
Dependency Analysis
Planning
Docs
Build
Continuous Integration
Management
5
Come ottimizzare il workflow di web app con javascript
Come migliorare il workflow per lo sviluppo?
• Snellire la fase di inizializzazione e configurazione di un nuovo progetto
• Utilizzare strumenti per gestire tutte le dipendenze
• Applicare le best practices
• Preparare i tool di sviluppo
• Evitare che si creino casi di regressione del codice
• Ottimizzare i processi di rilascio
6
Il fattore chiave per lo sviluppo di una buona applicazione è il tempo di realizzazione.
Come ottimizzare il workflow di web app con javascript
7
Come ottimizzare il workflow di web app con javascript
Automatizzare tutte le attività ripetitive durante la fase di sviluppo di un’applicazione
diventa fondamentale!
8
Come ottimizzare il workflow di web app con javascript
Ottimizzando il processo di sviluppo si risparmia del tempo che possiamo investire
in altre attività per migliorare la nostra app.
9
Come ottimizzare il workflow di web app con javascriptTool a disposizione
per velocizzare e migliorare scrittura e qualità del software
11
Come ottimizzare il workflow di web app con javascript
Yeoman è composta da 3 “core-tools”
• yo: strumento che offre un ecosistema di framework e template specifici, chiamati generators.
• bower è usato per la gestione delle dipendenze del progetto, quindi la gestione è completamente automatizzata.
• grunt/gulp è usato per preview, controllo del codice, compressione, test del progetto, etc.
12
Come ottimizzare il workflow di web app con javascript
Prerequisiti per il funzionamento di Yeoman
• Applicazione Stand-alone
• Utilizza V8, motore javascript di Chrome
• Abilita il comando ‘npm’
Sito ufficiale: http://nodejs.org/
13
Come ottimizzare il workflow di web app con javascript
Installazione di Yeoman
Sito ufficiale: http://yeoman.io/
Direttamente da riga di comando dopo aver installato node:$ npm install -‐g yo bower grunt-‐cli gulp
14
Come ottimizzare il workflow di web app con javascript
Generatori di YO
Altri generatori: http://yeoman.io/generators/
Aggiungere il generatore di AngularJS$ npm install -‐g generator-‐angular
$ npm uninstall -‐g generator-‐angular
Rimuovere il generatore di AngularJS
15
Come ottimizzare il workflow di web app con javascript
Uso del generatore Angular
Lista completa dei comandi: https://github.com/yeoman/generator-angular
Iniziare un nuovo progetto con il generatore angular$ yo angular
$ yo angular:route myroute
Aggiungere un nuovo routing al progetto
$ yo angular:controller mycontroller
Aggiungere un nuovo controller al progetto
16
Come ottimizzare il workflow di web app con javascript
Comandi per l’utilizzo di Bower
Sito ufficiale: http://bower.io/
Installazione da repository bower$ bower install —save-‐dev <package>
Installazione da repository git$ bower install git://github.com/user/package.git
Rimuovere una dipendenza$ bower uninstall —save-‐dev <package>
17
Come ottimizzare il workflow di web app con javascript
Utilizzo di Grunt
Sito ufficiale: http://gruntjs.com/
Installazione di un plugin$ npm install grunt-‐contrib-‐jshint -‐-‐save-‐dev
Inclusione di un plugin nel Gruntfile.jsgrunt.loadNpmTasks('grunt-‐contrib-‐jshint');
18
Come ottimizzare il workflow di web app con javascript
Utilizzo di Grunt
Creazione di un task nel Gruntfile.jsjshint: {
options: {
jshintrc: '.jshintrc',
reporter: require('jshint-‐stylish')
},
all: [
'Gruntfile.js',
'<%= config.app %>/scripts/{,*/}*.js',
'!<%= config.app %>/scripts/vendor/*',
'test/spec/{,*/}*.js'
]
},
19
Come ottimizzare il workflow di web app con javascript
Utilizzo di Grunt
Come lanciare un task$ grunt jshint
20
Come ottimizzare il workflow di web app con javascript
Vantaggi nell’uso di Yeoman
• YO ha più di 1350 generatori
• YO ci consente di creare il nostro generatore
• Bower gestisce le dipendenze del progetto
• Grunt compila Sass, Less, CoffeeScript, etc.
• Grunt minimizza e concatena CSS, JS, HTML
• Grunt ottimizza immagini (jpg,png,gif)
• Grunt crea un semplice web server nella directory corrente
22
Come ottimizzare il workflow di web app con javascript
• Semplice da configurare
• Molto più veloce nell’esecuzione dei task
• I task sono eseguiti in modo asincrono
• Basato sul concetto di stream build, non crea .temp file
• Fase di configurazione articolata
• I task sono eseguiti esclusivamente dai plugin installati
• Vanta numerosissimi plugin ed una community vasta
GruntGulp
https://github.com/substack/stream-handbook
Differenza tra Grunt e Gulp
23
Scrittura del codice
Scegliamo l’editor di testo più adatto alle nostre esigenze!
WebStorm
Coda
SublimeText
Eclipse
Notepad++
Come ottimizzare il workflow di web app con javascript
24
Semplici motivi per utilizzare Sublime Text
• E’ gratuito
• Interfaccia semplice ed intuitiva.
• Estremamente veloce, si apre e si richiude in meno di 10 secondi
• Disponibile per OS X, Windows, Linux
• Consente di installare componenti aggiuntivi in modo semplice
Link al sito web: http://www.sublimetext.com/
Come ottimizzare il workflow di web app con javascript
25
Package Control: https://packagecontrol.io/
Sublime Text - Package Control
Command + P (OS X) o Control + P (Linux/Windows)
Come ottimizzare il workflow di web app con javascript
26
Sublime Text - JSHint Gutter
JSHint Gutter: https://packagecontrol.io/packages/JSHint%20Gutter
Come ottimizzare il workflow di web app con javascript
27
Sublime Text - JS Beautify
JS Beautify: https://packagecontrol.io/packages/Javascript%20Beautify
Come ottimizzare il workflow di web app con javascript
28
Sublime Text - GIT
JS Beautify: https://packagecontrol.io/packages/Javascript%20Beautify
Come ottimizzare il workflow di web app con javascript
29
Effettuare il test dell’applicazione
Jasmine
CasperJS
jQ Unit Karma
Selenium
Come ottimizzare il workflow di web app con javascript
30
Tipologia dei Test
• Unit Testing
• Visual regression testing / e2e test
Come ottimizzare il workflow di web app con javascript
31
Unit test con Karma
Karma: http://karma-runner.github.io/
Come ottimizzare il workflow di web app con javascript
Installazione a livello locale$ npm install karma -‐-‐save-‐dev
Plugin necessari per il test dell’app$ npm install karma-‐jasmine karma-‐chrome-‐launcher -‐-‐save-‐dev
Installazione globale di Karma$ npm install -‐g karma-‐cli
32
Configurare Karma
Come ottimizzare il workflow di web app con javascript
// karma.conf.js
module.exports = function(config) {
config.set({
basePath: '../..',
frameworks: ['jasmine'],
//...
});
};
Configurazione di Karma : http://goo.gl/DLiYm8
33
Unit test con Karma
Come ottimizzare il workflow di web app con javascript
Jasmine: http://jasmine.github.io/
34
E2E test con Protractor
Protractor: http://angular.github.io/protractor/#/
Come ottimizzare il workflow di web app con javascript
Installazione globale di Protractor$ npm install -‐g protractor
Installare i componenti grunt$npm install —save-‐dev grunt-‐protractor-‐runner
$npm install —save-‐dev grunt-‐protractor-‐webdriver
36
Grunt-Protractor
Come ottimizzare il workflow di web app con javascript
protractor: {
options: {
configFile: ‘referenceConf.js',
keepAlive: true,
noColor: false,
args: {// Arguments passed to the command}
},
your_target: {
options: {
configFile: 'test/e2e.conf.js',
args: {} // Target-‐specific arguments
}
},
},
37
Grunt-Protractor
Come ottimizzare il workflow di web app con javascript
grunt.registerTask('e2e-‐test', ['protractor_webdriver', 'protractor']);
Registrare il task per gli e2e test
$ grunt e2e-‐test
Lanciare il test
39
Documentazione del codice
Come ottimizzare il workflow di web app con javascript
JSDoc Docco doxx
YUIDoc
40
ngDoc per la doc del codice AngularJS
Come ottimizzare il workflow di web app con javascript
Link al sito web: https://www.npmjs.com/package/grunt-ngdocs
$ npm install grunt-‐ngdocs -‐-‐save-‐dev
Installare il componente
grunt.loadNpmTasks('grunt-‐ngdocs');
Load del task all’interno del Gruntfile.js
ngdocs: {
all: ['src/**/*.js']
}
Istruire il task nel Gruntfile.js
41
Il rilascio in produzione con Grunt
Come ottimizzare il workflow di web app con javascript
$ grunt serve:dist
Basta lanciare il task con la build
42
Brunch
Come ottimizzare il workflow di web app con javascript
Link al sito web: http://brunch.io/
• Semplice da installare e configurare
• Ancora ha pochi generatori
• Non ha un supporto e una community vasta
• Usa grunt
43
Come ottimizzare il workflow di web app con javascript
Ci aiuta a costruire siti web ed applicazioni in modo rapido. • Solo per OS X • Compila Coffeescript, Sass, etc. • Autorefresh del browser • Usa Bower • No command line and zero setup
Link al sito web: https://incident57.com/codekit/
Codekit
44
Come ottimizzare il workflow di web app con javascript
• Supporta sass, CoffeeScript, HAML & Markdown.
• Ottimizza il sorgente prima della pubblicazione
• Auto Reload
Hammer for Mac
Link al sito web: http://hammerformac.com/
45
Come ottimizzare il workflow di web app con javascript
• Compila LESS, Sass, Stylus, CoffeeScript, Jade e molto altro.
• Ha un server integrato per test cross-browser.
• Funziona su Windows, Mac e Linux
Prepos.io
Link al sito web: https://prepros.io/
46
Come ottimizzare il workflow di web app con javascript
• Compila Less, Sass e CoffeeScript, etc.
• Molto efficiente per lo sviluppo di web application.
• Funziona su Windows, Linux e Mac.
Koala-app
Link al sito web: http://koala-app.com/
Luciano MurruniComtaste S.r.l
Senior Software Developer @jimilucio
[email protected] www.comtaste.com
Grazie!