בשנת 2021, JavaScript הייתה שפת התכנות הנפוצה ביותר.
אין להכחיש את המשיכה של טכנולוגיה זו, כפי שניתן לראות במספר העצום של מסגרות המאפשרות תכנות JavaScript.
יש Angular, React ו-Vue בחזית, כמו גם Express ו-Next בקצה האחורי, אם להזכיר כמה.
עם כל כך הרבה מסגרות נפלאות לתכנות עורפי ב-JavaScript, אתה אולי חושב למה אני אחפש משהו אחר במקום פשוט להשתמש ב-Express או Next.
אולי אתה צריך להזניק את תהליך הפיתוח במהירות עם תבנית הגונה, והוספת ידנית לא רק בקרים חדשים אלא גם שירותים גורמת לך לחלות.
או שאתה רוצה ליצור תוכנה גדולה וניתנת להרחבה ופשוטה לניהול. או אולי אתה פשוט רוצה לעבוד בצורה יעילה ונוחה יותר.
לא משנה מה נכון בנסיבות שלך, Nest.js יכול להיות הפתרון המושלם לצרכים שלך.
פוסט זה יספק תובנות של NestJS כמו גם חוויה מעשית.
מה זה NestJS?
NestJS היא מסגרת פרוגרסיבית של Node שהיא קוד פתוח, ניתנת להרחבה וניתנת להתאמה .Js מסגרת לבניית מערכות עורפיות, מרתקות ומאתגרות. כעת זהו הצומת עם קצב הצמיחה המהיר ביותר.
מסגרת TypeScript עבור js. NestJS משמש ליצירת יישומים הניתנים להרחבה, ניתנים לבדיקה ומחוברים באופן רופף.
זה מוסיף מדרגיות ל-Node. שרתי Js נלקחו לרמה חדשה לגמרי. PostgreSQL, MongoDB ו-MySQL הם בין מסדי הנתונים הנתמכים.
NestJS ניתן להרחבה מכיוון שניתן להשתמש בו עם ספריות אחרות; גמיש בגלל המערכת האקולוגית הניתנת להתאמה מלאה. ומתקדם מכיוון שהוא תומך בתכונות JavaScript ובעקרונות עיצוב.
הוא מושפע בעיקר מ-Angular, React ו-Vue ומגיע עם הזרקת תלות מובנית.
תכונות
- זה פשוט לשימוש, ללמוד ולשלוט בו.
- זה בחינם ו קוד פתוח (רישיון MIT)
- ממשק שורת פקודה רב עוצמה (CLI) להגברת הפרודוקטיביות ופשטות הפיתוח
- תוכניות בדיקת יחידות פשוטות לשימוש
- נעשה שימוש ב-TypeScript, שפה מדוייקת שהיא ערכת-על של JavaScript.
- פיתוח ותחזוקה של בסיס קוד פעיל.
- תמיכה במאות מודולים ספציפיים לקן המקלים על ממשק עם טכנולוגיות ורעיונות פופולריים כמו TypeORM, Mongoose, GraphQL, רישום, אימות, מטמון, WebSockets ועוד.
מהן אבני הבניין של NestJS?
רכיבי הבניין של יישומי Nest מפורטים להלן; יש אחרים, אבל שלושת אלה הם המשמעותיים ביותר. בואו נסתכל עליהם במהירות.
1. בקרי
בקרים אחראים על עיבוד בקשות נכנסות ומענה ללקוחות. הוא מקבל בקשות HTTP מסוימות, ומערכת הניתוב קובעת איזה בקר מקבל איזו בקשה.
לאחר מכן הוא מנסח תשובה מתאימה לשליחה. בעזרת חוגים ומעצבים נבנה אספן פשוט ולכל בקר סט מסלולים משלו לביצוע משימות שונות.
2. ספקים
ספקים הם רעיון מרכזי ב-Nest. ניתן לטפל ברבים משיעורי הליבה של Nest - שירותים, מאגרים, מפעלים, עוזרים וכן הלאה - כספקים.
הרעיון הבסיסי של ספק הוא שניתן להזריק אותו כתלות; זה מרמז שאובייקטים יכולים ליצור אסוציאציות שונות זה עם זה, ואת התפקיד של "לחבור" מופעים של אובייקטים ניתן בעיקר למיקור חוץ למערכת זמן הריצה של Nest.
3. מודולים
מודול הוא מחלקה עם הדקורטור @Module() שמארגן את רכיבי מבנה האפליקציה. לכל יישום יש מודול שורש המשמש לבניית גרף היישום, אשר פותר עוד יותר את התלות והאינטראקציות בין הספק למודול.
מעצב זה נותן מטא נתונים ל-Nest.js על מנת לזהות אילו רכיבים, בקרים או משאבים אחרים ינוצלו בקוד האפליקציה ולשלב אותם לקבוצה אחת.
לכל מודול יש אוסף של יכולות המחוברות בדרך כלשהי.
תחילת העבודה עם NestJS
1. הַתקָנָה
בואו נתקין את NestJS וניצור איתו פרויקט על ידי ביצוע השלבים הבאים:
מבנה הספריות הבא ייווצר כתוצאה מכך:
2. בקרי
אבני הבניין של הקן הן בקרים. אלו המיקומים שבהם יטופלו בקשות נכנסות. אתה יכול לציין את נתיב המסלול באמצעות מעצבי שיטת HTTP (קבל, פרסם, שים, מחק וכן הלאה), כפי שניתן לראות בקוד למטה.
Nestjs משתמש בגישת הדקורטור ומפותח בעיקר ב-Typescript, אם כי הוא תומך גם ב-JavaScript. אתה יכול גם להשתמש במאמת מחלקה כדי לאמת את גוף הבקשה.
אני רק הולך ליצור מופע של שרת Nestjs ולהוסיף את ValidationPipe באופן גלובלי. צינורות הם רק שיטות שפועלות לפני בקרים. ניתן ליישם צינורות גם ברמת השיטה/טיעון באמצעות הדקורטור @UsePipes.
3. ספקים
ספקים הם מרכיב קריטי נוסף של Nestjs. עד כה, אחסנתי נתונים במשתנה זמני. לכן ניתן לבצע משימה כה פשוטה באמצעות מטפלי בקרים.
עם זאת, עבור לוגיקה גדולה ומסובכת יותר, הפרדת קוד ושימוש חוזר יהיו קשים. זה הזמן שבו הספקים נכנסים. אתה יכול להצהיר/ליצור ספק על גבי מחלקה על ידי שימוש ב-@Injectable decorator. לאחר מכן, באמצעות ספקים, תוכל לבצע הזרקת תלות, רישום ומשימות אחרות.
4. מודולים
מודולי Nestjs אינם גלובליים; במקום זאת, יש להם עומק.
עם זאת, ניתן לשתף אותו עם כל מודולים אחרים גם כן. למרות שהיא, כמו Angular, מציעה מודולים גלובליים, רצוי יותר לשמור שירותים/בקרים במודול שבו הם נמצאים בשימוש הנפוץ ביותר ב-Nestjs.
ה-NestCLI משמש לייצור מודולים רוב הזמן, וספקים/בקרים שנוצרו בהקשר של אותו מודול מתווספים אוטומטית על ידי ה-CLI. אלה ידועים בתור מודולי תכונה.
5. מסנני חריגים
מסנני חריגים הם מטפלי שגיאות המופעלים כאשר בקר זורק חריג. הוא מנהל את הבעיה באופן אוטומטי ומספק הודעת שגיאה מתאימה וידידותית למשתמש.
חריגים רבים שעברו בירושה של HttpException מסופקים על ידי החבילה @nestjs/common, כולל NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException ורבים אחרים. אתה אפילו יכול לעצב את מסנן החריגים שלך.
6. כלי ביניים
פונקציה שמופעלת לפני המטפל במסלול נקראת תוכנת ביניים. אובייקטי הבקשה והתגובה, כמו גם פונקציית התווך הבאה() במחזור הבקשה-תגובה של היישום, נגישים לפונקציות התווך.
משתנה שנקרא next משמש בדרך כלל לזיהוי פונקציית התווך הבאה. ניתן ליישם את תוכנת ה-Custom Nest בשיטה או במחלקה באמצעות הדקורטור @Injectable().
7. שומרים
השומרים אחראים רק לדבר אחד. באחריותם להעריך אם הבקשה תעובד או לא על ידי הבקר בהתבסס על נסיבות ספציפיות (באופן ספציפי, לוגיקה מוגדרת על ידי משתמש).
זה מועיל לאימות/הרשאה והיא השיטה המומלצת ב-Nestjs.
למרות שניתן לבצע אימות/הרשאות וכו' באמצעות תוכנת ביניים, זה לא נעשה בשרתי HTTP Express או אחרים מכיוון שאין להם הקשר חזק קשור ואין להם סיבה לדעת באיזו שיטה תשמש לעיבוד הבקשה.
יתרונות
- המסגרת תלויה במידה רבה בהערות, המשמשות להפקת כל דבר, החל מנקודות קצה ועד תיעוד Swagger. נקודות הקצה הן בסיסיות ומסודרות, והביאורים מקלים על הפיתוח באופן כללי.
- קל להחצין מודולים למטרות כלליות ולעשות שימוש חוזר בקוד בפרויקטים רבים מכיוון ש-Nest.js היא מסגרת מבוססת מודולים.
- מבנה התיקיות של Nest.js מושפע באופן משמעותי מ-Angular. בעת תכנון שירות Nest, זה מאפשר זמן השבתה מינימלי.
- לרכיבים יש ספריות משלהם, כאשר השורש מכיל את מודול היישום והקובץ הראשי. בגלל פשטות המבנה, ניתן להקדיש יותר תשומת לב לתכנון של נקודות הקצה וללקוחותיהם ולא למבנה האפליקציה.
- Nest, כמו Angular, מציע כלי שורת פקודה נחמד, Nestjs/cli, הזמין דרך Node Package Manager.
חסרונות
- ל-Nest יש יתרון במונחים של שימוש ב-TypeScript ואינטגרציה Angular, אבל היא חסרה תמיכה פיננסית של תאגיד ענק.
- היעדר תיעוד מהווה את האיום הגדול ביותר על משתמשי Nest. למרות שלמסגרת יש אינטראקציות מצוינות עם מסגרות אחרות, התיעוד דל ואינו נותן מענה לקשיים פוטנציאליים.
- ל-Nest יש יתרון מבחינת השימוש ב-TypeScript ו-Angular.
סיכום
NestJS מספקת למפתחים הישג ענק. כדי להתחיל בפיתוח, כל מה שאתה צריך לעשות הוא ליצור אפליקציה חדשה ואתה מוכן ללכת. מסגרת זו מספקת דחיפה משמעותית מיד, ובמקביל גם מסייעת לך לבצע שלבים נוספים על ידי הקמת ארכיטקטורת אפליקציה מתאימה.
הוא עושה שימוש בשיטות ובטכנולוגיה חדשנית כדי לייצר יישומים שניתנים לניהול ועמידים לאורך זמן. ניתן להשתמש בו כדי להתחבר ל- GraphQL, WebSockets ולבנות מיקרו-שירותים.
השאירו תגובה