برنامه وب پیشرونده ( PWA ) یا برنامه وب پیشرونده ، نوعی از برنامه وب است که می تواند به عنوان یک برنامه مستقل روی دستگاه نصب شود . [1] PWA ها با استفاده از کش آفلاین مرورگر وب دستگاه نصب می شوند . [2]
PWA ها از سال 2016 به عنوان جایگزینی برای برنامه های کاربردی بومی (ویژه دستگاه) معرفی شدند، با این مزیت که نیازی به بسته بندی یا توزیع جداگانه برای پلتفرم های مختلف ندارند. آنها را می توان در طیف وسیعی از سیستم های مختلف، از جمله دسکتاپ و دستگاه های تلفن همراه استفاده کرد . انتشار برنامه در سیستم های توزیع دیجیتال مانند Apple App Store یا Google Play اختیاری است. [2]
از آنجایی که یک PWA در قالب یک صفحه وب یا وب سایت ساخته شده با استفاده از فناوری های رایج وب از جمله HTML ، CSS ، جاوا اسکریپت و WebAssembly ارائه می شود ، [3] می تواند بر روی هر پلتفرمی با یک مرورگر سازگار با PWA کار کند. از سال 2021، ویژگیهای PWA به درجات مختلف توسط Google Chrome ، Apple Safari ، Firefox برای Android و Microsoft Edge [4] [5] پشتیبانی میشوند اما توسط Firefox برای دسکتاپ پشتیبانی نمیشوند. [6]
در کنفرانس جهانی توسعه دهندگان اپل در سال 2007، استیو جابز اعلام کرد که آیفون "برنامه های ایجاد شده با استانداردهای اینترنت وب 2.0 را اجرا خواهد کرد". [7] هیچ کیت توسعه نرمافزاری (SDK) مورد نیاز نبود و برنامهها از طریق موتور مرورگر Safari به طور کامل در دستگاه ادغام میشوند . [8] این مدل بعداً به فروشگاه App تغییر یافت ، به عنوان وسیله ای برای مماشات از توسعه دهندگان ناامید. [9] در اکتبر 2007 جابز اعلام کرد که یک SDK در سال بعد راه اندازی خواهد شد. [8] در نتیجه، اگرچه اپل به پشتیبانی از برنامه های وب ادامه داد، اکثریت قریب به اتفاق برنامه های iOS به سمت فروشگاه App تغییر مکان دادند.
از اوایل دهه 2010، صفحات وب پویا امکان استفاده از فناوری های وب را برای ایجاد برنامه های کاربردی وب تعاملی فراهم کردند . طراحی وب ریسپانسیو ، و انعطاف پذیری اندازه صفحه نمایش آن، توسعه PWA را در دسترس تر کرده است. پیشرفتهای مداوم در HTML، CSS و جاوا اسکریپت به برنامههای کاربردی وب اجازه میدهد تا سطوح بیشتری از تعامل را در خود جای دهند و تجربههای مشابه بومی را در یک وبسایت ممکن میسازند. [10]
در سال 2013، موزیلا سیستم عامل فایرفاکس را منتشر کرد . در نظر گرفته شده بود که یک سیستم عامل منبع باز برای اجرای برنامه های وب به عنوان برنامه های بومی در دستگاه های تلفن همراه باشد. سیستم عامل فایرفاکس مبتنی بر موتور رندر Gecko با رابط کاربری به نام Gaia بود که در HTML5 نوشته شده بود. توسعه سیستم عامل فایرفاکس در سال 2016 به پایان رسید، [11] و این پروژه در سال 2017 به طور کامل متوقف شد، [12] اگرچه یک فورک از سیستم عامل فایرفاکس به عنوان پایه KaiOS ، یک پلت فرم تلفن ویژه استفاده شد. [13]
در سال 2015، طراح فرانسیس بریمن و مهندس گوگل کروم، الکس راسل، اصطلاح «برنامههای وب پیشرو» [14] را برای توصیف برنامههایی که از ویژگیهای جدید پشتیبانی شده توسط مرورگرهای مدرن، از جمله کارگران خدمات و مانیفستهای برنامههای وب ، استفاده میکنند ، ابداع کردند که به کاربران اجازه میدهد برنامههای وب را ارتقا دهند. به برنامه های کاربردی وب مترقی در سیستم عامل اصلی خود (OS). سپس گوگل تلاش های قابل توجهی را برای ترویج توسعه PWA برای اندروید انجام داد. [15] [16] فایرفاکس پشتیبانی از کارگران خدمات را در سال 2016 معرفی کرد، و مایکروسافت اج و اپل سافاری در سال 2018 دنبال کردند، [17] [15] کارگران خدمات را در همه سیستمهای اصلی در دسترس قرار دادند.
تا سال 2019، PWA توسط نسخههای دسکتاپ اکثر مرورگرها، از جمله Microsoft Edge [18] (در ویندوز ) و Google Chrome [19] (در Windows، macOS ، ChromeOS و Linux ) پشتیبانی میشد.
در دسامبر 2020، فایرفاکس برای دسکتاپ اجرای PWA ها را کنار گذاشت (به طور خاص، پیکربندی نمونه اولیه « مرورگر خاص سایت » را که به عنوان یک ویژگی آزمایشی در دسترس بود، حذف کرد). یکی از معماران فایرفاکس خاطرنشان کرد: سیگنالی که امیدوارم ارسال کنیم این است که پشتیبانی از PWA به این زودی ها روی فایرفاکس دسکتاپ نمی آید. [6] موزیلا همچنان قصد دارد از PWA ها در اندروید پشتیبانی کند. [20]
برنامه های وب پیشرفته همه برای کار بر روی هر مرورگری که با استانداردهای وب مناسب مطابقت دارد طراحی شده اند . همانند سایر راه حل های چند پلتفرمی، هدف کمک به توسعه دهندگان برای ساخت اپلیکیشن های چند پلتفرمی آسان تر از برنامه های بومی است. [15] برنامههای وب پیشرو از استراتژی توسعه وب بهبود تدریجی استفاده میکنند .
برخی از برنامه های وب مترقی از رویکردی معماری به نام App Shell Model استفاده می کنند. [24] در این مدل، کارکنان خدمات، رابط کاربری پایه یا " پوسته " برنامه وب طراحی وب پاسخگو را در حافظه پنهان آفلاین مرورگر ذخیره می کنند . این مدل به PWA ها اجازه می دهد تا استفاده مشابه بومی را با یا بدون اتصال وب حفظ کنند. این می تواند زمان بارگذاری را با ارائه یک قاب استاتیک اولیه ، یک طرح یا معماری که محتوا را می توان به صورت تدریجی و همچنین پویا بارگذاری کرد، بهبود بخشد. [25]
معیارهای پایه فنی برای اینکه یک سایت به عنوان یک برنامه وب پیشرو در نظر گرفته شود و در نتیجه قابلیت نصب توسط مرورگرها را داشته باشد، توسط راسل در سال 2016 توصیف شد [26] و از آن زمان به روز شد: [27] [28]
name
یا short_name
, start_url
و display
(با مقدار standalone
, fullscreen
یا minimal-ui
) و icons
(با نسخه های 192 پیکسل و 512 پیکسل). اطلاعات موجود در مانیفست باعث میشود که PWA به راحتی از طریق یک URL قابل اشتراکگذاری باشد، توسط موتورهای جستجو قابل شناسایی باشد، و مراحل نصب پیچیده را کاهش میدهد (اما PWAها همچنان در یک فروشگاه برنامه شخص ثالث فهرست میشوند ). [30] علاوه بر این، PWAها از تعاملات و ناوبری به سبک برنامه بومی پشتیبانی میکنند، از جمله اضافه شدن به صفحه اصلی ، نمایش صفحههای اسپلش و غیره.فن آوری های زیادی وجود دارد که معمولاً برای ایجاد برنامه های وب مترقی استفاده می شود. یک برنامه وب در صورتی که معیارهای نصب را برآورده کند PWA در نظر گرفته می شود، بنابراین می تواند به صورت آفلاین کار کند و می تواند به صفحه اصلی دستگاه اضافه شود. برای برآورده کردن این تعریف، همه PWA ها حداقل به یک مانیفست و یک سرویس دهنده نیاز دارند. [31] [32] [33] فناوریهای دیگری ممکن است برای ذخیره دادهها، برقراری ارتباط با سرورها یا اجرای کد استفاده شوند.
مانیفست برنامه وب [34] یک مشخصات کنسرسیوم وب جهانی (W3C) است که یک مانیفست مبتنی بر JSON (معمولاً با برچسب manifest.json) [30] تعریف میکند تا به توسعهدهندگان مکانی متمرکز برای قرار دادن ابرداده مرتبط با یک برنامه وب از جمله:
این ابرداده برای افزودن یک برنامه به صفحه اصلی یا فهرست کردن در کنار برنامه های بومی بسیار مهم است.
iOS Safari تا حدی مانیفستها را پیادهسازی میکند، در حالی که بیشتر فرادادههای PWA را میتوان از طریق برنامههای افزودنی اختصاصی اپل برای تگهای متا تعریف کرد. این تگ ها به توسعه دهندگان اجازه می دهد تا نمایش تمام صفحه را فعال کنند، آیکون ها و صفحه های اسپلش را تعریف کنند و نامی برای برنامه تعیین کنند. [35] [36]
Service Worker یک وب کارگر است که یک پروکسی شبکه قابل برنامه ریزی را پیاده سازی می کند که می تواند به درخواست های وب/HTTP از سند اصلی پاسخ دهد. میتواند در دسترس بودن یک سرور راه دور را بررسی کند، محتوای حافظه پنهان زمانی که آن سرور در دسترس است را ذخیره کند و آن محتوا را بعداً به سند ارائه دهد. کارکنان خدمات، مانند سایر کارگران وب، جدا از زمینه سند اصلی کار می کنند. کارکنان خدمات میتوانند اعلانهای فشاری را مدیریت کنند و دادهها را در پسزمینه همگامسازی کنند، درخواستهای منابع را ذخیره یا بازیابی کنند، درخواستهای شبکه را رهگیری کنند و بهروزرسانیهای متمرکز را مستقل از سندی که آنها را ثبت کرده است، دریافت کنند، حتی زمانی که آن سند بارگیری نشده است. [37]
کارگران خدمات یک چرخه عمر سه مرحله ای ثبت نام، نصب و فعال سازی را طی می کنند. ثبت شامل گفتن مکان سرویس دهنده در آماده سازی برای نصب به مرورگر است. نصب زمانی اتفاق میافتد که هیچ سرویسدهندهای در مرورگر برنامه وب نصب نشده باشد، یا اگر بهروزرسانی برای سرویسکار وجود داشته باشد. فعال سازی زمانی اتفاق می افتد که تمام صفحات PWA بسته می شوند، به طوری که هیچ تضادی بین نسخه قبلی و نسخه به روز شده وجود ندارد. چرخه حیات همچنین به حفظ ثبات در هنگام جابجایی بین نسخههای یک سرویسگر کمک میکند، زیرا تنها یک سرویسکار میتواند برای یک دامنه فعال باشد. [37]
WebAssembly به کدهای از پیش کامپایل شده اجازه می دهد تا در یک مرورگر وب با سرعت تقریباً اصلی اجرا شوند. [38] بنابراین، کتابخانه های نوشته شده به زبان هایی مانند C را می توان به برنامه های وب اضافه کرد. WebAssembly که در سال 2015 اعلام شد و اولین بار در مارس 2017 منتشر شد، در 5 دسامبر 2019 به توصیه W3C تبدیل شد [39] [40] [41] و جایزه نرم افزار زبان های برنامه نویسی را از ACM SIGPLAN در سال 2021 دریافت کرد . [42]
زمینههای اجرای برنامههای وب پیشرو هر زمان که ممکن باشد تخلیه میشوند، بنابراین برنامههای وب پیشرو باید اکثر حالت داخلی بلندمدت خود (دادههای کاربر، منابع برنامه بارگذاری شده به صورت پویا) را به یکی از روشهای زیر ذخیره کنند:
در سال 2017، توییتر Twitter Lite را منتشر کرد، یک جایگزین PWA برای برنامه های رسمی اندروید و iOS . با توجه به توییتر، Twitter Lite تنها 1 تا 3 درصد از اندازه برنامه های بومی را مصرف می کند. [45] Starbucks یک PWA را ارائه می دهد که 99.84٪ کوچکتر از برنامه iOS معادل خود است. پس از استقرار PWA، استارباکس تعداد سفارشهای آنلاین را دو برابر کرد و کاربران دسکتاپ تقریباً با همان نرخی که کاربران برنامههای موبایل سفارش میدادند، سفارش دادند. [46]
یک بررسی در سال 2018 که توسط فوربس منتشر شد ، نشان داد که کاربران PWA Pinterest در مقایسه با وبسایت تلفن همراه قبلی، 40 درصد زمان بیشتری را در سایت صرف میکنند. نرخ درآمد تبلیغات نیز 44 درصد و تعاملات اصلی 60 درصد افزایش یافته است. [47] Flipkart شاهد بود که 60٪ از مشتریانی که برنامه اصلی خود را حذف نصب کرده بودند، برای استفاده از Flipkart PWA بازگشتند. Lancôme شاهد کاهش 84 درصدی زمان تا تعاملی شدن صفحه بود که منجر به افزایش 17 درصدی در تبدیل و افزایش 53 درصدی در جلسات تلفن همراه در iOS با PWA خود شد. [48]
از آنجایی که PWA a نیازی به بستهبندی یا توزیع جداگانه برای پلتفرمهای مختلف ندارد و از طریق وب در دسترس کاربران است، لازم نیست توسعهدهندگان آن را از طریق سیستمهای توزیع دیجیتال مانند Apple App Store ، Google Play ، Microsoft Store یا Samsung منتشر کنند. فروشگاه گلکسی . اپ استورهای بزرگ از انتشار PWA به درجات مختلف پشتیبانی می کنند. [2] گوگل پلی، مایکروسافت استور، [49] و فروشگاه گلکسی سامسونگ از PWA پشتیبانی می کنند، اما اپل اپ استور این کار را نمی کند. فروشگاه مایکروسافت برخی PWAهای واجد شرایط را پس از کشف آنها از طریق نمایه سازی Bing به صورت خودکار (حتی بدون درخواست نویسندگان برنامه) منتشر می کند . [50]
ما هیچ برنامه ای برای غروب PWA در تلفن همراه نداریم که من می دانم.
{{cite web}}
: CS1 maint: نام های عددی: فهرست نویسندگان ( پیوند )