הבנת Nx ו- Monorepo Concepts

צוותים לפיתוח מודרני עובדים על יישומים מרובים או מיקרו-frontends לעתים קרובות נאבקים עם שמירה על עקביות וקוד שימוש חוזר על פני פרויקטים. Nx, מערכת בנייה עם יכולות מונורופו מתקדמות, פותרת רבים של אתגרים אלה על ידי מתן מרחב עבודה מאוחדת עבור כל הקוד שלך. במקום ניהול קידוד נפרד עם תלות כפולה, מונופרופו המופעל על ידי ספריות Nx מאפשר לך לשתף, לאכוף מגבלות אדריכליות, ביעילות, ובאופן יעיל ובאופן עצמאי כדי להפעלה של קוד המקור (Fact) הוא עדיין מקוד פתוח של כלי קוד המקור של קוד המקורבקוד פתוח (קוד פתוח ותועלת משותף, וקוד פתוח) וקוד פתוח (קודמת (קוד פתוח כקוד פתוח) הוא קוד המקורבקוד פתוח וקוד פתוח) וקוד פתוח כקוד פתוח כקודמת (קוד פתוח) וקוד פתוח כקוד פתוח כקוד פתוח (קוד של קוד המקורבקוד פתוח כקוד פתוח לקוד פתוח לקוד פתוח לקוד פתוח כקוד פתוח באופן עצמאי).

Nx מרחיב מסגרות פופולריות כמו Angular, React, ו Node.js עם גנרטורים, execuators, וגרף תלותי חזק. עבור מעצבים ומפתחים כאחד, היכולת ליצור ספריות תכונה ניתן להחלפה היא אחד המאפיינים המשפיעים ביותר. A תכונה encaps a Complete של פונקציונליות - כגון פרופיל משתמש widget, חיפוש עם אוטומטי שלם או שולחן עם מערכת נתונים זו, הולך לתוך תהליך יצירת מערכת עבודה קלה.

מה הם תכונות אמינות?

ספריית תכונה חדשה ב Nx היא תכונה מבוססת:0; מורכבת עצמית מודולFOVAFLT 1 ; זה אוסף רכיבים, סגנונות, לוגיקה ונכסים הדרושים עבור תכונה מסוימת של המשתמש הפונה לספריות (אשר לחשוף פונקציות טהורות או עוזרים) או ספריות רכיב UI (שהתמקדות באלמנטים אטומיים כמו כפתורים ואיקוניות), ספריות תכונה הם בעלי דעה על איך תכונות ומתנהגים לעתים קרובות, כולל קודים, וגרסאות של קודים, וגרסאות של שימוש, או שיטות ניהול, או שיטות.

מאפיינים מרכזיים של ספריות מעוצבות היטב כוללים:

  • (FLT:0) ,Encapsulation: 1FLT:1 כל התלויים הדרושים (כולל מודולים CSS, סמלים SVG, או אפילו מיתרים מקומיים) הם ארוזים בתוך הספרייה.
  • (ב) ⁇ :0) ⁇ : 1FLT 1, הודות להגדרה של הקוד-הפצה של Nx, ניתן לטעון ספריות תכונה על דרישה, שיפור זמני העומס הראשוניים.
  • (ב) לכל ספריה יש קבוצה משלה, שילוב ובדיקות מקצה לקצה המתבודדות.
  • (FLT:0)Versioned: 1 מאחר שיישומים מרובים עשויים להיות תלויים בגרסאות שונות של אותה הספריה, Nx תומך בגרסה סמנטית ובספריות ניתנות לפרסום.

בזרימות עבודה עיצוב, ספריות תכונה לפעול כמו הגשר בין אסימונים עיצוב (צבעים, טיפוגרפיה, ספיגה) ודפים מיושמים לחלוטין. מעצב יכול לציין דפוס - אומר, כרטיס מוצר עם תמונה, כותרת, מחיר, ו"Add to Cart" - וצוות הספרייה בונה אותו פעם.כל יישום אחר כי צריך כי כרטיס המוצר הזה יבוא הספרייה, להבטיח ויזואלית והתנהגותית מורכבות.

