آیا پروژه فوگو "انجام شد"؟

با توجه به اینکه یکی از اهداف تیم Project Fugu این است که برنامه‌نویسان بتوانند هر کاری را که برنامه‌های پلتفرم خاص می‌توانند در وب انجام دهند ، این تیم مشغول اضافه کردن ویژگی‌های گمشده توسعه‌دهندگان وب برای رفع این شکاف برنامه بوده است. اگر من را باور ندارید، فقط به بخش «ارسال شده» ردیاب Fugu API نگاه کنید. در اینجا 55 API ارسال شده به ترتیب حداقل تا اخیراً ارسال شده است:

نام API ارسال شده در
Web Bluetooth API کروم 56
WebUSB API کروم 61
هدف اشتراک وب کروم 71
Web Share API Level 2 کروم 75
Async Clipboard: خواندن و نوشتن تصاویر کروم 76
سطح هدف اشتراک وب 2 کروم 76
نکته کلیدی را وارد کنید کروم 77
گسترش سهمیه فضای ذخیره سازی کروم 78
API برنامه‌های مرتبط را نصب کنید کروم 80
همگام سازی پس زمینه دوره ای کروم 80
دسکتاپ-pwas: از حالت نمایش "minimal-ui" پشتیبانی کنید کروم 80
کدک های فشرده سازی کروم 80
مخاطبین API کروم 80
Badging API کروم 81
اجازه دهید Badging API از طریق Push از یک سرویس دهنده استفاده شود کروم 81
API تشخیص بارکد کروم 83
Content Indexing API کروم 84
WebOTP کروم 84
Screen Wake Lock API کروم 84
Streams API: جریان‌های قابل انتقال کروم 85
میانبرهای برنامه کروم 85
دسترسی به فایل سیستم کروم 86
پشتیبانی متن/html برای api کلیپ بورد غیرهمگام کروم 86
پشتیبانی از Pan/Tilt برای دوربین کروم 87
FUGU ضبط خروجی صوتی سیستم و برنامه را به هدفون و بلندگوها اجرا می کند کروم 88
PointerLock unadjusted Movement کروم 88
یک انتخابگر عکس/ویدئو مشابه با انتخابگر عکس در اندروید ایجاد کنید کروم 88
اشتراک گذاری وب (navigator.share) با ویندوز 10 کروم 88
وب NFC کروم 89
WebHID (دستگاه رابط انسانی) کروم 89
Web Serial API کروم 89
اشتراک گذاری وب روی دسکتاپ کروم 89
Handwriting Recognition API کروم 90
پیکربندی مدیریت شده برای برنامه های کاربردی وب کروم 91
PWA را در ورود به سیستم عامل اجرا کنید کروم 91
وب کدک ها کروم 93
تشخیص بیکاری کروم 94
EyeDropper API کروم 95
منوی میانبر برنامه برای PWA در macOS و Linux کروم 96
ثبت نام کنترل کننده پروتکل URL برای PWA ها کروم 96
وب حمل و نقل کروم 97
کلیپ بورد: چسباندن تصاویر شبکیه، فراداده های pHYs را از دست می دهد. کروم 98
PWA باید به همان روشی که یک "برنامه واقعی" می تواند حذف نصب شود کروم 99
وب NFC: NDEFReader makeReadOnly() کروم 100
قرار دادن پنجره چند صفحه ای کروم 100
فراموشی دستگاه HID() کروم 100
فراموشی دستگاه USB() کروم 101
رفتار USB وب مشابه Object کروم 101
پوشش کنترل‌های پنجره برای برنامه‌های وب دسکتاپ نصب‌شده کروم 102
مدیریت فایل کروم 102
chrome.management API دیگر نمی تواند با برنامه های PWA تعامل داشته باشد کروم 102
سریال فراموشی () کروم 103
دسترسی به فونت محلی کروم 103
درخواست Fugu: میانبرهای پویا برنامه (Shortcuts v2) کروم 104
قالب‌های سفارشی وب برای Async Clipboard API کروم 104
همه Fugu APIهای ارسال شده تاکنون.

این یک لیست طولانی است، و چیزهای بیشتری در بشقاب ما وجود دارد. هنوز چند API و ویژگی در حال حاضر در مرحله آزمایشی توسعه‌دهنده وجود دارد (یعنی پیاده‌سازی شده، اما پشت پرچم ویژگی)، برخی از آنها شروع به کار کرده‌ایم، و بسیاری از آنها در دست بررسی هستند . همانطور که می بینید، وقت آن نیست که به عقب خم شویم و بگوییم کارمان تمام شده است.

