في الأسبوع الماضي ، اتصلت بإطار Sails من خلال إنشاء نظام CMS وتعلمت بعض مفاهيم ORM. بدأنا هذا الأسبوع في التعمق في تفاعل بيانات الخلفية ووجدنا أن بنية بيانات الإطار العشرين قد تم تصميمها على الأشرعة (مثل العقدة والفئة). يجب أن أقول إن كبار السن مدهش. لكن التعقيد زاد أيضا. تتمثل مهمتي في مشروع DTREE في استخدام الأشرعة للتفاعل مع العمليات التجارية وقواعد البيانات. في المرة القادمة هذا الأسبوع هي استخدام الأشرعة.
مقدمة في الأشرعة
تشبه Sails Ruby on Rails ، وهو أيضًا إطار لجعل تطوير الويب بسيطًا. على حد علمي خلال هذه الفترة ، فإنه يرث تمامًا بعض واجهات برمجة التطبيقات لـ Express & Socket.io ، ويستخدم الخط المائي (ORM) لتفاعل قاعدة البيانات الموحدة ، بحيث يمكن إكمال عمليات CRUD في بيئات قاعدة بيانات مختلفة دون تعديل رمز مباشرة ؛ مزامنة بيانات النهايات الأمامية والخلفية مع إطار العمود الفقري ، ويستخدم السياسات الوسيطة للتحقق بأمان تفاعل مخططاتها الخاصة. يمكن أن يتفاعل من خلال API Restfull دون سطر واحد من التعليمات البرمجية في النهاية الأمامية والخلفية.
Socket.io & Express
لقد تعلمت الواجهة الأمامية هذين الأمرين في الوقت المناسب ، أحدهما هو اتصالات WebSock والآخر هو معالجة طلبات HTTP. لا تتم إعادة تصميم الأشرعة ولكنها تستخدم هاتين الأداة للتعامل مع هذه الوظائف مباشرة ، مما يقلل من تكاليف التعلم كثيرًا. يقوم Socket.io بإعداد الرسائل ، ويستمع للرسائل ويقوم بإجراء العمليات وفقًا لذلك على كل من الخادم والعميل.
نسخة الكود كما يلي:
`
// جانب الخادم
io.sockets.on ("الاتصال" ، وظيفة (جورب) {
Sock.emit ("NormalMessage" ، {A: "C"}) ؛
}) ؛
// خدمة العملاء
Sock.on ("NormalMessage" ، وظيفة (json) {...}) ؛
`
تكمن وظيفة Express في عمليات التوجيه ، مثل App.get ('/login' ، function (req ، res) {}) ؛.
مخططات الأشرعة والعمود الفقري
في تطوير الويب ، CRUD هو نوع مماثل من التشغيل ، مثل GET/POST في HTTP واختيار/إدراج في قاعدة البيانات. يستخدم كل من API من مخططات الأشرعة والإطار العمود الفقري لـ JS فئة موحدة من الوظائف (مثل Findone) ، بحيث يتم إنشاء المنطق الداخلي بالفعل عندما ينشئ البرنامج النموذج ووحدة التحكم المقابلة. على سبيل المثال ، قام نموذج المستخدمين الشائعين ببناء وحدة تحكم في الأشرعة لتمرير وتخزين بيانات المستخدمين. كل ما نحتاج إلى الانتباه إليه هو المواصفات والعمليات التجارية لأسماء الملفات. لا بأس أيضًا إذا كنت ترغب في تجاوز (الحمل الزائد) الطريقة الأصلية. بعد تعيين الإجراء ووحدة التحكم في الطرق في مجلد التكوين ، يمكننا إضافة الوظائف التي نحتاجها إلى وحدة التحكم المقابلة.
الخط المائي
تُستخدم الحزمة المعتمدة على API of Sails للتفاعل مع قواعد البيانات ، مثل Create () ، و findone () ، و update () ، وما إلى ذلك ، كما ذكرنا سابقًا ، لا نحتاج إلى القلق بشأن أدوات قاعدة البيانات المختلفة لاستدعاء هذه الأساليب بشكل موحد. على سبيل المثال ، عند إدخال البيانات
نسخة الكود كما يلي:
`
users.create ({username: اسم المستخدم ، كلمة المرور: كلمة المرور}). exec (وظيفة (خطأ ، مستخدم) {
إذا (خطأ) {
Res.Send (500 ، {error: "db error"}) ؛
} آخر {
req.session.user = المستخدم ؛
Res.Send (المستخدم) ؛
}
`
النظام الافتراضي هو حفظ البيانات في نظام الملفات المحلي. إذا كنا بحاجة إلى اختيار MySQL أو MongoDB. ما عليك سوى تعديله في ملف التكوين وحدد محول قاعدة البيانات للتفاعل مع البيانات.
السياسات
تم تطبيقه على البرامج الوسيطة على وحدة التحكم ، قم بتشغيله قبل إصدار طلب HTTP. يمكن تحقيق التحكم في الهوية ، على سبيل المثال ، يمكنك فقط تنفيذ الإجراءات التالية إذا قمت بتسجيل الدخول.
نسخة الكود كما يلي:
`
if (req.session.user) {
var Action = req.options.Action ؛
if (Action == "Create") {
req.body.userid = req.session.user.id ؛
req.body.username = req.session.user.username ؛
}
التالي()؛
}آخر{
Res.Send ("يجب تسجيل الدخول" ، 403) ؛
}
`
التالي
بدأت الأشرعة بنجاح ، لكنها لا تزال بحاجة إلى العمل بجدية أكبر في هذا الأمر. فقط عن طريق وضع أساس متين يمكننا تحقيق احتياجات محددة. لذلك نحن بحاجة إلى مواصلة التعلم ، وإيجاد المزيد من الإجراءات لتعلم الأشرعة بعمق ، وكذلك معرفة قيود هذا الإطار.