منذ بعض الوقت ، رأيت مقالًا يذكر الكلمة يعني. ماذا يعني؟
في الواقع ، MENA هو اختصار MongoDB (قاعدة البيانات غير العليا) + Express (محرك القالب) + AngularJS (مكتبة MVC JavaScript) + Nodejs (البرنامج النصي للخادم).
يقومون معًا ببناء أداة تطوير مكاسب كاملة على الويب تعتمد على JavaScript.
مونغودب:
إنها طريقة قوية ومرنة وقابلة للتطوير لتخزين البيانات.
يمتد العديد من الميزات المفيدة لقواعد البيانات العلائقية ، مثل الفهرسة الإضافية ، والاستعلام عن النطاق ، والفرز ، ودعمها المدمج لتجميع على غرار MapReduce ودعم الفهرسة الجغرافية المكانية.
يحل محل مفهوم صفوف قاعدة البيانات التقليدية مع نماذج المستندات ، ما يسمى نموذج المستند هو في الواقع كائن صفيف.
لنلقي نظرة على نموذج المستند:
{"_id": 1 ، "تحية": "مرحبا ، العالم!" ، "فو": 3}
سيكون لكل وثيقة حقل _id. يمثل نموذج المستند سجلًا في قاعدة البيانات التي تحتوي على تحية الحقول ، FOO و _ID ؛
يعبر:
بخصوص آخر محرك Express ، أريد أن أصفه في جملة:
إنه إطار عمل بسيط ومرن.
تتوفر أدوات HTTP Rich Rich و Middware من إطار Connect كما تريد ، مما يجعلها سريعة وسهلة إنشاء واجهة برمجة تطبيقات قوية وودية
لا يقوم Express بإجراء تجريد ثانوي للميزات الحالية لـ Node.js ، نقوم بتمديد الوظائف التي تتطلبها تطبيقات الويب عليها.
AngularJS:
AngularJS هي مكتبة JS التي طورتها Google. إنها نفس مكتبة النص MVC مثل BackOne.
الدرس الأول في كل لغة تقريبًا يدور حول Hello World. وفقا للاتفاقية ، سنفعل واحدة أيضا:
نسخة الكود كما يلي:
<! doctype html>
<html ng-app>
<head>
<script src = "http://code.angularjs.org/angular-1.0.1.min.js"> </script>
</head>
<body>
مرحبا بالعالم'}}!
</body>
</html>
<html ng-app>
تعلن أن الصفحة تستخدم AngularJs ، وعندما يتم تحميل الصفحة ، تخبر Tag Ng-App AngularJS بمعالجة صفحة HTML بأكملها وتغطي التطبيق.
يطبع هذا المثال Hello World على الصفحة ، وبعض الناس يفاجأون ، لماذا Hello World معقد للغاية؟
في الواقع ، فإن المحتوى في {{}} هو شكل من أشكال ربط البيانات. بعد قراءة المثال التالي ، ستعرف قوتها.
دعونا نلقي نظرة على المثال التالي:
نسخة الكود كما يلي:
<! doctype html>
<html ng-app>
<head>
<script src = "Angular-1.0.1.min.js"> </script>
</head>
<body>
اسمك: <input type = "text" ng-model = "yourname" placeholder = "world">
<hr>
مرحبا {{yourname || 'عالم'}}!
</body>
</html>
افتح هذه الصفحة في متصفحك وحاول إدخال أحرف عشوائية في مربع الإدخال. ستجد أنه يتم تحديث الأحرف التي تم إدخالها على الفور وعرضها في التحية. أليست سحرية جدا؟
فكر. تنعكس أي تغييرات على مربع الإدخال فورًا على متغير النموذج (اتجاه واحد) ، وينعكس أي تغييرات على متغير النموذج على الفور في نص التحية (الاتجاه الآخر).
يحتوي هذا المثال على الملاحظات المهمة التالية:
1. تعليمات إدخال النص <الإدخال ng-model = "yourname" /> مرتبط بمتغير نموذج يسمى yourname.
2. علامة الدعامة المزدوجة تضيف متغير نموذجك إلى تحية النص.
3. لا تحتاج إلى تسجيل مستمع حدث أو إضافة معالج حدث للتطبيق!
Nodejs
إنه منصة خادم عالي الأداء JS تم تطويرها بواسطة Ryan Dahl.
تم تطويره في محرك V8 ، وهو محرك JavaScript الذي طورته Google ، وليس محرك V8 الخاص بالسيارة - إنه محرك عالي الأداء يتجاوز بكثير لغات البرمجة النصية الأخرى.
تستخدم Nodejs طريقة الاتصال I/O غير متزامنة ، والتي تشبه إلى حد كبير Ajax:
نسخة الكود كما يلي:
$ .post ("url" ، {title: "post request"} ، function (data) {
console.log ("استجابة") ؛
})
console.log ("إرسال Ajax End") ؛
طريقة طلب NodeJS:
نسخة الكود كما يلي:
var fs = require ('fs') ؛
fs.readfile ("/path" ، الدالة (err ، ملف) {
console.log ("قراءة الملف الكامل") ؛
}) ؛
console.log ("بدء قراءة الملف") ؛
دعونا نلقي نظرة على المثال التالي:
عندما يتم تنفيذ طلبين في وقت واحد ، يعتمد إجمالي استهلاك الوقت على الاستهلاك الذي يستهلك معظم الوقت ، بدلاً من مجموع استهلاك الوقت للطلبين ، لأنهما متوازيين.
نسخة الكود كما يلي:
// الطلب الأول
var fs = require ('fs') ؛
fs.readfile ("/path1" ، الدالة (err ، ملف) {
console.log ("قراءة الملف 1 مكتمل") ؛
}) ؛
// الطلب الثاني
fs.readfile ("/path2" ، الدالة (err ، ملف) {
console.log ("read file 2 اكتمل") ؛
}) ؛
console.log ("بدء قراءة الملف") ؛
سبب آخر يجعل NodeJS أداء عالي الدافع وراء الحدث:
تقدم Node أحداثًا في متصفحات الواجهة الأمامية إلى الواجهة الخلفية ، وتعاون مع I/O غير المتزامن لفضح نقاط الحدث إلى منطق العمل.
تتمتع الطريقة التي تصبح بها الأحداث بمزايا اقتران خفيف الوزن ، مع التركيز فقط على نقاط الأشياء.