chrome apps e nodewebkit: traga seu webapp para o desktop - #outubrorosa

61
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop Joselito Júnior joselitojunior.com @joselitojunior1 #outubrorosa

Upload: joselito-nascimento

Post on 29-Jun-2015

155 views

Category:

Software


1 download

DESCRIPTION

Aprenda o básico sobre Chrome Apps e node-webkit e desenvolva aplicativos em html5 para desktop. Palestra ministrada no GDG DevFest Nordeste.

TRANSCRIPT

Page 1: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Chrome Apps e NodeWebkit: traga seu webapp para o Desktop

Joselito Júniorjoselitojunior.com @joselitojunior1

#outubrorosa

Page 2: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Olásou fundador do Estudorama e do Rabiscapp, estudo Ciência da Computação CIn-UFPE, venci o NASA Space Apps e o Startup Jam (e +), co-fundador do GDG Recife, gerente de TI na Farol52, instrutor e palestrante, design thinker, entusiasta do html5, fã de formula 1

Page 3: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Rabiscapp.net

Page 4: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

http://phonegapbootcamp.io

Page 5: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 6: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 7: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 8: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 9: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 10: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 11: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

JavaScript de várzeabotões rollover joguinhos dhtml alerts irritantes anuncios com refresh

Page 12: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

JavaScript na web 2.0bibliotecas (jquery) ajax websockets realtime

Page 13: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

JavaScript hojenode.js e npm angularjs, blackbone, ember mobile apps

Page 14: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

JavaScript hojenode.js e npm angularjs, blackbone, ember mobile apps desktop apps

Page 15: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 16: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

e Desktop?

Page 17: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

e tem pra Desktop?

Page 18: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

e por que Desktop?

Page 19: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Os Porquêsmudança de hábito mobile: apps simplesmente funcionam só usam a web quando necessário mantém uma ótima experiência

Page 20: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 21: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Chrome Apps

Page 22: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Conteúdo

index.html script.js style.css

troll_face.jpg

manifest.json background.html

main.js

Estrutura

Page 23: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

manifest.json

{      "manifest_version":  2,      "name":  "Olar  mundo",      "version":  "1.1",      "minimum_chrome_version":  "23",      "icons":  {          "16":  "icon_16.png",          "128":  "icon_128.png"      },      "app":  {          "background":  {              "scripts":  ["main.js"]          }      }  }  

Page 24: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

manifest-melhorzinho.json{      "name":  "Olar  mundo  cruel",      "version":  "2",      "manifest_version":  2,      "minimum_chrome_version":  "32",      "app":  {          "background":  {              "scripts":  ["background.js"]          }      },      "permissions":  [          {"fileSystem":  ["write",  "retainEntries",  "directory"]},          "storage"      ],      "file_handlers":  {          "text":  {              "types":  [                      "text/*"              ],              "title":  "Text  editor"          }      }  }

Page 25: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

main.js

chrome.app.runtime.onLaunched.addListener(function()  {      var  screenWidth  =  screen.availWidth;      var  screenHeight  =  screen.availHeight;      var  width  =  500;      var  height  =  300;  

   chrome.app.window.create('index.html',  {          id:  "olarPlanetaID",          bounds:  {              width:  width,              height:  height,              left:  Math.round((screenWidth-­‐width)/2),              top:  Math.round((screenHeight-­‐height)/2)          }      });  });

Page 26: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

main.js

chrome.app.runtime.onLaunched.addListener(function()  {      var  screenWidth  =  screen.availWidth;      var  screenHeight  =  screen.availHeight;      var  width  =  500;      var  height  =  300;  

   chrome.app.window.create('index.html',  {          id:  "olarPlanetaID",          bounds:  {              width:  width,              height:  height,              left:  Math.round((screenWidth-­‐width)/2),              top:  Math.round((screenHeight-­‐height)/2)          }      });  });

Page 27: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

main.js

chrome.app.onLaunch  .onRestarted

Page 28: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

main.js

chrome.appAPIs exclusivas do Chrome

Page 29: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Testando

Page 30: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Testando

Page 31: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Testando

