يستخدم هذا التطبيق المرجعي مكتبة بحث Algolia ذات المستوى المنخفض. إذا كنت تقوم بإنشاء تطبيق مماثل، فيرجى استخدام مكتبة Angular InstaSearch الرسمية.
لتنزيل (استنساخ) هذا المشروع على جهازك، يجب أن يكون لديك git
مثبتًا. اقرأ المزيد عن كيفية تثبيت Git على نظامك.
بمجرد التثبيت، افتح غلاف المحطة الطرفية وقم باستنساخ هذا المستودع باستخدام الأمر التالي:
> git clone https://github.com/manekinekko/angular-search-experience.git
ستحتاج إلى npm install
لتثبيت تبعيات هذا المشروع. بعد ذلك، باستخدام المحطة الطرفية الخاصة بك، ستحتاج إلى تغيير الدليل إلى المجلد الذي قمت باستنساخ هذا المشروع فيه مسبقًا؛ افتراضيًا (إذا قمت بنسخ سطر الأوامر من الأعلى) فسيكون هذا angular-search-experience
:
> cd angular-search-experience
> npm install
لقد قررنا تأمين وظيفة السحابة (هذه ممارسة جيدة). لذا، لكي تطلب واجهة برمجة تطبيقات search
، سيتعين عليك إلحاق رأس Authorization
بطلباتك. إليك Authorization: SearchToken this-is-a-fake-token
. اطلع على مثال لأمر cURL أدناه.
قبل بدء تشغيل الخادم، ستحتاج إلى إضافة اثنين من متغيرات البيئة داخل ملف .env، في المجلد /functions
. يمكنك استخدام ملف قالب env هذا كمثال (أعد تسميته إلى .env، والذي تم gitignored)، وقم بتعيين:
YOUR_ALGOLIA_APPLICATION_ID
YOUR_ALGOLIA_API_KEY
يمكنك العثور على معرف التطبيق الخاص بك ومفتاح API الخاص بك على https://www.algolia.com/apps في قسم مفاتيح API. تحتاج إلى إنشاء حساب للحصول على مفتاح API الخاص بك.
لتجربة الخادم على جهازك المحلي، قم بتشغيل الأمر التالي: npm run start:backend
يتطلب هذا الخيار تسجيل الدخول إلى حساب Firebase الخاص بك والحصول على حق الوصول إلى هذا المشروع (على Firebase). يمكن لمقدمي الرعاية فقط الوصول إلى مشروع Firebase!
يعتمد إصدار آخر من الواجهة الخلفية على بنية بدون خادم يتم تنفيذها باستخدام Cloud Functions for Firebase.
يأتي هذا المشروع مزودًا firebase-tools
باعتبارها تبعية محلية. هذه الأداة عبارة عن مجموعة من أدوات واجهة سطر أوامر Firebase (CLI) التي يمكنها إنشاء مشروع Firebase وتشغيله ونشره. يرجى ملاحظة أن هذه التبعية يتم تثبيتها عادةً على مستوى العالم.
كما يستخدم وقت تشغيل Firebase إصدارًا أقدم من Node.js: v6.11.5
. لقد قمنا بتضمين مجلد .nvmrc
ضمن /functions
. هذا الملف الخاص هو ملف تكوين يستخدمه NVM
للتبديل بسهولة إلى الإصدار المطلوب من Node.js داخل مجلد معين. إذا لم يكن NVM
مثبتًا لديك بالفعل، فيرجى قراءة دليل التثبيت.
استخدم NVM
لتثبيت إصدار Node.js المطلوب ثم استخدمه (داخل المجلد /functions
فقط):
> nvm install 6.11.5
> nvm use
الآن بعد أن تستخدم Node.js v6.11.5
، فأنت جاهز لتشغيل (أي محاكاة) وظيفة search
السحابية محليًا. لذلك، قم بتشغيل npm run start:backend:firebase
. هذا الأمر سوف يفعل شيئين:
/functions
(الموجود في جذر المشروع). يحتوي هذا المجلد على كافة التعليمات البرمجية الخلفية.search
السحابية محليًا على http://localhost:5000/angular-search-experience/us-central1/search
هام: يرجى ملاحظة أن وظيفة
search
تنفذ فقط طريقتيPOST
وDELETE
HTTP، مما يسمح لك بإضافة وحذف كيان، لذلك ستحتاج إلى عميل HTTP، مثلcURL
أوPostman
، لتتمكن من طلب وظيفة السحابة.
في جذر المشروع، قم بتشغيل npm start
لبدء تشغيل خادم تطوير الواجهة الأمامية. انتقل إلى http://localhost:4200/
. سيتم إعادة تحميل التطبيق تلقائيًا إذا قمت بتغيير أي من الملفات المصدر.
تم إنشاء تطبيق الواجهة الأمامية باستخدام Angular CLI الإصدار 6.1.2.
قم بتشغيل npm run build
لبناء المشروع. سيتم تخزين عناصر البناء ضمن الدليل dist/angular-search-experience/
. استخدم البرنامج النصي npm run build:prod
لبناء الإنتاج.
نستخدم استضافة Firebase لنشر تطبيق الواجهة الأمامية. قبل نشر إصدار جديد، نحتاج إلى إنشاء حزمة إنتاج باستخدام الأمر التالي:
> npm run build
بعد ذلك، يمكننا نشر البنية الجديدة في قاعدة النار:
> npm run deploy
هام: يتطلب النشر في firebase امتياز الوصول (إلى مشروع firebase).
تتوفر نقاط نهاية الإنتاج (الوظيفة السحابية) على:
من أجل طلب وظيفة السحابة الإنتاجية، يمكنك استخدام أوامر cURL التالية:
> curl -H "Authorization: SearchToken this-is-a-fake-token" -H "Content-Type: application/json" -X POST -d '{}' https://example.com/api/1/apps
{"createdAt":"2018-04-19T13:17:10.343Z","taskID":29343382,"objectID":"10788302"}
ملاحظة: نحن لا نتحقق من صحة كائن
application
عن قصد.
> curl -H "Authorization: SearchToken this-is-a-fake-token" -X DELETE https://example.com/api/1/apps/10788302
{"deletedAt":"2018-04-19T13:30:42.190Z","taskID":29353102,"objectID":"10788302"}
<app-search></app-search>
<app-search-input></app-search-input>
<app-category></app-category>
<app-search-result></app-search-result>
<mat-nav-list></mat-nav-list>
[appRating]
freePriceLabel
اقرأ المزيد حول وثائق واجهة برمجة التطبيقات هنا: https://manekinekko.github.io/angular-search-experience/index.html
لقد قمنا بإدراج chatbot هذا التطبيق. يمكن أن يساعدك في البحث عن التطبيقات باستخدام صوتك. ما عليك سوى أن تطلب منه مساعدتك في البحث عن تطبيق للطقس أو العثور على لعبة .
لتمكين الروبوت، ستحتاج إلى تشغيل الميكروفون ومكبرات الصوت. ما عليك سوى النقر 6 مرات على شعار التطبيق (الرأس).
ملحوظة: تنفيذ هذا الروبوت تجريبي (وللمتعة!) ولم يتم تدريبه على مجموعة كبيرة من أقوال المستخدمين!
yarn install v1.5.1
[1/4] ? Resolving packages...
[2/4] ? Fetching packages...
error [email protected]: The engine "node" is incompatible with this module. Expected version "~8.0".
error An unexpected error occurred: "Found incompatible module".
info If you think this is a bug, please open a bug report with the information provided in "/Users/vvo/Dev/Algolia/angular-search-experience/functions/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
الحل البديل:
nvm use 8.0
داخل المجلد /functions
.npm install
.cd ..
ثم npm run start:backend
.