در نوشته قبلی با عنوان چگونه اکستنشن کروم بسازیم؟ (آشنایی با افزونه کروم) درباره ماهیت افزونه یا همان اکستنشن توضیح دادم و بیشتر کلیاتی راجع به قابلیتها و کاراییهایش نوشتم. اما از اینجا به بعد قصد دارم برای کسانی که علاقهمند به نوشتن و برنامهنویسی اکستنشن کروم هستند شیوه ساختش را آموزش دهم. باعث افتخار خواهد بود که همراهم باشید.
همانطور که میبینید برای ساختن اکستنشن کروم باید به پیادهسازی فرانتاند (Front-End) یا همان ظاهر (UI) وب تسلط مناسبی داشته باشید. زیرا همانطور که در ادامه توضیح خواهم داد، بخشهای مختلف افزونه کروم تشکیل شده از فایلهای مختلف HTML و CSS و JavaScript است.
پس اگر دانش پیادهسازی UI را ندارید برای شروع نگاهی به این نوشته من بیاندازید:
اگر هنوز در این نوشتار همراه من هستید، قصد دارم بخشهای مختلف اکستنشن کروم را که به صورت تجربی تفکیکش کردهام به شما معرفی کنم. شاید کمتر کسی به این شکل دستهبندی کند، ولی به نظرم دیدگاه مناسبی برای شروع خواهد داد:
* توجه: علت دستهبندی با نام محدوده عملکرد (Scope) به این دلیل است که اسکریپتهای نوشته شده در هر دسته، از دسته دیگر ایزوله و جدا هستند. بنابراین برای صدا زدن توابع از هر دسته در دسته دیگر نیاز به روشهای ویژهای خواهد بود که بعداً توضیح خواهم داد.
مانیفست به نوعی شناسنامه و پیکربندی (Config) افزونه کروم است. این فایل دارای فرمت و ساختار ویژهایست که اگر درست نوشته نشود، اکستنشن اصلاً کار نخواهد کرد و در بعضی موارد استثناء شاید اجرا شود ولی باز هم درست کار نخواهد کرد.
در فایل مانیفست، نام و ورژن اکستنشن، توضیحات، منابع استفاده شده، آیکونها و ... به صورت یک آبجکت جاوااسکریپت نوشته میشود و فرمت آن json است. میتوانید نمونه کامل یک مانیفست را در مستندات مانیفست سایت کروم ببینید. اما برای اختصار و دوری از سردرگمی نمونه کوچکی را اینجا آوردهام:
manifest.json
{ "manifest_version": 2, "name": "My Extension", "version": "versionString", "description": "A plain text description", "icons": {...}, "browser_action": {...} }
وقتی یک اکستنشن کروم مینویسید با نصب و کلیک روی آیکون آن، پنجرهای باز میشود که تمام ویژگیهای یک صفحه وب ساده را دارد به جز این که روی پنجره کروم باز میشود. بنابراین یک فایل html نیاز داریم تا محتوای پنجره (popup) را به کاربر نشان دهد و برای ظاهر و کاراییاش به ترتیب به فایلهای css و js نیاز خواهیم داشت. برای این کار کافیست فایل popup.html ای را که ساختهایم در مانیفست تعریف کنیم:
manifest.json
... "browser_action": { "default_icon": "logo.png", "default_popup": "popup.html", "default_title": "My Extension Popup" }, ...
باقی فایلها نظیر css و js ها به سادگی درون خود html لینکدهی میشوند.
قلب تپنده اکستنشن کروم همین فایل(های) اسکریپت پسزمینه است. این که میگویم قلب، دو علت دارد:
محدودهها یا Scope های گفته شده شماره ۱ تا ۳ ممکن است فایلهای کمتر یا بیشتری را شامل شود اما در هر حال اجباری هستند. در حالی که میتوان اکستنشن کرومی نوشت بدون این که در آن اسکریپتهای محتوا در نظر گرفت. منظور از اسکریپتهای محتوا، JavaScriptها، CSSها و تصاویر و منابعی هستند که در صفحات وب، اعمال میشوند. مثلاً فرض کنید افزونه شما قرار است فونت همه سایتهایی را که کاربر بازدید میکند به فونت وزیر تغییر دهد. خب در اینجا علاوه بر این که باید فایل فونتها را ذیل عنوان web_accessible_resources در مانیفست اعلام کنید، در content_scripts هم باید css مورد نظر خود را و این که در چه URLهایی اعمال شوند اعلام کنید:
manifest.json
... "content_scripts": [ { "matches": ["<all_urls>"], "js": ["contentScript.js"], "css": ["contentStyle.css"] } ], "web_accessible_resources": [ "fonts/Vazir.ttf", "fonts/Vazir-Bold.ttf", ], ....
خب تا اینجای کار آشنایی بیشتری با اجزای تشکیل دهنده اکستنشن کروم پیدا کردیم. امیدوارم از این نوشته استفاده کرده باشید. منتظر قسمتهای بعدی این آموزش باشید و در صورتی که مطلب فوق برای شما مفید بود، آن را با دوستان خود در شبکههای اجتماعی به اشتراک بگذارید.
فهرست نوشتههای من درباره اکستنشن کروم: