@atlas.jsبنيت مع ❤ في strv
ATLAS.JS عبارة عن منصة تم تصنيعها بشكل أساسي لإعادة استخدام أجزاء من الكود بين مشاريع متعددة وتقليل ملفات الجبان المشتركة مثل تسلسل بدء التشغيل والإغلاق لتطبيق Node.js القياسي. يمكنك كتابة مكونات (أو استخدامنا) التي توفر وظائف (مثل مكون قاعدة البيانات) ، وضعها في مثيل Atlas وستهتم Atlas بالباقي. باستخدام Atlas ، يمكنك تقليل تسلسل التهيئة والتطبيق إلى كائن تكوين وخط واحد من التعليمات البرمجية.
فيما يلي قائمة بالمكونات التي تم صيانتها STRV.
| عنصر | إصدار | معلومات |
|---|---|---|
| @atlas.js/atlas | الحزمة الرئيسية مع كل ما هو مطلوب للحصول على المتداول | |
| @atlas.js/cli | أداة CLI لإدارة تطبيق ATLAS الخاص بك | |
| @atlas.js/generator-atlas | مولد يمان لسقوط تطبيق Atlas الجديد بسرعة | |
| @atlas.js/aws | للتفاعل مع AWS | |
| @atlas.js/Braintree | للتفاعل مع مدفوعات Braintree | |
| @atlas.js/firebase | للتفاعل مع خدمات Firebase | |
| @atlas.js/koa | الخدمة والسنانير لتنفيذ واجهات برمجة تطبيقات HTTP المستندة إلى KOA | |
| @atlas.js/mongoose | الخدمة والخطافات للعمل مع نماذج MongoDB و Mongoose | |
| @atlas.js/الاعتراض | الخدمة والسنانير للعمل مع الاعتراض. | |
| @atlas.js/تتمة | الخدمة والسنانير للعمل مع تتمة | |
| @atlas.js/nodemailer | خدمة البريد الإلكتروني العامة بدعم من مقدمي الخدمات المتعددة | |
| @atlas.js/repl | مكون لإسقاط قذيفة تفاعلية مع تحميل أطلس | |
| @atlas.js/templates | إجراء لتقديم القوالب في سلاسل HTML باستخدام consodiday.js |
لم تجد ما كنت تبحث عنه؟ اكتب بنفسك! تحقق من البرامج التعليمية المرتبطة أدناه.
هل تحتاج إلى مساعدة؟ تحقق من مجلد الدروس ل ... حسنا ... دروس. ؟
يتحدث القسم التالي عن الدوافع وراء وجود Atlas.js.
عندما تتعرف على Atlas.js والمكونات التي صنعت STRV ، ستبدأ في رؤيتها ، وحتى تشعر أنه تم بذل قدر كبير من الجهد في التأكد من أنه يمكنك مشاركة الكثير من التعليمات البرمجية بين المشاريع. كلما كان ذلك ممكنًا ، ستحاول Atlas.js إرشادك بطريقة يجب أن تكون قادرًا على كتابة الكثير من التعليمات البرمجية بطريقة لا تكون خاصة بالأعمال وتنشرها فقط على NPM كوحدة ، وفي وقت لاحق عندما تحتاجها مرة أخرى في مشروع مختلف ، ببساطة تثبيته مرة أخرى ، كلها تعمل فقط.
إدارة تسلسل بدء التشغيل ليس بالأمر السهل دائمًا. في بعض الأحيان ، لا يتضح حتى لماذا يجب أن يزعج شخص ما بتسلسل بدء التشغيل الصحيح للتطبيق - في الوقت الحاضر العديد من المكتبات التي تتطلب بعضًا من التهيئة غير المتزامنة لدعم نوع من التخزين المؤقت للطلب حيث تبدأ ببساطة في استخدام المكتبة وستوفر النتائج عندما تكون جاهزة.
هذا له العديد من المشاكل:
يمكن أن تبدأ بعض الخدمات في وقت أقرب من غيرها
عندما تبدأ خادم HTTP قبل أن يكون لديك اتصال قاعدة بيانات جاهز ، فقد يحدث أنك ستتلقى حركة مرور لا تكون جاهزًا بعد للخدمة. بالنسبة للأحمال الصغيرة ، قد لا يكون هذا يمثل مشكلة ، لكن بالنسبة لمواقع حركة المرور الشديدة ، قد يعني ذلك عدة ثوان من التأخير وقد تستنفد ذاكرتك المتاحة فقط عن طريق تخزين الطلبات المعلقة لفترة طويلة. في حالة عدم دعم هذا النوع من التخزين المؤقت للطلب ، فمن الممكن أن ينهار تطبيقك.
يمكن إيقاف بعض الخدمات عاجلاً من غيرها
ماذا يحدث لتطبيقك عند إغلاق اتصال قاعدة البيانات الخاصة بك قبل إغلاق خادم HTTP؟ بالتأكيد ، يمكن التحكم فيها بسهولة مع خدمتين فقط ، ولكن ماذا لو كان لديك المزيد؟ ربما يكون لديك بعض خادم Redis في مكان ما هناك ، وربما بعض اتصالات مجموعة Elasticsearch وغيرها من غيرها - يمكن أن يصبح معقدًا للغاية بسرعة كبيرة. مع Atlas ، يمكنك تقديم الطلب بشكل حدسي ويتم ذلك - سوف يوقف Atlas الخدمات واحدة تلو الأخرى.
بعض المطورين لا يهتمون وعملية. process.exit() الشيء
لا يريد بعض المطورين أن يزعجوا تنظيف مواردهم بشكل صحيح مثل المهلة والمآخذ والمستمعين وما إلى ذلك ، وعندما يحين الوقت ، فإنهم يجبرون العملية. ومع ذلك ، قد يؤدي ذلك إلى إنهاء بعض طلبات العميل قبل تقديم استجابة ، مما يؤدي إلى أخطاء غريبة ، صفحات فارغة ، بيانات غير مكتملة ، إلخ.
عندما تقرر الدخول في ما يقدمه Atlas.js واستخدام المكونات على أكمل وجه ، ستدرك قريبًا أنه من السهل جدًا التنقل في قاعدة كود غير مألوفة تمامًا بسهولة نسبية - أنت تعرف ما هو المكان وأين تبحث عن وظيفة محددة. عندما تعمل في شركة مثل Strv ، فليس من غير المألوف تبديل المشاريع كل بضعة أشهر أو نحو ذلك. عندما تتمكن من تقليل الوقت اللازم لتطوير رجل/غال جديد لفريقك ، ستكون جميع الأطراف المعنية أكثر سعادة.
هذا مثال كامل للاستخدام. ستقسم تطبيقات العالم الحقيقي على الأقل جزء التكوين إلى الوحدة النمطية الخاصة به بدلاً من كتابته مثل هذا.
أيضًا ، قد ترغب في التحقق من
Atlas.init()، والتي تقوم بتهيئة جميع المكونات لك بناءً على تخطيط الملف/المجلد الذي تحدده. ؟إذا كنت ترغب في اتخاذ الطريق السهل ، تحقق من مولد Yeoman الخاص بنا لإنشاء بنية المجلد الأساسية بسرعة وتثبيت جميع الأشياء المطلوبة.
// We start by importing the required components...
import { Atlas } from '@atlas.js/atlas'
import * as Koa from '@atlas.js/koa'
// Now we need an instance of Atlas, so let's make one
const atlas = new Atlas ( {
// We MUST specify the root folder where our app resides
// This should usually point to the folder where your package.json resides
root : __dirname ,
// Setting env is optional and it fallbacks to NODE_ENV, of course
env : process . env . NODE_ENV ,
// This is where all the configuration data should be specified, for all the components
config : {
// Configuration for services
services : {
// The `http` configuration will be given to the service which we will name as `http`
// (see the `atlas.service()` call below)
http : {
// This goes to the `listen()` function call
listen : {
port : 3000 ,
} ,
// Any properties which Koa supports can be set here
koa : {
proxy : true ,
} ,
} ,
} ,
// Configuration for actions
actions : { } ,
// ...aaand configuration for hooks
hooks : { } ,
} ,
} )
// We need to add the components we want to use to the application
// The first argument is the component's name - it will be used to locate the component's
// configuration and also the service will be exposed on that property:
// `atlas.services.http`
atlas . service ( 'http' , Koa . Service )
// Great, we can finally start the app!
atlas . start ( )
. then ( ( ) => console . log ( 'ready!' ) )
. catch ( err => console . error ( err ) )
export default atlasيتم توثيق خيارات التكوين التي يقبلها كل مكون في مستودع/مجلد الحزمة الخاصة بهم.
لذلك لديك تطبيق مع خدمة KOA التي تم تكوينها وتشغيلها ... رائعة! لكن ربما تتساءل أين تحدد برامج الوسيطة والطرق الخاصة بك وجميع الأشياء المهمة الأخرى؟ يجب عليك التحقق من مجلد الدروس لمزيد من المعلومات!
انظر ملف الترخيص للحصول على المعلومات.