מהי מחסנית MEAN? יישומי אינטרנט של JavaScript

ערמת ה- MEAN, מוגדרת

מחסנית MEAN היא מחסנית תוכנה - כלומר, קבוצה של שכבות הטכנולוגיה המרכיבות יישום מודרני - שנבנית כולה ב- JavaScript. MEAN מייצג את הגעתו של JavaScript כשפת "פיתוח מלא מחסנית", המריצה הכל ביישום מקצה לקצה אחורי. כל אחד מראשי התיבות ב- MEAN מייצג רכיב בערימה:

  • MongoDB: שרת מסד נתונים שנחקר באמצעות JSON (JavaScript Object Notation) ושומר מבני נתונים בפורמט JSON בינארי
  • Express: מסגרת JavaScript בצד השרת
  • זוויתית: מסגרת JavaScript לצד הלקוח
  • Node.js: זמן ריצה של JavaScript

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

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

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

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

MongoDB

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

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

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

Express.js 

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

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

מכיוון שאקספרס הוא מינימלי בכוונה, אין לו הרבה תקורה רעיונית. ההדרכות באתר Expressjs.com יכולות לקחת אותך מסקירה מהירה של היסודות לחיבורי מסדי נתונים ומעבר להם.

זוויתי

Angular (לשעבר AngularJS) משמש לבניית הקצה הקדמי ליישום MEAN. Angular משתמש ב- JavaScript של הדפדפן כדי לעצב נתונים המסופקים על ידי השרת בתבניות HTML, כך שניתן להעביר ללקוח חלק ניכר מהעבודה של עיבוד דף אינטרנט. אפליקציות אינטרנט רבות של עמודים בודדים נבנות באמצעות Angular בקצה הקדמי.

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

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

Node.js 

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

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

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

Node.js דורש פחות זיכרון כדי להתמודד עם יותר חיבורים מאשר לרוב הארכיטקטורות התחרותיות המתרחבות בשרשור - כולל שרת Apache HTTP, ASP.NET, Ruby on Rails ושרתי יישומי Java. לפיכך, צומת הפכה לבחירה פופולרית ביותר לבניית שרתי אינטרנט, ממשקי API של REST ויישומים בזמן אמת כמו אפליקציות צ'אט ומשחקים. אם יש רכיב שמגדיר את מחסנית ה- MEAN, זהו Node.js. 

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

היתרונות והיתרונות של מחסנית MEAN 

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

  • אפליקציות למעקב אחר הוצאות
  • אתרי צבירת חדשות
  • אפליקציות מיפוי ומיקום

משמעות נגד MERN

ראשי התיבות "MERN" משמשים לעתים לתיאור ערימות MEAN המשתמשות ב- React.js במקום ב- Angular. תגובה היא מסגרת, ולא ספריה מן המניין כמו Angular, ויש פלוסים ומינוסים להחלפת React לערימה מבוססת JavaScript. בקצרה, קל יותר ללמוד להגיב, ורוב המפתחים יכולים לכתוב ולבדוק קוד תגובה מהר יותר מכפי שהם יכולים לכתוב ולבדוק אפליקציית Angular מן המניין. React מייצרת גם חזיתות ניידות טובות יותר. מצד שני, קוד Angular יציב יותר, נקי יותר וביצועי יותר. באופן כללי, Angular הוא הבחירה לפיתוח ברמה ארגונית.

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

MEAN מפתחי מחסניות

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

  • תהליכי חזית וקצה אחורי
  • HTML ו- CSS
  • תבניות תכנות והנחיות לעיצוב אדריכלות
  • פיתוח אתרים, שילוב מתמשך וטכנולוגיות ענן
  • ארכיטקטורת בסיסי נתונים
  • מחזור חיי פיתוח התוכנה (SDLC) ואיך זה לפתח בסביבה זריזה

מהו משכורת של מפתחים מחסניות MEAN? אמנם תמיד יש טווח המבוסס על ניסיון ומעסיק, אך בהחלט תחום מכניס. נכון לדצמבר 2019, Neuvoo.com אומר כי השכר החציוני שניתן לקבל מפתח מחסניות MEAN הוא בסביבות 125,000 $ לשנה. Indeed.com מקבץ MEAN מפתחי מחסניות עם devs של stack-stack באופן כללי יותר, ומצמיד את המשכורת השנתית האופיינית לסביבות 112,000 $.

MEAN ערכות לימוד

האם אתה מרגיש בנוח עם היסודות הטכניים ומוכן לצלול וללמוד את מחסנית MEAN? ישנם מספר הדרכות בחינם שיכולות להתחיל. באתר Angular Templates יש מדריך יסודי במיוחד שמנחה אתכם בתהליך בניית אתר פשוט באמצעות ערמת MEAN. ל- TutorialsPoint יש מדריך טוב לבניית יישום אינטרנט בעל עמוד יחיד עם ערמת MEAN. תהנו ללכלך את הידיים ובהצלחה!