הגדרת סביבת העבודה של Nx עבור ליבריות

Prerequisites and Install

לפני שאתה יכול ליצור ספריות תכונה ניתן להחלפה, אתה צריך Nx Workspace.אם אתה חדש ל-Nx, להתחיל על ידי התקנת CLI ברחבי העולם:

(ב) .

צור סביבת עבודה חדשה עם preset שמתאימה לערימת הטכנולוגיה שלך.עבור מערכת עיצוב מבוססת תגובה באמצעות TypeScript, לרוץ:

(ב) 1

אתה יכול גם להתחיל עם סביבת עבודה ריקה ולהוסיף מסגרות מאוחר יותר. Nx תומך monorepos עם מסגרות מרובות, אבל עבור עקביות עיצוב זה לעתים קרובות הטוב ביותר לדבוק מסגרת אחת UI עבור סביבת עבודה. CLI יבקש על CI, מבחנים והעדפות החבילה - אפשרויות אלה תואמים עם הכלי הקיים של הצוות שלך. עבור רוב הפרויקטים ממוקד עיצוב, ברירת מחדל עם Jest, וכו ', וכו ', וכו ', עובד מעולה ו- Vpack.

יצירת ספריית חדשה

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

(ב) 2

הדגלים מציינים:

  • (ב) ויקרא י"ד: (ב) , ויקרא י"ד): "ה' (ב') ,"ב[[1924]], [[1924]], [[1924]]]]
  • (ב) ,0) ,"הבא" (ב)"ה)" (הופנה מהדף "ה')" (בתרגום: "ה') ל'[[1924]], [[1924]]
  • (ב) ויקרא י"א): "ה', כ'', ויקרא י', כ'"כ, כ"כ, כ"כ," (ב"ד).

Nx יוצר את כל ה-Verplateue - FLT:5;5 ;6 עם מטרות בנייה / מבחן, ואת רכיב ראשוני של הספרייה LT 7 קובץ חבית יחקור מחדש רק את ה- API הציבורי; כל דבר פנימי נשאר פרטי.

אם תזרימת העבודה של העיצוב שלך כוללת Angular או Vue, ה- CLI syntax שונה במקצת (למשל, FLT:8), אך המושגים נותרו זהים.

הכנת ספריית תכונות עבור יכולת מקסימלית

ארגון משותף

בתוך התיקיה בספריית הספרייה הנבנית (FLT:9), תמצאו את התכונות של ה- 10 במאי, לארגן רכיבים לתוך תת-קרקעיים על ידי שטח תכונה ולא על ידי סוג.

  • (ב) , (ב) ,ב[[1924]], [[1924]]]]
  • (ב) ויקרא י"ד: "וַיֹּאמֶת עַמְתֶּם" (בראשית י"ד, ט).
  • (FLT:18) - שיחות API או לוגיקה ניהול המדינה.
  • (FLT:19) - סקופ CSS או CSS-in-JS מודולים.
  • (FLT:20) - תמונות של Default, SVGs, גופן.

שמור על שטח פני השטח שנחשפו באמצעות קובץ החביות מינימלי.רק לנסח מחדש את המרכיב העיקרי (למשל, FLT:21) ואולי אובייקט אחד שניתן להגדרה.

עבור כל רכיב, לכתוב קובץ ההרחבה אם אתה משתמש ב- Storybook.Integrating Storybook with Nx הוא אוטומטי כאשר אתה יוצר את סביבת העבודה, והוא מספק מגרש משחקים חי עבור מעצבים כדי לסקור רכיבים מבלי לסובב את היישום המלא.

סגנונות משותפים ונושאים