Page 32: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Compilando

Page 33: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

github.com/GoogleChrome/chrome-app-samples

Page 34: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Node Webkit

Page 35: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 36: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

V8node.js

contexto

Page 37: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 38: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

node.jsassíncrono módulos do npm usa a v8 engine performance

Page 39: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Conteúdo

index.html script.js style.css

tacalhepau.mp4

package.json

Estrutura

Page 40: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

{     "name":  "Mia  plicativo",     "main":  "index.html",     "window":  {       "toolbar":  true,       "fullscreen":  false,       "resizible":  "true",       "width":  800,       "height":  600     },     "depedencies":  {       "underscore":  "~1.4.1",       "angular":  "~1.2.0"     },     "jsflags":  "-­‐-­‐harmony-­‐collections"  }

package.json

Page 41: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

<!doctype  html>  <html  lang='en'>  <head>          <meta  charset='UTF-­‐8'>          <title>Modules  Example  (System  Info  and  File  I/O)</title>      <script>        var  os  =  require('os');                  var  fs  =  require('fs');                      var  content  =  '';                      content  +=  '[Platform]'  +  os.EOL;                  content  +=  'OS  Type                :  '  +  os.platform()  +  os.EOL;  //  linux,  darwin,  win32,  sunos,  freebsd                  content  +=  'OS  Version          :  '  +  os.release()    +  os.EOL;                  content  +=  'OS  Architecture:  '  +  os.arch()          +  os.EOL;                  content  +=  os.EOL;  

Módulos node

Page 42: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

<!doctype  html>  <html  lang='en'>  <head>          <meta  charset='UTF-­‐8'>          <title>Modules  Example  (System  Info  and  File  I/O)</title>      <script>        var  os  =  require('os');                  var  fs  =  require('fs');                      var  content  =  '';                      content  +=  '[Platform]'  +  os.EOL;                  content  +=  'OS  Type                :  '  +  os.platform()  +  os.EOL;  //  linux,  darwin,  win32,  sunos,  freebsd                  content  +=  'OS  Version          :  '  +  os.release()    +  os.EOL;                  content  +=  'OS  Architecture:  '  +  os.arch()          +  os.EOL;                  content  +=  os.EOL;  

Módulos node

Page 43: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Testando

./node-­‐webkit  <dir>

Page 44: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Testando

Page 45: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

API gráfica nativa

var  win  =  gui.Window.get();      //  Create  a  menubar  for  window  menu  var  menubar  =  new  gui.Menu({  type:  'menubar'  });      //  Create  a  menuitem  var  sub1  =  new  gui.Menu();      sub1.append(new  gui.MenuItem({  label:  'GDG  Aracaju',  click:  function()  {}  }));

Page 46: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Mais testes

Page 47: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Resumindomódulos do npm native gui library shell functions snapshot do V8 runtime nativo early-apis do html5 apis exclusivas (frameless, clipboard(!), webrtc)

Page 48: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Compilando

copy  /b  nw.exe+app.nw  >  app.exe

cp  app.nw  nw/Contents/Resources

cat  nw  app.nw  >  app

Page 49: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

github.com/rogerwang/node-webkit

Page 50: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 51: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Necessário um browser Autorização on-demand do usuário Sem GUI própria APIs exclusivas do Chrome Loja Própria Obifuscação de código

Standalone Tudo liberado por padrão API de GUI Acesso completo a codigo nativo Lojas do SO/Distribuição direta Snapshot

Page 52: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

quem já usa?

Page 53: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Chrome Apps

Page 54: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Page 55: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Game Dev Tycoonhttp://www.greenheartgames.com/app/game-dev-tycoon/

Page 56: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Koala Apphttp://koala-app.com/

Page 57: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Popcorn Timehttp://www.time4popcorn.eu

Page 58: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Atom [Shell]http://atom.io

Page 59: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Brackets [Shell]http://brackets.io

Page 60: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Breachhttp://breach.cc/

Page 61: Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa

Obrigado! (: Dúvidas?

Joselito Júniorjoselitojunior.com @joselitojunior1

http://jfnj.me/chromeapps-devfestne