ساخت اپلیکیشن با AngularJS

این راهنما به شما کمک می‌کند تا شروع به ساخت برنامه‌های Chrome با چارچوب AngularJS MVC کنید. برای نشان دادن Angular در عمل، ما به یک برنامه واقعی که با استفاده از این چارچوب ساخته شده است، یعنی Google Drive Uploader اشاره می کنیم. کد منبع در GitHub موجود است.

درباره برنامه

Google Drive Uploader

آپلودکننده Google Drive به کاربران اجازه می‌دهد تا فایل‌های ذخیره‌شده در حساب Google Drive خود را به سرعت مشاهده کرده و با آنها تعامل داشته باشند و همچنین فایل‌های جدید را با استفاده از HTML Drag and Drop API آپلود کنند. این یک مثال عالی از ساختن یک برنامه است که با یکی از APIهای Google صحبت می کند. در این مورد، Google Drive API.

Uploader از OAuth2 برای دسترسی به داده های کاربر استفاده می کند. API chrome.identity واکشی یک نشانه OAuth برای کاربر وارد شده را انجام می دهد، بنابراین کار سخت برای ما انجام می شود! هنگامی که یک نشانه دسترسی طولانی مدت داشته باشیم، برنامه ها از Google Drive API برای دسترسی به داده های کاربر استفاده می کنند.

ویژگی های کلیدی که این برنامه استفاده می کند:

  • تشخیص خودکار AngularJS برای CSP
  • فهرستی از فایل‌های واکشی شده از Google Drive API را ارائه دهید
  • HTML5 Filesystem API برای ذخیره آیکون های فایل به صورت آفلاین
  • HTML5 کشیدن و رها کردن برای وارد کردن/آپلود فایل های جدید از دسکتاپ
  • XHR2 برای بارگذاری تصاویر، متقابل دامنه
  • chrome.identity API برای مجوز OAuth
  • قاب‌های بدون کروم برای تعریف ظاهر و احساس نوار ناوبری خود برنامه

ایجاد مانیفست

همه برنامه‌های Chrome به یک فایل manifest.json نیاز دارند که حاوی اطلاعاتی باشد که Chrome برای راه‌اندازی برنامه نیاز دارد. مانیفست حاوی ابرداده مربوطه است و هر گونه مجوز ویژه ای را که برنامه برای اجرا نیاز دارد فهرست می کند.

یک نسخه حذف شده از مانیفست آپلودکننده به این صورت است:

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

مهم‌ترین بخش‌های این مانیفست بخش‌های «oauth2» و «مجوزها» هستند.

بخش "oauth2" پارامترهای مورد نیاز را توسط OAuth2 برای انجام جادوی خود تعریف می کند. برای ایجاد «client_id»، دستورالعمل‌های موجود در دریافت شناسه مشتری را دنبال کنید. "scopes" محدوده های مجوزی را فهرست می کند که نشانه OAuth برای آنها معتبر خواهد بود (به عنوان مثال، API هایی که برنامه می خواهد به آنها دسترسی داشته باشد).

بخش «مجوزها» شامل URLهایی است که برنامه از طریق XHR2 به آنها دسترسی خواهد داشت. پیشوندهای URL لازم است تا Chrome بداند کدام درخواست‌های بین دامنه‌ای را مجاز می‌کند.

ایجاد صفحه رویداد

همه برنامه‌های Chrome برای راه‌اندازی برنامه و پاسخ به رویدادهای سیستم به یک اسکریپت/صفحه پس‌زمینه نیاز دارند.

در اسکریپت background.js خود، Drive Uploader یک پنجره 500x600 پیکسلی را به صفحه اصلی باز می کند. همچنین حداقل ارتفاع و عرض را برای پنجره مشخص می کند تا محتوا خیلی خرد نشود:

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

پنجره به عنوان یک پنجره بدون کروم (قاب: "هیچ") ایجاد می شود. به طور پیش‌فرض، پنجره‌ها با نوار پیش‌فرض بستن/بسط/به حداقل رساندن سیستم عامل رندر می‌شوند:

آپلود کننده گوگل درایو بدون قاب

آپلودکننده از frame: 'none' برای رندر کردن پنجره به عنوان "تصاویر خالی" استفاده می کند و یک دکمه بسته سفارشی در main.html ایجاد می کند:

Google Drive Uploader با قاب سفارشی

کل منطقه ناوبری در یک پیچیده شده است