12 KiB
12 KiB
مشخصات درسنامه: تبدیل وبسایت به وباپلیکیشن پیشرونده (PWA) با قابلیت نصب و کارکرد آفلاین
- شناسه در سیلابس:
L15.10 - فصل: فصل ۱۵: تکامل محصول با AI (Ch 15)
- نوع محتوا: 📘 درسنامه متنی
- زمان تقریبی مطالعه: ۱۸ دقیقه
- پیشنیازهای مستقیم:
L15.9(استخراج بینش محصول با هوش مصنوعی)
۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
- درک کند (Understand): فناوری وباپلیکیشن پیشرونده (Progressive Web App - PWA) را به عنوان پلی میان دنیای وب و اپلیکیشنهای بومی بشناسد و بداند چگونه میتوان بدون نیاز به عبور از هفتخوان کافهبازار یا اپاستور، سایت را قابل نصب کرد.
- تحلیل/ارزیابی کند (Evaluate): سه ستون اصلی PWA شامل: فایل مانیفست وب (
manifest.json)، سرویسورکر (Service Worker) و استراتژیهای کش حافظه موقت (Cache-First در برابر Network-First) را ارزیابی کند. - بهکار ببندد (Apply): افزونه استاندارد Next.js PWA را در پروژه پورتفولیو نصب کرده و آیکونها، رنگ پوسته، و حالت تمامصفحه بدون نوار آدرس (
display: standalone) را پیکربندی نماید. - ایجاد کند (Create): یک سناریوی کارکرد آفلاین طراحی کند که در صورت قطع شدن کامل اینترنت، پروژههای پورتفولیو همچنان با سرعت بالا از روی کش باز شوند و صفحه آفلاین شکیل نمایش داده شود.
۲. محدوده و مرزهای محتوا (Scope & Boundaries)
آنچه باید پوشش داده شود (In-Scope):
- جادوی PWA: نصب مستقیم از مرورگر با یک کلیک:
- نمایش پیام «افزودن به صفحه اصلی» (Add to Home Screen) در اندروید، آیفون، ویندوز و مک.
- باز شدن سایت شبیه یک اپلیکیشن کاملاً بومی بدون نوار آدرس زشت مرورگر.
- کالبدشکافی ستون اول: فایل مانیفست وب (
app/manifest.ts):- تعریف مشخصات هویتی:
name,short_name,theme_color,background_color. - تعیین آیکونهای استاندارد ۱۹۲x۱۹۲ و ۵۱۲x۵۱۲ با قابلیت تطبیقپذیری ماسک (Maskable Icons).
- حالت نمایش تمامصفحه:
display: 'standalone'.
- تعریف مشخصات هویتی:
- کالبدشکافی ستون دوم: سرویسورکر (Service Worker):
- مامور نامرئی پشت صحنه که میان مرورگر و شبکه اینترنت مینشیند و درخواستها را مدیریت میکند.
- استراتژیهای کشگذاری:
- برای عکسها، فونتها و استایلها: استراتژی Cache-First (اول کش، اگر نبود دانلود).
- برای دادههای داینامیک پروژهها: استراتژی Stale-While-Revalidate (نمایش سریع دیتای قبلی کش و همزمان آپدیت از اینترنت).
- پیادهسازی در Next.js مدرن:
- استفاده از پکیجهای استاندارد PWA نظیر
@ducanh2912/next-pwa. - ساخت صفحه آفلاین اختصاصی
app/offline/page.tsx.
- استفاده از پکیجهای استاندارد PWA نظیر
- آزمایش امتیاز PWA در لایتهاوس:
- اجرای ممیزی Lighthouse در Chrome DevTools و سبز شدن نشانگر قابلیت نصب.
- کالاوتهای آموزشی و هشدار کوئرا:
- کالاوت بنفش (
<details class="violet">): نحوه ذخیرهسازی فایلهای PWA در حافظه کش مرورگر (Cache Storage API) و تفاوت آن با localStorage. - کالاوت سبز (
<details class="green">): دیدن آیکون زیبای پورتفولیو در کنار سایر برنامههای گوشی در منوی اصلی اندروید و آیفون. - کالاوت قرمز (
<details class="red">): هرگز درخواستهای دیتابیسی دارای جهش (POST/DELETE) را در سرویسورکر کش نکنید!
- کالاوت بنفش (
آنچه نباید وارد آن شویم (Out-of-Scope):
- نوتیفیکیشنهای پسزمینه وبپوش پیچیده با سرورهای VAPID اختصاصی.
- ساخت کدهای اختصاصی جاوا/کاتلین اندروید (در درس بعدی با Capacitor و Expo پوشش داده میشود).
۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|---|---|---|
| Progressive Web App (PWA) | وباپلیکیشن پیشرونده | سایتی با قابلیتهای ارتقایافته نظیر نصب روی هوماسکرین، اجرای آفلاین و ظاهر بومی |
| Web App Manifest | مانیفست وباپلیکیشن | سند پیکربندی استانداردی که نحوه نمایش، نام، آیکونها و رنگهای برنامه را برای سیستمعامل مشخص میکند |
| Service Worker | سرویسورکر / کارگر خدمترسان | اسکریپت پسزمینهای که درخواستهای شبکه را مهار کرده و مدیریت حافظه کش آفلاین را بر عهده دارد |
| Standalone Display | نمایش مستقل تمامصفحه | حالتی از اجرای وباپلیکیشن که تمام نوارها و دکمههای مرورگر حذف شده و حس اپلیکیشن نیتیو میدهد |
| Stale-While-Revalidate | استراتژی تحویل فوری و اعتبارسنجی مجدد | شیوه کشگذاری که ابتدا دیتای موجود در حافظه را فوراً نشان میدهد و سپس در پسزمینه آخرین تغییرات را بارگذاری میکند |
| Maskable Icons | آیکونهای تطبیقپذیر | تصاویری با حاشیه امن که توسط اندروید به اشکال مربع گرد، دایره یا لوزی به درستی برش میخورند |
۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
راهنمای ایجنت نویسنده: تمام تصاویر باید در پوشهٔ
images/ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
- تصویر کاور درس:
images/cover.png- موضوع: گوشی موبایل هوشمند با آیکون درخشان پورتفولیو روی هوماسکرین در کنار اپلیکیشنهای معروف و بنر تایید «نصب با موفقیت انجام شد».
- تفاوت تجربه وب معمولی با PWA در موبایل:
images/standard-web-vs-pwa-mobile.png- موضوع: اینفوگرافیک مقایسهای: مرورگر شلوغ با نوار آدرس و تبها در برابر اپلیکیشن PWA کاملاً تمیز، تمامصفحه و با تم رنگی اختصاصی.
- جریان کار سرویسورکر در حالت آنلاین و آفلاین:
images/service-worker-interception-flow.png- موضوع: دیاگرام معماری: مرورگر
\rightarrowسرویسورکر\rightarrowاگر نت وصل بود: دریافت از سرور + ذخیره در کش\rightarrowاگر نت قطع بود: خواندن مستقیم از Cache Storage.
- موضوع: دیاگرام معماری: مرورگر
- صفحه خطای آفلاین شکیل پورتفولیو:
images/offline-fallback-screen-preview.png- موضوع: اسکرینشات از نمایش صفحه در حالت قطع اینترنت با پیام ملایم: «شما آفلاین هستید، اما میتوانید پروژههای ذخیرهشده قبلی را مرور کنید.»
۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (README.md)
- تیتر اصلی:
# تبدیل وبسایت به وباپلیکیشن پیشرونده (PWA) با قابلیت نصب و کارکرد آفلاین - مقدمه: چرا وقتی میتوانید با چند خط کانفیگ، سایت خود را مستقیماً بدون نیاز به گوگلپلی یا اپاستور روی گوشی کارفرمایان نصب کنید، این کار را نکنید؟
- جدول کاور درس
- استعاره تبدیل بروشور کاغذی به یک نرمافزار دائمی:
- تفاوت سایتی که در تبهای فراموششده مرورگر گم میشود با اپلیکیشنی که روی صفحه اول گوشی جا خوش میکند.
- گام اول: ساخت سند مانیفست وب (
app/manifest.ts):- کدنویسی مشخصات هویتی، آیکونها و رنگ تم در Next.js.
- گام دوم: نصب و پیکربندی Service Worker:
- نصب پکیج
@ducanh2912/next-pwaدرnext.config.js. - تنظیم استراتژیهای کشگذاری برای سرعت برقآسا.
- نصب پکیج
- گام سوم: طراحی صفحه آفلاین اختصاصی (
app/offline/page.tsx):- احترام به کاربر در زمان قطعی شبکه و قطع امید نکردن از سایت.
- جعبه پرامپت طلایی: تبدیل پروژه به PWA کامل با ایجنت:
- پرامپت دقیق:
«من میخواهم پروژه پورتفولیو را به یک Progressive Web App کامل تبدیل کنم. لطفاً: ۱) فایل
app/manifest.tsرا با مشخصات برند، رنگ بنفش، و آیکونهای استاندارد بساز، ۲) کانفیگ@ducanh2912/next-pwaرا درnext.config.jsاضافه کن، و ۳) یک صفحه جذاب آفلاین درapp/offline/page.tsxبرای مواقع قطعی نت طراحی کن.»
- پرامپت دقیق:
- دستورات چندسکویی برای نصب پکیج PWA:
- منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
- Windows (PowerShell):
npm install @ducanh2912/next-pwa - macOS (Terminal):
npm install @ducanh2912/next-pwa - Linux (Bash):
npm install @ducanh2912/next-pwa
- Windows (PowerShell):
- منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
- باکس نکته Quera (
<details class="violet">): تولید خودکار آیکونهای ماسکبل با ابزارهای آنلاین نظیر Maskable.app در کمتر از ۳۰ ثانیه. - باکس هشدار Quera (
<details class="red">): سرویسورکرها فقط و فقط روی پروتکل امن HTTPS و روی localhost کار میکنند؛ سایت بدون SSL هرگز PWA نخواهد شد. - باکس رضایتبخش Quera (
<details class="green">): کلیک روی دکمه Install در نوار آدرس کروم و باز شدن پورتفولیو در پنجره اختصاصی نرمافزار دسکتاپ و موبایل. - جمعبندی درسنامه: مجهز شدن سایت به قابلیتهای PWA؛ ورود به ساخت فایل خروجی نصبی واقعی اپلیکیشن موبایل با Capacitor و Expo در درس بعدی.
۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
- ارکان سهگانه PWA (مانیفست، سرویسورکر، HTTPS) به روشنی شرح داده شود.
- نحوه پیادهسازی گامبهگام در فریمورک Next.js با پکیجهای مدرن آموزش داده شود.
- استراتژیهای کشگذاری آفلاین و صفحه فالبک آفلاین لحاظ گردد.
- دستورات نصب پکیج در تبهای چندسکویی ویندوز، مک و لینوکس گنجانده شود.