Apps mit AngularJS erstellen

In dieser Anleitung erfahren Sie, wie Sie Chrome-Apps mit dem MVC-Framework AngularJS erstellen. Um Angular in Aktion zu veranschaulichen, beziehen wir uns auf eine echte App, die mit dem Framework, dem Google Drive-Uploader, erstellt wurde. Der Quellcode ist auf GitHub verfügbar.

Die App

Google Drive-Uploader

Mit dem Google Drive-Uploader können Nutzer die in ihrem Google Drive-Konto gespeicherten Dateien schnell anzeigen und mit ihnen interagieren. Außerdem können sie mithilfe der HTML Drag & Drop APIs neue Dateien hochladen. Das ist ein gutes Beispiel für die Entwicklung einer App, die mit einer der APIs von Google kommuniziert – in diesem Fall mit der Google Drive API.

Der Uploader verwendet OAuth2, um auf die Daten des Nutzers zuzugreifen. Die chrome.identity API übernimmt das Abrufen eines OAuth-Tokens für den angemeldeten Nutzer. Sobald wir ein langlebiges Zugriffstoken haben, verwenden die Apps die Google Drive API, um auf die Daten des Nutzers zuzugreifen.

Die wichtigsten Funktionen dieser App:

  • Automatische Erkennung von AngularJS für CSP
  • Eine Liste der von der Google Drive API abgerufenen Dateien rendern
  • HTML5 Filesystem API, um Dateisymbole offline zu speichern
  • HTML5 Drag-and-drop zum Importieren/Hochladen neuer Dateien vom Desktop
  • XHR2 zum Laden von Bildern (domainübergreifend)
  • chrome.identity API für die OAuth-Autorisierung
  • Chromeless-Frames zur Festlegung des App-Designs für die Navigationsleiste

Manifest erstellen

Alle Chrome-Apps benötigen eine manifest.json-Datei mit den Informationen, die Chrome zum Starten der App benötigt. Das Manifest enthält relevante Metadaten und alle speziellen Berechtigungen, die die App ausführen muss.

Eine reduzierte Version des Manifests des Uploaders sieht so aus:

{
  "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/"
  ]
}

Die wichtigsten Teile dieses Manifests sind die Abschnitte "oauth2" und "permissions".

Im Abschnitt "oauth2" werden die erforderlichen Parameter für OAuth2 definiert. Folgen Sie der Anleitung unter Client-ID abrufen, um eine Client-ID zu erstellen. Unter „Bereiche“ sind die Autorisierungsbereiche aufgeführt, für die das OAuth-Token gültig ist, z. B. die APIs, auf die die Anwendung zugreifen möchte.

Der Abschnitt „Berechtigungen“ enthält URLs, auf die die Anwendung über XHR2 zugreift. Die URL-Präfixe sind erforderlich, damit Chrome weiß, welche domainübergreifenden Anfragen zulässig sind.

Veranstaltungsseite erstellen

Für alle Chrome-Apps ist ein Hintergrundskript oder eine Seite erforderlich, um die App zu starten und auf Systemereignisse zu reagieren.

Im Skript background.js öffnet der Drive-Uploader ein 500 x 600 Pixel großes Fenster mit der Hauptseite. Außerdem gibt sie eine Mindesthöhe und -breite für das Fenster an, damit der Inhalt nicht zu knackig wird:

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'
  });
});

Das Fenster wird als Chromeless-Fenster erstellt (Frame: "none"). Standardmäßig werden Fenster mit der standardmäßigen Leiste zum Schließen/Maximieren/Minimieren des Betriebssystems gerendert:

Google Drive-Uploader ohne Rahmen

Der Uploader verwendet frame: 'none', um das Fenster als "leeres Slate" zu rendern, und erstellt eine benutzerdefinierte Schaltfläche zum Schließen in main.html:

Google Drive-Uploader mit benutzerdefiniertem Frame

Der gesamte Navigationsbereich ist von einem