האם כדאי וניל ג'אווה סקריפט ללמוד? בהחלט.

מטרת הפוסט הזה היא להדגיש את החשיבות של יסודות JavaScript עבור כל מפתח חזיתי. אני אגיד לך מדוע כדאי לך להכיר היטב JavaScript טהור (וניל). פירוש הדבר JavaScript ללא מסגרות או ספריות נוספות.

אזכיר גם כמה משאבים שעזרו לי ללמוד את היסודות האלה.

סיבה נוספת העומדת מאחורי פוסט זה היא שמפתחי אתרים רבים שאפתנים נוטים לדלג על למידת מושגי ליבה של JavaScript כגון הרמה, סגירה או אבות טיפוס. הם עוברים היישר למסגרות החמות ביותר כמו React או Angular 2. אני אראה לך מדוע גישה זו אינה הנוחה ביותר.

כולם רוצים מפתחים עם ידע של $ {addTheHotFramework} ...

אז האם יש סיבה שתטרח ללמוד JavaScript וניל?

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

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

נראה הרבה יותר קל לעשות קורס קורס על יסודות JavaScript, לקפוץ למסגרת מהודרת, להכין רשימת ToDo (לתת לגור למות), להעלות אותה ל- GitHub, ואז להתחיל לחפש עבודה.

... אבל השקעה של זמן ב- JavaScript וניל תשתלם בטווח הארוך

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

אך המערכת האקולוגית של JavaScript מתפתחת די מהר. נוצרות מסגרות חדשות. פונקציות חדשות מתווספות לקיימות. והכי חשוב, רבים מהמסגרות החמות ביותר של ימינו יוחלפו בסופו של דבר, כמו Angular 1.

בנסיבות כאלה, האם אתה עדיין חושב שידע על מסגרת JavaScript מסוימת מספיק עבור מפתח אתרים?

או שמא עדיף להבין כיצד השפה עליה מבוססות כל הספריות והמסגרות הללו?

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

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

כל מסגרות ה- JavaScript והספריות מבוססות בהכרח על ליבת הווניל שלה.

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

ניסיון אישי

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

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

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

כרגע אני עובד עם ערימה של React-Redux. למרות זאת, לעתים קרובות אני נתקל בבעיה שאוכל לפתור בזכות הידע שלי בנושא JavaScript וניל. באגים אלה יהיו הרבה יותר מאתגרים לפתור רק עם הידע של מסגרת מסוימת.

Learning React או Angular 2 לא ילמד אותך שאובייקטים מועברים על ידי הפניה או איך סגירות עובדות. הניסיון להבין מושגים אלה תחת ההפשטות שמביאה המסגרת הוא הרבה יותר קשה. זה הופך את מושגי JavaScript פשוטים לקשים יותר להבנה.

יתר על כן, אם אתה עובד עם JSX (React, Vue, Inferno) או TypeScript (Angular 2), יש לך שכבה נוספת של הפשטה על גבי זה.

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

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

תן לי משהו שאוכל ללמוד ממנו

השאלה שאתה עשוי לשאול כעת היא "מה הם כמה משאבים טובים שיכולים לעזור לי לרכוש ידע הגון של JavaScript וניל?".

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

אבל יש עדיין כמה טובים ...

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

משאב נהדר נוסף הוא סדרת הספרים You Don't Know JavaScript (YDKJS) מאת קייל סימפסון. קייל באמת יודע ללמד. ההסברים שלו על מושגי JavaScript מתקדמים הם ידידותיים למתחילים והוא מכסה אותם לעומק. עצם כותרות הספרים יתנו לך רמז לגבי מה שאתה הולך ללמוד. "Up & Going", "Scope & Closures", "this & Object Prototypes", "Types & Grammar", "Async and Performance", "ES6 & Beyond". יש גם ספר 7 חדש על תכנות פונקציונלי ב- JavaScript.

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

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

קורס וידאו נוסף שלדעתי שימושי הוא Javascript: Understanding the Weird Parties מאת אנתוני אליסה. זה מסביר מה קורה מתחת למכסה המנוע של JavaScript בצורה נגישה. הוא מכסה מושגים מתקדמים כמו ירושה פרוטוטיפית, תכנות פונקציונלי ושרשראות היקף.

למד JavaScript וניל, עכשיו

אם תשקיע את זמנך היקר בלימוד JavaScript וניל, לא תצטער על כך. לא זו בלבד שהיא מכילה את המילה וניל , אלא תשפיע לטובה על כישורי התכנות.

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

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

אתה צריך לזכור רק דבר אחד מהפוסט הזה:

זכור תמיד שידע על וניל JavaScript יעזור לך להיות מפתח טוב בהרבה. פרק זמן.

אם אהבת את המאמר הזה, תן לו כמה מחיאות כפיים. אודה מאוד.

פוסט זה פורסם במקור בבלוג שלי.

נתראה בטוויטר?

דייויד קופל (@coding_lawyer) | טוויטר

הציוצים האחרונים של דייויד קופל (@coding_lawyer). מפתח חזית @ataccama | עורך דין לשעבר | בלוגר ... twitter.com