Crea app con AngularJS

Questa guida spiega come iniziare a creare app di Chrome con il framework MVC AngularJS. A illustrare Angular in azione, faremo riferimento a un'app effettiva creata utilizzando il framework, Caricamento di Google Drive. Il codice sorgente è disponibile su GitHub.

Informazioni sull'app

Caricamento di Google Drive

L'Uploader di Google Drive consente agli utenti di visualizzare e interagire rapidamente con i file archiviati nel loro Google Drive e caricare nuovi file utilizzando le API di trascinamento dell'HTML. È una ottimo esempio di creazione di un'app che comunica con una delle API di Google; In questo caso, il team API Drive.

L'Uploader utilizza OAuth2 per accedere ai dati dell'utente. L'API chrome.identity gestisce il recupero di un token OAuth per l'utente che ha eseguito l'accesso, per questo il lavoro più impegnativo viene fatto. Una volta che avremo il token di accesso, le app utilizzano l'API Google Drive per accedere ai dati dell'utente.

Funzionalità principali utilizzate da questa app:

  • Rilevamento automatico di AngularJS per CSP
  • Visualizzare un elenco di file recuperati dall'API Google Drive
  • API HTML5 Filesystem per archiviare le icone dei file offline
  • Trascinamento di HTML5 per l'importazione/il caricamento di nuovi file dal desktop
  • XHR2 per caricare immagini, interdominio
  • API chrome.identity per l'autorizzazione OAuth
  • Frame senza chrome per definire l'aspetto e il design della barra di navigazione dell'app

Creazione del manifest

Tutte le app di Chrome richiedono un file manifest.json contenente le informazioni necessarie per l'avvio di Chrome l'app. Il file manifest contiene metadati pertinenti ed elenca le eventuali autorizzazioni speciali necessarie all'app vengono eseguiti tutti i test delle unità.

Una versione ridotta del file manifest dell'utente che carica il video ha il seguente aspetto:

{
  "name": "Google Drive Uploader",
  "version": "0.0.1",
  "manifest_version": 2,
  "oauth2": {
    "client_id": "665859454684.apps.googleusercontent.com",
    "scopes": [
      "https://www.googleapis.com/auth/drive"
    ]
  },
 ...
  "permissions": [
    "https://docs.google.com/feeds/",
    "https://docs.googleusercontent.com/",
    "https://spreadsheets.google.com/feeds/",
    "https://ssl.gstatic.com/",
    "https://www.googleapis.com/"
  ]
}

Le parti più importanti di questo manifest sono "oauth2" e "autorizzazioni" sezioni.

Il comando "oauth2" definisce i parametri richiesti da OAuth2 per fare la sua cosa. Per creare un "client_id", segui le istruzioni in Ottenere il tuo ID cliente. Gli "ambiti" elenca i gli ambiti di autorizzazione per i quali il token OAuth sarà valido (ad esempio, le API .

Le "autorizzazioni" include gli URL a cui l'app accederà tramite XHR2. I prefissi URL sono necessaria per consentire a Chrome di sapere quali richieste interdominio consentire.

Creazione della pagina dell'evento

Tutte le app di Chrome richiedono uno script o una pagina in background per avviare l'app e rispondere agli eventi di sistema.

Nello script background.js, l'Uploader di Drive apre una finestra di 500 x 600 px sulla pagina principale. Inoltre, specifica un'altezza e una larghezza minime per la finestra in modo che i contenuti non diventino troppo elaborati:

chrome.app.runtime.onLaunched.addListener(function(launchData) {
  chrome.app.window.create('../main.html', {
    id: "GDriveExample",
    bounds: {
      width: 500,
      height: 600
    },
    minWidth: 500,
    minHeight: 600,
    frame: 'none'
  });
});

La finestra viene creata come finestra chromeless (frame: "nessuna"). Per impostazione predefinita, il rendering delle finestre viene eseguito con Barra predefinita di chiusura, espansione e riduzione a icona del sistema operativo:

Uploader di Google Drive senza frame

L'utente che ha caricato il video utilizza frame: 'none' per eseguire il rendering della finestra come "slate vuoto" e crea una chiusura personalizzata Pulsante in main.html:

Uploader di Google Drive con frame personalizzato

L'intera area di navigazione è racchiusa in una