روش های فایل همزمان برای سیستم فایل خصوصی مبدا

کاملا برعکس، به جای اینکه تلاش خود را تکمیل شده اعلام کنیم، در واقع تازه شروع کرده ایم. به عنوان مثال، نمودار زیر را در نظر بگیرید که رشد سرسام آور استفاده نسبی متد navigator.storage.getDirectory() را نشان می دهد که به عنوان نقطه ورود به سیستم فایل خصوصی مبدا (OPFS) استفاده می شود. این روش، به عنوان مثال، برای نیازهای ذخیره سازی با کارایی بالا فتوشاپ استفاده می شود، و جامعه ذخیره سازی علاقه زیادی به آن از زمان شروع به کارگیری Web SQL و حتی قبل از آن دارد.

نموداری که استفاده نسبی سرسام آور از روش navigator.storage.getDirectory را نشان می دهد.

اکنون که افراد بیشتری از OPFS استفاده می‌کنند، الزامات اضافی ظاهر شده است. به عنوان مثال، نیاز به مجموعه ای کاملاً همزمان از روش های فایل در یک زمینه کارگر (به whatwg/fs#7 برای پس زمینه مراجعه کنید). در حالی که APIهای وب جدید عموماً ناهمزمان هستند، داشتن روش‌های همزمان کار با OPFS را در زمینه Wasm بسیار ساده‌تر می‌کند، و از آنجایی که این در یک کارگر اتفاق می‌افتد، رشته اصلی را نمی‌توان مسدود کرد.

بهبود حریم خصوصی برای APIهای سخت افزاری

مثال دیگر API های سخت افزاری هستند که به شما امکان می دهند به دستگاه های HID ، سریال ، USB ، بلوتوث و NFC متصل شوید. در حالی که برخی از این API ها برای مدتی وجود داشته اند، تا همین اواخر هیچ راهی برای فراموش کردن دستگاهی که قبلاً به آن متصل بودید وجود نداشت. اکنون به لطف متدهای forget() برای برخی از APIها وجود دارد. به عنوان مثال، در اینجا نحوه فراموش کردن یک دستگاه سریال قبلا متصل شده است، که حریم خصوصی API را بهبود می بخشد.

// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();

اصلاحات برای API قرار دادن پنجره چند صفحه‌ای

نمونه نهایی API قرار دادن پنجره چند صفحه‌ای است که در آن، بر اساس بازخورد توسعه‌دهندگان، برچسب‌های عمومی قبلی صفحه‌نمایش مانند "Internal Display 1" با برچسب‌های معنادارتری مانند "Built-in Retina Display" جایگزین شدند تا کاربران بتوانند راحت‌تر با هم ارتباط برقرار کنند. این برچسب ها با صفحه نمایش های نصب چند صفحه ای آنها.

نتیجه گیری

همانطور که فقط از این سه مثال می بینید، پروژه فوگو تا انجام شدن فاصله زیادی دارد. نگه دارید یا شروع به استفاده از API های ما کنید و بازخورد ارسال کنید. از آنجایی که تمام مشخصات Fugu به صورت باز در GitHub توسعه یافته است، می توانید یک مشکل مشخصات را در مخزن GitHub مربوطه ثبت کنید یا افکار خود را به یک مشکل موجود اضافه کنید. اگر اشکالی در پیاده‌سازی Chrome پیدا کردید، یا متوجه شدید که پیاده‌سازی با مشخصات آن متفاوت است، یک اشکال را در new.crbug.com ثبت کنید. اطمینان حاصل کنید که تا جایی که می توانید جزئیات را درج کنید و دستورالعمل های ساده ای برای بازتولید ارائه دهید.

و اگر نگران پشتیبانی مرورگر هستید، بسیاری از APIهای Fugu پیشرفت‌های پیشرونده بزرگی را ایجاد می‌کنند. به مقاله SVGcode من مراجعه کنید: یک PWA برای تبدیل تصاویر شطرنجی به گرافیک های برداری SVG برای الهام گرفتن. ما همچنین تا زمانی که این APIها قابل همکاری نباشند، کار خود را تمام شده نمی دانیم و همچنان به دنبال استانداردسازی، آزمایش و پذیرش بیشتر توسط مرورگرهای دیگر خواهیم بود.