ספריית תכונה ניתנת להחלפה לא צריכה להיות צבעים קוד קשיח או ערכי ספאם. במקום זאת, להגדיר אסימוני עיצוב באמצעות תכונות מותאמות אישית CSS או אובייקט נושא שניתן יהיה overridden ברמת היישום.לדוגמה, הספריה עשויה לצרוך משתנה FLT:23 משורש האפליקציה. Nx Workspaces לעתים קרובות יש ספריית נפרדותFLT:24 כי הן את הספריה והן יישומים יכול להבטיח ייבוא זה יכול להבטיח שינוי צבע אחד בכל אחד העדכונים העיקריים בכל פרויקט.

אם אתה מעדיף מסגרת CSS ראשונה של תועלת כמו Tailwind, Nx יכול להיות מוגדר לשתף את תצורת Tailwind על פני ספריות. ליצור בסיס FLT:25 שורש סביבת העבודה, וכל ספריה מרחיבה אותו.זה נמנע תצורה כפולה, בעוד עדיין מאפשר מעברים ספציפיים לספרייה עבור רכיבים מורכבים.

ניהול נכסים

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

עבור SVGs, לשקול שימוש רכיבי תגובה inline (באמצעות FLT:27) כדי למנוע בקשות HTTP נוספות. תצורת הבנייה של Nx תומכת זה מחוץ לקופסה עבור ספריות תגובה.

פיתוח וניהול של Libraries

שימוש ב-Nx תלות בגרף

אחת התכונות החזקות ביותר של Nx היא גרף התלות, אשר מדמיין כיצד ספריות ויישומים מתייחסים זה לזה.לאחר יצירת מספר ספריות תכונה, לרוץ FLT:28 כדי לראות את התרבמה.זה עוזר להימנע תלות מעגלית ומבטיח שהאדריכלות שלך נשארת שכבה (למשל, יישומים תלויים בתכונה, אשר תלויה בספריות UI, תלויות בעיצוב אסימונים).

[ה], [ה],], [ה], [ה],] [ה], [ה],] [ה]], [ה],] [ה],] ב[[1924]], ניתן להגדיר תגים כמו ספרת תכונות, לא ניתן לייבא ספריה תכונה אחרת ישירות – רק באמצעות שכבת UI משותפת).

גרסה ופרסום

כאשר ספריית המאפיין שלך יציבה מספיק כדי להיות נצרך על ידי קבוצות מרובות, גרסה זו באמצעות גירסאות FLT:0Semantic VersioningFLT:1 .Nx עובד יד ביד עם כלים כמו FLT:33 או FLT 34 כדי לסווג גרסאות ושינויים.

(ב) .

הפלט יהיה ב-FLT:37 עם AF:38 מוכן לפרסום npm.You יכול לדחוף למרשם פנימי (כמו Verdaccio) או למרשם הציבורי של npm. יישומים מחוץ למונופרופו יכולים להתקין את הספריה כתלויה רגילה, אם כי עבור ביצועים מקסימליים לשמור הכל בתוך אותו סביבת עבודה.

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

אינטגרטיבית Libraries לתוך יישומים

לאחר שספריית התכונה נוצרה ומאוכלסת עם רכיבים, שילובה לתוך יישום הוא עניין של הוספתה כתלויה ב-FLT:39 וייבוא המודול.

{
 "compilerOptions": {
 "paths": {
 "@myworkspace/shared/feature-library": ["libs/shared/feature-library/src/index.ts"]
 }
 }
}

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

(ב) .

Pass דרשה אביזרים (כמו נתוני משתמשים, שיחות) ובאופן אופציונלי לעקוף את הנושא באמצעות ההקשר.אם הספריה כוללת מודולים חד-פעמיים, השתמש ב-FLT:43 או Angular routing לטעון אותם על הביקוש.קוד Nx פיצול יצירות באופן אוטומטי כאשר הספרייה בנויה עם פורמט מודול הנכון (ES).

בדיקה של האינטגרציה היא קריטית. Run (FLT:44) כדי להבטיח את מרכיבי הספרייה להפוך נכון בתוך האפליקציה.עבור בדיקות קצה-לקצה, להשתמש ב- Cypress או Playwright; שילוב של Nx עם FLT:45:45:45 מאפשר לדגום בדיקות רכיב המאמת את התנהגות הספרייה בסביבה ריאלית.

