javascript - ביצועי TypeScript (asm.js, קומפיילר Closure) ועומס
אני בודק אפשרות להשתמש ב-TypeScript בשילוב עם MVC בצד הלקוח (סביר להניח Backbone.js + Marionette.js או Ember.js) לפרויקטים עתידיים ולכן יש לי כמה שאלות הקשורות לביצועים ואופטימיזציה :
איך הפלט של
TypeScriptמשווה לביצועי JavaScript מקורי?מכיוון ש-
asm.jsהוא תת-קבוצה של JavaScript, האם יהיה אפשרי להמיר קודTypeScriptלקודasm.js? אם כן, האם זה כבר אפשרי?האם זה אפשרי ועדיין שימושי ליצור בניות של פרויקטי AMD שמשתמשים ב-
TypeScriptעםGoogle Closure compiler?כמה עומס נוסף
TypeScriptמוסיף בממוצע, מבחינת גודל הקובץ?כאשר משתמשים בספריות קלות כמו
Backbone.jsבפרויקט קטן לדוגמה. האם זה הגיוני להשתמש ב-TypeScriptמבחינת גודל הקובץ?
אני אוהב את היתרונות הנוספים של TypeScript אבל אני לא רוצה להקריב ביצועים בשביל סגנון קידוד והקלדה.
כל המאמרים/הספרים על שימוש ב-TypeScript בפרויקטים גדולים, במיוחד בנושא ביצועים, אופטימיזציות ובניינים, מאוד מתקבלים בברכה!
תודה מראש!
תשובה #1
הערכנו ובדקנו את TypeScript באופן יסודי בצוות שלנו וצוותים אחרים כבר משתמשים בו, אז הנה הניסיון שלי:
- TypeScript הוא סופר-סט של JavaScript והוא מתרגם בעיקר 1:1 ל-JavaScript ללא פגיעות משמעותיות בביצועים, אז אם אתה יודע איך לכתוב JavaScript יעיל, אתה יודע איך לכתוב TypeScript יעיל. אחד התכונות שלא כל כך יעילות הוא ירושה, שהיא "מוחקות" באמצעות פרוטוטיפים של JavaScript ומייצרת יותר קוד ממה שכותבים בדרך כלל ב-JavaScript. לכן יש להשתמש בירושה בזהירות. אתה יכול להסתכל על ה-JavaScript שנוצר כדי לראות אם המבנים שלך מתורגמים ביעילות מספקת למקרה שלך.
- להרכיב TypeScript ל-asm.js הוא אותו בעיה כמו להרכיב JavaScript ל-asm.js - תצטרך לאמץ את הפיצ'רים ש-asm.js חסר לעומת JavaScript מלא... אם אתה צריך חלקים מסוימים ב-asm.js כנראה שתצטרך לכתוב אותם בעצמך או להרכיב משפה מתאימה יותר (פחות דינמית) על ידי Emscripten ודומיו.
- ל-TypeScript יש תמיכה מסוימת ב-AMD, אבל אני לא יכול לדבר על תמיכה ב-Google Closure... מכיוון שהוא מנסה להשיג דבר דומה בצורה שונה מאוד (סוגים ומטא-מידע בהערות במקום בתחביר חדש), אני לא חושב שהם מאוד תואמים לשימוש במקסימום של שניהם...
- גודל הקובץ לא באמת בעיה, הוא מאוד דומה לגודל הקובץ של JavaScript קריא, אלא אם אתה משתמש בירושה הרבה
- שימוש ב-TypeScript עם Backbone וספריות אחרות יש יתרון אחד בהשוואה ל-JavaScript; לרוב הספריות הפופולריות כבר קיימות קבצי הגדרות טיפוס עבור TypeScript, כך שאתה מקבל השלמת קוד ובדיקת טיפוס כמעט בחינם. הבדל בגודל הקובץ לא באמת מהווה בעיה בהשוואה ל-JavaScript שנכתב היטב.
TypeScript עדיין יחסית צעיר והרבה דברים שרצינו שיהיו לו (JSLint, כיסוי קוד, כלים ל-TDD, BDD, ...) חסרו בזמנו. בנוסף, היו מספר באגים בקומפיילר (תוקנו לאחר מכן), אז לא בחרנו להשתמש בו, אבל אף אחת מהנקודות ברשימה שלך לא נראתה לנו כהחסרה משמעותית...
עדכון: כדי לראות את הפוטנציאל של TypeScript, תוכלו לבדוק את Visual Studio Online "Monaco". מה שהם עשו שם מרשים למדי, ראה התחלת עבודה עם TypeScript עבור הקדמה מהירה