WwwishList هو امتداد كروم قادر على حفظ رغبات من أي موقع ويب على الويب إلى التخزين المحلي لمتصفح Chrome. تبقى بياناتك خاصة تمامًا بسبب ذلك.
يتم إصدار التمديد حاليًا غير مدرج وسيتم نشره تمامًا بمجرد اختبار صديقي لمدة 1-2 أشهر.
للحصول على وصف أكثر تفصيلاً ، انظر صفحة متجر Chrome.
ستجد أدناه نظرة عامة موجزة على الأعمال الداخلية ، وما هو مخطط له ، وإذا كنت تريد أن تصبح مساهماً ، وبعض المستندات وأشياء الترخيص.
قلب Wwwishlists هو المنبثقة (HTML ، وحدة التحكم والعرض) مع المكشطة.
يقوم مكشطة حقن الكود في الموقع الإلكتروني الذي يتم فيه فتح المنبثقة لإرجاع الصور. حاولت الاستيلاء على السعر ، لكنني تعلمت بسرعة أن السعر غالبًا ما لا يكون أكثر من حقل نص (أو متعدد). تتم ترشيح الصور قليلاً لإزالة الصور التي لا تعد بالتأكيد صور المنتج. لقد قررت عدم ضخ هذا في كل iFrame على صفحة لأنني واجهت مشكلات على موقع Amazon.de. إذا كنت تعرف لماذا توجد هذه المشكلة ، فيرجى جعل يومي وأخبرني. بمجرد أن يدخل المستخدم جميع البيانات وحفظه ، يتم رسم الصورة المحددة إلى قماش تقلص إلى 200 × 200 بكسل وتحويلها إلى بيانات BASE64 لأن API Extension Chrome يتيح فقط ملف JSON كبير واحد للتخزين المحلي. إذا واجهت هذه العملية تصدر CORS ، فإن عنوان URL للصورة قد تم Safed بدلاً من ذلك.
أنا لا أخطط لأي تحديثات ميزة كبيرة. أنا مهتم جدًا بأي موقع ويب يفشل فيه امتدادي في الأداء. الشيء التالي ربما سأكتبه هو اختبارات الوحدة المناسبة للوظائف. لقد أجريت اختباراتي أثناء الحصول على كل شيء للعمل ، وأنا أسف لعدم أتمتة الاختبارات الزائفة التي كتبتها خلال تلك الفترة. أود حقًا توفير سعر أفضل/عملة (في الوقت الحالي ، إنه مجرد سلسلة) ، ولكن لكي أكون سعيدًا بأني أرغب في استخدامه ، مما يعني أنني ربما أرغب في إضافة جميع العناصر على قائمة الأمنيات إلى إجمالي واحد (لقوائم أمنيات المشروع). ولهذا أحتاج إلى استدعاء واجهة برمجة تطبيقات محول العملة. الميزة الكبيرة الأخرى التي أفتقدها هي وسيلة سهلة للمشاركة لا تشملني تشغيل خادم.
إذا كنت ترغب في العمل على ميزة جديدة ، فيرجى إثارة مشكلة github ، أود أن أعمل معك من أجل الموافقة على طلب السحب الخاص بك في النهاية. إذا كنت ترغب فقط في القيام بإصلاحات الأخطاء أو تحديث طلبات سحب المستندات موضع ترحيب للغاية. إذا كنت ترغب في إنشاء/شوكة من هذا المشروع: يتم إصدار هذا المشروع بأكمله ضمن GPL 2. لقد اخترت GNU من أجل جعل الكود غير جذاب للتسويق دون الحد من المشاركة والتغيير غير القتلى. إذا كنت ترغب في المساعدة ولكن لا تعرف ماذا ، انظر أعلاه في القسم المخطط.
من أجل إعداد المشروع على جهازك ، تحتاج إلى NPM 10.5 أو لاحقًا. بمجرد تشغيل الرمز
npm install
من أجل تثبيت التبعيات bulma و node-sass المحددة في الحزمة. json. إذا كنت ترغب في إنشاء ملف bulma جديد من تغييرات SASS الخاصة بك ، فما عليك سوى تشغيل
npm css-build
أو إذا كنت تريد أن يحدث هذا تلقائيًا أثناء العمل على تشغيل Sass
npm start
لبناء بولما بشكل مستمر.
من أجل إضافة امتداد Chrome هذا إلى متجر Chrome الخاص بك ، انقر فوق أيقونة اللغز في الجزء العلوي الأيمن -> إدارة الامتدادات -> قم بتشغيل وضع المطور -> تحميل غير معبأ وحدد مجلد قائمة الأمنيات العالمي في الدليل الخاص بك.
وبالتالي لديك نسخة المطور الخاصة بك مثبتة.
واجهة برمجة تطبيقات Chrome Storage API هي شريرة لأنها تتيح لك تخزينها فقط إلى ملف. json كبير. يمكن الوصول إلى هذا الملف من خلال أدوات DEV ، ولكن الأهم من ذلك في StorageTemplate.json يمكنك رؤية بنية DB.
يتم الوصول إلى التخزين فقط من النماذج و DatabaseHandling.
أنا في الوقت الحالي غير مقتنع بأن الناس سوف يرغبون في المساهمة ، لذا لن أشرح الآن كل وظيفة ، ولكن بنية ما يحدث. إذا كنت ترغب بالفعل في القيام بذلك ، فيرجى إخبارنا وسأكون سعيدًا لشرح أي شيء لا تفهمه (وكتابة مستندات أكثر شمولاً).
أنا في الغالب اتبع نمط MVC في الكود. لتلخيص كل صفحة تحتوي على وحدة تحكم وعرض ، في حين أن كل نقطة بيانات لديها نموذج. كل نموذج مسؤول عن إجراءات CRUD (إنشاء تحديث قراءة) التابعة له. يعرض كل طريقة عرض البيانات فقط إلى أو استرداد البيانات من المستخدم. تنتظر كل وحدة تحكم إجراءات المستخدم ويدعو العرض والنماذج للقيام بوظائفها. يتم إصدار الإصدار وفقًا للإصدار الدلالي 2.0.0
في الوقت الحالي ، فإن هيكل البرنامج على النحو التالي:
عند تثبيت أو تحديث الخلفية. يستدعي mjs dbmanager.mjs لإعداد قاعدة البيانات. بصرف النظر عن ذلك ، فإن خلفية mjs تجعل إدخالات قائمة السياق تحدث في قائمة أيقونة تمديد النقر بزر الماوس الأيمن.
استدعاء من الخلفية. إذا كنت ترغب في تغيير وظائف بنية DB ، فستتحدث الترحيل عند التحديث أيضًا هنا.
هنا جميع الحدود (قيم دقيقة وحد أقصى) لقيم قاعدة البيانات مباشرة.
يستخدم الامتداد UUID V7 مما يعني أن المعرف يبدأ مع طابع زمني UNIX ويستمر برقم عشوائي. هذا أمر مهم لاستيراد بيانات بشكل صحيح (أي البيانات الفريدة فريدة من نوعها بالفعل).
لقد خمنت أنه يحكم هذا الملف كيفية استيراد وتصدير البيانات. هذا هو السبب في أن هذا الامتداد يستخدم إذن التنزيل. يصل المستخدم إلى هذه الوظيفة فقط من صفحة الإعدادات.
هذه الملفات هي الفئات التي تتعامل مع عمليات CRUD على كائنات Wish and Wishlits.
تعمل SettingScontroller.mjs الآن فقط على استدعاء وظائف استيراد التصدير (بالإضافة إلى روابط الأزرار). حاليًا لا توجد إعدادات ولكن ربما يمكنك تغيير ذلك!
يتفاعل المستخدم مع mywishlist.html عبر هذين الملفين. التحرير ، والحذف ، والتراجع عن الحذف ، والرغبات المتحركة ، وإنشاء قائدين الأمنيات يحدث هنا.
إذا تم النقر فوق المنبثقة ، فإن وحدة التحكم تستدعي scraper.mjs ومع البيانات ، قامت مكشطة الاسترداد بعرض العرض ، ثم يملأ المنبثقة حتى يتمكن المستخدم من تحديد الصورة التي يجب حفظها وما هي المعلومات التي يجب إضافتها. بمجرد قيام المستخدم بإنجاز هذه البيانات ، يحول الصورة المقابلة إلى BASE64 ويستجيب مرة أخرى إلى وحدة التحكم لحفظها.
يقوم مكشطة حقن الكود في الموقع الإلكتروني الذي يتم فيه فتح المنبثقة لإرجاع الصور. حاولت الاستيلاء على السعر ، لكنني تعلمت بسرعة أن السعر غالبًا ما لا يكون أكثر من حقل نص (أو متعدد). تتم ترشيح الصور قليلاً لإزالة الصور التي لا تعد بالتأكيد صور المنتج. لقد قررت عدم ضخ هذا في كل iFrame على صفحة لأنني واجهت مشكلات على موقع Amazon.de. إذا كنت تعرف لماذا توجد هذه المشكلة ، فيرجى جعل يومي وأخبرني.
بفضل Kjeld Schmidt لكونه معلمًا مستمرًا ومعلمًا صبورًا طوال هذا المشروع بأكمله. بدون إرشادك ، لم أكن قد بدأت في الترميز.
بفضل Huddel لتزويدني بتماسيح رائع غير موجود.
شكرا لجميع أصدقائي الآخرين والعائلة والغرباء على الإنترنت للمساعدة في الاختبار.
بفضل Jason Thor Hall لبناء مجتمع رائع من المبرمجين وإذنه لاستخدام متجر Merch الخاص به كمواد لقطة الشاشة التعليمية الخاصة بي.