MEAN לעומת LAMP לפרויקט התכנות הבא שלך

המעבר מסקרנות חדשנית לסוס עבודה מעשי אינו מה שעושה טכנולוגיות רבות. ההתחלויות הקודמות של אתמול לא מצליחות לעמוד בהבטחת גרסה 0.1 שלהן. לא כך לגבי הטכנולוגיות המרכיבות את מחסנית ה- MEAN בראשי תיבות.

רק לפני כמה שנים מונגו-די-בי, אקספרס.ס, אנגולר ג'ס ונוד.ס הרימו גבות בכוחות עצמם. עכשיו הם התבגרו והתאגדו, ויחד הם עושים עבודה רצינית, ומציגים לא מעט מפתחים ממחנה LAMP העצום. אבל איך בדיוק הדבר החדש הזה של MEAN מסתדר מול LAMP? מתי עדיף לבחור את ה- LAMP הבדוק והבוגר על פני אוסף זה של טכנולוגיות ממוקדות JavaScript?

התשובה היא כאשר הפשטות והמבנה המשותף מקלים על חייך. MongoDB מציעה שכבה גמישה יותר ומגישה לאחסון נתונים. Node.js מספק קשר טוב יותר להפעלת השרת שלך, בעוד ש- Express עוזר לתקן את אופן בניית האתרים שלך. אצל הלקוח Angular מספק דרך נקייה להוספת פונקציות אינטראקטיביות ורכיבים עשירים המונעים על ידי AJAX. חברו את כולם והם יוצרים מנגנון נקי וקוהרנטי להעברת נתונים ממשתמש לחוות דיסקים ובחזרה.

ההסבר האמיתי, לעומת זאת, עמוק יותר. כאן אנו מציעים תשע סיבות לתת ל- MEAN הזדמנות עם הפרויקט הבא שלך. לא לכולם יש את הזמן או את התקציב להשליך ולקדם מחדש את הישנים במסגרת האחרונה והטרנדית ביותר, וגם לא צריך לזרוק את האמינות המוצקה של כלים נבדקי קרב כמו Apache, MySQL או PHP. אך עבור פרויקטים בשדה ירוק שיכולים להפיק תועלת מגמישות, פשטות וביצועים, מעבר ל- MEAN עשוי להפוך את חייך לטובים ממה שאתה חושב.

MongoDB בנוי עבור הענן

אם תוכניות אפליקציית האינטרנט שלך כוללות ביצוע טוב על ההבטחה של גרוש למעבד בענן, מחסנית MEAN מציעה שכבת בסיס נתונים משכנעת ב- MongoDB. מסד נתונים מודרני זה מצויד בשילובים אוטומטיים ותמיכה באשכולות מלאה, מייד מהקופסה. חבר את MongoDB והוא מתפשט על פני אשכול השרתים שלך כדי להציע תמיכה בעת כשל ושכפול אוטומטי. לאור הקלות בה ניתן לפתח, לבדוק ולארח אפליקציות בענן, אין שום סיבה שלא לשקול את MongoDB לפרויקט הבא שלך.

המבנה של MySQL מוגבל 

כל מי שפיתח או אחזק אפליקציה מבוססת LAMP למשך פרק זמן כלשהו יודע שכוחו של MySQL כמאגר מידע יחסי יכול להרגיש לפעמים כלוא. כמו כל מאגרי היחס, MySQL מכריח אותך לדחוף את הנתונים שלך לטבלאות. זו לא בעיה אם כל ערך מתאים בדיוק לאותו פורמט, אך באיזו תדירות העולם נדיב כל כך? מה אם שני אנשים חולקים את אותה הכתובת אך לא את אותו החשבון? מה אם ברצונך לקבל שלוש שורות לכתובת במקום שתיים? מי לא ניסה לתקן מסד נתונים יחסי על ידי רישום נעליים רבים מדי בעמודה אחת? אחרת, בסופו של דבר אתה מוסיף עמודה נוספת, והטבלה גדלה ללא גבולות.

MongoDB, לעומת זאת, מציע מבנה מסמכים שהוא הרבה יותר גמיש. רוצה להוסיף מידע אישי אישי חדש לפרופילי המשתמש שלך? כל שעליך לעשות הוא להוסיף את השדה לטופס שלך, לגלגל אותו עם שאר הנתונים במסמך JSON ולדחוף אותו לאוסף MongoDB שלך. זה מעולה לפרויקטים שטופחים ולעיסוק בנתונים שעלולים להתגלות בסופו של דבר כמסובך להגביל את הטבלה.