שיטות טובות ביותר לעיצוב ליברה ניתנת לחזרה

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

  • (FLT:0)Define חוזה ברור: FLT:1 כל ספריה צריכה לייצא ממשק API ציבורי מוגבל (שותפים ונוסים מרכזיים) לשמור על מודולים פנימיים פרטיים.
  • (ב) ,0) הרכב על הירושה: 1FLT:1 Rely on props and חריצים כדי לאפשר לצרכנים להתאים אישית התנהגות, ולא לכפות מבנה נוקשה.
  • (FLT:0Write תיעוד נרחב: 1) השתמש בסיפורי סיפור, הערות הקלדדוק, ו-ReadME. Designers ומפתחים צריך להבין אביזרים, נושאים, ודוגמאות לשימוש במהירות.
  • (FLT:0)Version העיצובים שלך: FLT:1 לשמור על שינוי עבור שינויים עיצוב (עדכוני צבע, מינוף שינויים) כך צוותי יישומים יכולים לתכנן הגירה.
  • (FLT:0) בדיקות רגרסיה חזותית: ההרחבה 1 (ראה: LT:1) כלים כמו Chromatic או Percy המשולב עם Nx יכולים לתפוס שינויים בסגנון ללא שינוי כאשר ספרייה מעודכנת.
  • (FLT:0) ,Provide Fallbacks ו- טעינה קובע: ההרחבה 1 (ספרייה תכונה צריכה לכלול מסכי שלד או גבולות שגיאה כך יישומים לא צריכים ליצור אותם מאפס.
  • (ב) ,0) שמור על זה קל משקל: 1FLT להימנע מליבוע ספריות גדולות (כמו לוברדש) אם אתה רק צריך כמה פונקציות. עץ-שטיפה עוזר, אבל גודל החבילה עדיין משפיע על פעמים העומס.

יתרונות ואפקטים אמיתיים

אימוץ ספריות תכונה ניתנות להחלפה בתוך מונורופו מניבה הטבות מיידיות וארוכות טווח לצוותי עיצוב:

  • (FLT:0) ,Accelerated Prototyping:03: מעצבי ההרחבה יכולים לבקש ספריית תכונה, ובמסגרת אנתרופולוגיה הספרייה זמינה לכל הפרויקטים החדשים.
  • (FLT:0) חווית משתמש עקבית: FLT:1ir מאז כל יישום צורב אותו מרכיב, משתמשים רואים התנהגות זהה וסטיילינג על פני מוצרים.זה חשוב במיוחד עבור ארגונים עם פורטלים מרובים של לקוחות.
  • (FLT:0) הלוואה טכנית:FLT:1Build Fixes מוחל במקום אחד.כאשר באג מתגלה בעורך הפרופיל, שומר הספרייה מצלם אותו, וכל האפליקציות הצורכיות תופסות את התיקון לאחר מצגת מכהונה.
  • (FLT:0) שיתוף פעולה טוב יותר:03:1) המבנה מונורופו מעודד מעצבים לבחון ישירות את יישום הרכיב (באמצעות Storybook) ולספק משוב לפני שהספריה משוחררת.
  • (FLT:0)Faster onboarding:FLT:1 חברי צוות חדשים יכולים לבדוק ספריות תכונה קיימות כדי להבין כיצד מערכת העיצוב עובדת, ולא לצוד באמצעות עשרות תיקיות יישומים.

חברות כמו FLT:0 , 000 מפעלים באמצעות NxFIRLT 1 (הדיווחו על צמצום זמן הפיתוח של תכונה עד 30-50% לאחר שהתמקדו בדפוסים משותפים בספריות תכונה.ההשקעה הראשונית בהרס המנופרופו ויצירת הספרות הראשונות משלמת במהירות ככל שמספר הפרויקטים גדל.

מסקנה

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

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

לקריאה נוספת, לחקור את התיעוד של ה-FLT:0 (React Document on the StructureveFLT) ו-(המדריך הרשמי של ה-FLT:2Nx) לסוגי ספריה 3.