เมื่อไม่นานมานี้ฉันเห็นบทความที่กล่าวถึงคำว่าหมายถึง หมายถึงอะไร?
ในความเป็นจริง MENA เป็นตัวย่อของ MongoDB (ฐานข้อมูลที่ไม่ใช่ความสัมพันธ์) + Express (Template Engine) + AngularJS (MVC JavaScript Library) + NodeJS (สคริปต์เซิร์ฟเวอร์)
พวกเขาช่วยกันสร้างเครื่องมือพัฒนาเว็บแอปพลิเคชันที่ทันสมัยตาม JavaScript
MongoDB:
เป็นวิธีที่ทรงพลังยืดหยุ่นและปรับขนาดได้ในการจัดเก็บข้อมูล
มันขยายคุณสมบัติที่มีประโยชน์มากมายของฐานข้อมูลเชิงสัมพันธ์เช่นการจัดทำดัชนีเสริมการสืบค้นช่วงและการเรียงลำดับการสนับสนุนในตัวสำหรับการรวมตัวของ MapReduce และการสนับสนุนสำหรับการจัดทำดัชนีเชิงพื้นที่
มันแทนที่แนวคิดของแถวฐานข้อมูลแบบดั้งเดิมด้วยโมเดลเอกสารโมเดลเอกสารที่เรียกว่าจริง ๆ แล้วเป็นวัตถุอาร์เรย์
มาดูรูปแบบเอกสาร:
{"_id": 1, "ทักทาย": "สวัสดีโลก!" , "foo": 3}
แต่ละเอกสารจะมีฟิลด์ของ _id โมเดลเอกสารแสดงถึงบันทึกในฐานข้อมูลที่มีฟิลด์ทักทาย Foo และ _id;
ด่วน:
เกี่ยวกับเอ็นจิ้นเอ็กซ์เพรสสุดท้ายฉันต้องการอธิบายในประโยค:
มันเป็นเฟรมเวิร์กแอปพลิเคชัน Node.JSWEB ที่เรียบง่ายและยืดหยุ่นซึ่งจัดหาคุณสมบัติที่ทรงพลังเพื่อช่วยให้คุณสร้างเว็บแอปพลิเคชันต่างๆ
เครื่องมือ HTTP และมิดเดิลแวร์ที่หลากหลายจาก Framework Connect มีให้เลือกตามที่คุณต้องการทำให้ง่ายและรวดเร็วในการสร้าง API ที่แข็งแกร่งและเป็นมิตร
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>
สวัสดี {{'World'}}!
</body>
</html>
<html ng-app>
ประกาศว่าหน้าใช้ AngularJs และเมื่อโหลดหน้าเว็บแท็ก 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>
ชื่อของคุณ: <อินพุต type = "text" ng-model = "YourName" placeholder = "World">
<Hr>
สวัสดี {{yourname || 'โลก'}}!
</body>
</html>
เปิดหน้านี้ในเบราว์เซอร์ของคุณและพยายามป้อนอักขระสุ่มในกล่องอินพุต คุณจะพบว่าอักขระที่ป้อนจะได้รับการอัปเดตทันทีและแสดงในคำทักทาย มันไม่ได้วิเศษมากเหรอ?
ความคิดของ การเปลี่ยนแปลงใด ๆ ในกล่องอินพุตจะสะท้อนให้เห็นทันทีกับตัวแปรโมเดล (ทิศทางเดียว) และการเปลี่ยนแปลงใด ๆ ในตัวแปรโมเดลจะสะท้อนให้เห็นทันทีกับข้อความทักทาย (ทิศทางอื่น)
ตัวอย่างนี้มีหมายเหตุสำคัญต่อไปนี้:
1. คำสั่งอินพุตข้อความ <อินพุต ng-model =” YourName” /> ถูกผูกไว้กับตัวแปรโมเดลที่เรียกว่าชื่อ YourName
2. เครื่องหมายรั้งคู่เพิ่มตัวแปรรุ่นของคุณในข้อความอวยพร
3. คุณไม่จำเป็นต้องลงทะเบียนผู้ฟังเหตุการณ์หรือเพิ่มตัวจัดการเหตุการณ์สำหรับแอปพลิเคชัน!
nodejs
มันเป็นแพลตฟอร์ม JS เซิร์ฟเวอร์ประสิทธิภาพสูงที่พัฒนาโดย Ryan Dahl
มันได้รับการพัฒนาในเครื่องยนต์ V8 ซึ่งเป็นเครื่องยนต์จาวาสคริปต์ที่พัฒนาโดย Google ไม่ใช่เครื่องยนต์ V8 ของรถยนต์ - เป็นเอ็นจิ้นประสิทธิภาพสูงซึ่งเกินกว่าภาษาสคริปต์อื่น ๆ
NodeJS ใช้วิธีการสื่อสาร I/O แบบอะซิงโครนัสซึ่งคล้ายกับ AJAX:
การคัดลอกรหัสมีดังนี้:
$ .post ("url", {title: "Post Request"}, function (data) {
console.log ("การตอบสนองที่ได้รับ");
-
console.log ("ส่ง Ajax End");
วิธีการร้องขอ nodejs:
การคัดลอกรหัสมีดังนี้:
var fs = ต้องการ ('fs');
fs.readfile ("/path", ฟังก์ชัน (err, ไฟล์) {
console.log ("อ่านไฟล์เสร็จสมบูรณ์");
-
console.log ("เริ่มต้นอ่านไฟล์");
ดูตัวอย่างต่อไปนี้:
เมื่อมีการดำเนินการตามคำขอสองครั้งพร้อมกันการใช้เวลาทั้งหมดขึ้นอยู่กับการใช้เวลามากที่สุดแทนที่จะเป็นผลรวมของการใช้เวลาของการร้องขอทั้งสองเพราะพวกเขาขนานกัน
การคัดลอกรหัสมีดังนี้:
// คำขอแรก
var fs = ต้องการ ('fs');
fs.readfile ("/path1", ฟังก์ชัน (err, ไฟล์) {
console.log ("อ่านไฟล์ 1 เสร็จสมบูรณ์");
-
// คำขอที่สอง
fs.readfile ("/path2", ฟังก์ชั่น (err, ไฟล์) {
console.log ("อ่านไฟล์ 2 เสร็จสมบูรณ์");
-
console.log ("เริ่มต้นอ่านไฟล์");
อีกเหตุผลที่ NodeJS มีประสิทธิภาพสูงคือการขับเคลื่อนเหตุการณ์:
Node แนะนำกิจกรรมในเบราว์เซอร์ front-end ไปยังส่วนหลังและร่วมมือกับ I/O แบบอะซิงโครนัสเพื่อเปิดเผยคะแนนเหตุการณ์ไปยังตรรกะทางธุรกิจ
วิธีที่เหตุการณ์กลายเป็นข้อได้เปรียบของการมีเพศสัมพันธ์ที่มีน้ำหนักเบาและหลวมโดยมุ่งเน้นไปที่คะแนนสิ่งต่าง ๆ เท่านั้น