שטח הדיסק זול

בין הגילויים הגדולים של מאגרי מידע יחסיים הייתה פקודת JOIN. עם JOIN נוכל לחסוך מקום בדיסק על ידי הסרת שדות חוזרים כמו עיר, מדינה ומיקוד. על ידי שמירת נתונים אליהם חוזרים ונשנים לעתים קרובות בטבלאות נפרדות שיכולות להיכלל בתוצאות עתידיות באמצעות JOIN, אנו שומרים על מסד הנתונים שלנו והדיסקים שלנו דקים.

אבל JOINs יכולים להיות מסובכים עבור חלקם וקשים בזיכרון RAM, ולמרות שזה עדיין רעיון טוב לבודד ולגשת לנתונים בטבלאות נפרדות באמצעות JOINs, אין צורך לחסוך מקום בדיסק כעת כשכונני הדיסק נמדדים במספר טרה-בתים. השטח כל כך זול, עד כי חלק ממעצבי מסדי הנתונים בסופו של דבר מבטל את נורמלי הנתונים שלהם מכיוון שה- JOIN איטי מדי. ברגע שאתה עושה את זה, אתה לא צריך מסד נתונים יחסי באותה מידה. מדוע לא להשתמש במקום זאת ב- MongoDB?

Node.js מפשט את שכבת השרת

ניווט בשכבות השונות של ערימת LAMP יכול להיות ריקוד קשה של כובעים רבים, כזה שגורם לך לדשדש בין קבצי תצורה שונים עם תחביר שונה. MEAN מפשט זאת באמצעות Node.js.

רוצה לשנות את האופן שבו האפליקציה שלך מנתבת בקשות? פזרו קצת JavaScript ותנו ל- Node.js לעשות את השאר. רוצה לשנות את ההיגיון המשמש למענה על שאילתות? השתמש שם גם ב- JavaScript. אם אתה רוצה לכתוב מחדש כתובות אתרים או לבנות מיפוי מוזר, זה גם ב- JavaScript. ההסתמכות של ערימת ה- MEAN על Node.js מציבה סוג זה של צינורות במקום אחד, הכל בשפה אחת, הכל בערימה אחת של לוגיקה. אתה לא צריך לקרוא מחדש את דפי האיש עבור PHP, אפאצ'י וכל מה שאתה מוסיף לערימה. בעוד שדור ה- LAMP כולל קבצי תצורה שונים לכל דבר, Node.js נמנע לחלוטין מהנושא הזה. שיש הכל בשכבה אחת פירושו פחות בלבול ופחות סיכוי לבאגים מוזרים הנוצרים על ידי אינטראקציות מוזרות בין מספר שכבות.

MEAN הופך את הקוד לאיזומורפי

הפשטות לא נעצרת בשימוש ב- JavaScript בשרת. על ידי מעבר ל- MEAN, תוכלו ליהנות מאותו JavaScript גם על הלקוח, ולהשאיר אחריו את סכיזופרניה של הלקוח / שרת של מחסנית LAMP. אם אתה כותב קוד ל- Node ומחליט שהוא ממוקם טוב יותר ב- Angular, תוכל להעביר אותו בקלות, וכמעט בטוח לפעול באותה דרך. גמישות זו מקלה על משמעותי תכנות אפליקציות מבוססות MEAN. בנוסף, אם אתה מאייש פרויקט, אינך צריך לחפש מומחה PHP ומומחה JavaScript, או פרונט-אנד ומומחה אחורי. במקום זאת, הכל JavaScript על פני הערימה.

JSON בכל מקום

Angular ו- MongoDB שניהם מדברים JSON, כמו גם Node.js ו- Express. הנתונים זורמים בצורה מסודרת בין כל השכבות מבלי לכתוב מחדש או לעצב מחדש. הפורמט המקורי של MySQL למענה על שאילתות הוא, ובכן, כולו שלו. כן, ל- PHP כבר יש את הקוד לייבוא ​​נתוני MySQL ולהקל על העיבוד ב- PHP, אך זה לא עוזר לשכבת הלקוח. זה עשוי להיות מעט מינורי לוותיקי LAMP מנוסים מכיוון שיש כל כך הרבה ספריות שנבדקו היטב הממירות את הנתונים בקלות, אך כל זה נראה מעט לא יעיל ומבלבל. MEAN משתמש באותו פורמט JSON עבור נתונים בכל מקום, מה שהופך אותו לפשוט יותר וחוסך זמן לעיצוב מחדש כאשר הוא עובר בכל שכבה. בנוסף, בכל מקום של JSON דרך מחסנית MEAN הופך את העבודה עם ממשקי API חיצוניים להרבה יותר קלים: קבל, טפל, הציג, פרסם ואחסן הכל בפורמט אחד.

Node.js הוא מהיר במיוחד

אפאצ'י היה נהדר, אך בימינו, Node.js לרוב מהיר יותר. מספר מדדים מראים כי Node.js מציע ביצועים טובים יותר, תוך ביצוע הרבה יותר. אולי זה עידן הקוד. אולי ארכיטקטורת מונע האירועים של Node.js מהירה יותר. זה לא משנה. בימים אלה, במיוחד בקרב משתמשי מכשירים ניידים חסרי סבלנות, גילוח אפילו אלפיות שניות מביצועי האפליקציה שלך הוא חשוב ו- Node.js יכול לעשות זאת, תוך שהוא מציע מנגנון שלם של טיור לתכנותו מחדש.

העומק חשוב

חובבי PHP אוהבים לדבוק בספריות הקוד הגדולות שנבנו עבור פלטפורמות דומיננטיות כמו WordPress או Drupal. יש להם סיבות טובות להיות גאים, אך היתרונות שלהם מתאדים ככל ש- Node.js מתעדכן.

מנהל החבילות Node.js, NPM, מקל עוד יותר על שיתוף הקוד, והמאגרים הציבוריים הממוקדים ל- Node.js צומחים במהירות. בעוד שקהל ה- PHP עשוי להוביל ברגע זה בזמן, העתיד עשוי להעדיף את Node.js. בנוסף, בעלי תפקידים לעיתים קרובות שבירים לנוכח מגמות משתנות. כל ניסיון למודרניזציה של פלטפורמה מעוגנת כמו דרופל עם גרסה חדשה פירושו שמפתחים רבים נוספים עשויים לתת לעיניהם לנדוד לעבר הפלטפורמות החדשות והזריזות יותר שנבנו סביב Node.js.

זוויתית טרייה

זה לא בדיוק הוגן להשוות את ה- "A" ב- "MEAN" לכל דבר בערמת LAMP מכיוון ש- LAMP אינו כולל אנלוגי. אם אתה רוצה לעשות משהו מצד הלקוח, אתה בעצמך. בטח, יש המון מסגרות מבוססות PHP טובות שעובדות עם MySQL, אבל כל אחת מהן שונה ומשנה לכיוון שלה. וורדפרס, ג'ומלה ודרופל, למשל, מציעות אסטרטגיות שונות וקשה לעבור ביניהן, שלא לדבר על קוד יציאה מאחד לשני. משיחת מסגרת לקוח אחת מוסיפה עקביות ויציבות.

זה גם עוזר ש- Angular נבנתה על ידי אנשים עם 20 שנות ניסיון בבניית אפליקציות אינטרנט. הם ידעו מספיק כדי להשאיר את עבודת העיצוב ל- HTML ו- CSS. הם גם הבינו כיצד להוסיף קצת JavaScript כדי לסרוק את ה- HTML. המעצבים של אנגולר בדקו מה בני האדם עושים טוב, ואז התאימו את ה- JavaScript לתמיכה בבני האדם. מערכת התבניות ושכבות ההיגיון נקיות יותר ממה שראינו בעבר, בין השאר מכיוון שהצוות הבין דרכים פשוטות יותר למנף את הכוח המקומי של JavaScript כדי לנחש מה אתה עושה.

לערבב ולהתאים

כמובן, אם אתה באמת בררן, אין שום סיבה שלא תוכל לערבב את זה קצת. שפע מפתחים משתמשים ב- MongoDB עם Apache ו- PHP, ואחרים מעדיפים להשתמש ב- MySQL עם Node.js. Angular עובד די טוב עם כל שרת, אפילו אחד שמריץ PHP כדי לספק נתונים מ- MySQL. אתה לא צריך להיות עבד לראשי התיבות.