מה ההבדל העיקרי בין ReactNative ל- NativeScript?


תשובה 1:
הצהרת אחריות: לתשובה זו אין מטרה להוכיח שאחת טובה יותר מהשנייה, אני לא רוצה לבקר את העבודות המדהימות של שתי הקבוצות, אלא לפרט את ההבדלים בין NativeScript ל- React Native.

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

עכשיו לשאלתך. יש המון הבדלים - טכניים וגם לא טכניים.

בצד הלא טכני

NativeScript מועברת על ידי Telerik (חברת Progress) - חברת מפתחים ידועה מאוד ומסגרת NativeScript היא חלק מעסקי הליבה שלהם. ReactNative בנוי מפייסבוק, שכידוע כולנו אינה חברת כלים למפתחים. מדוע זה חשוב? כשאתה סומך על Telerik יש לך אפשרות לקבל תמיכה (מפתח או ייצור) שהיא דרישה לרוב חנויות התוכנה הרציניות שם בחוץ. כמו כן, אם אתה עובד על החברות אתה מצפה לערימה מסוימת של כלים, שירותים ופתרונות. הצפנת קוד ואבטחה למשל. אתה מקבל את כל זה באמצעות Telerik / NativeScript, אבל זה לא בראש סדר העדיפויות של פייסבוק / React.

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

הדבר האחרון שאינו טכני הוא גודל הקהילה. שתי המסגרות הן קוד פתוח וחינמי. ReactNative הוא הרחבה של React.js כך שתוכלו להניח שכל קהילת react.js תמר על זה. בצד השני NativeScript מגובה על ידי גוגל וממקד לקהילה AngularJS. שתי הקהילות גדולות מאוד (מיליוני מפתחים) ושתי המסגרות הללו בידיים טובות. זה ממלא גם תפקיד מרכזי בהערכת הסיכון.

עכשיו בצד הטכני

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

אדריכלות ריאקטיבית

אם כבר מדברים על ארכיטקטורה - ReactNative כפי שציינתי לעיל הוא הרחבה ל- React.JS כך שהם פועלים לפי אותם עקרונות לעדכון ממשק המשתמש כמו ב- ReactJS. למשל באמצעות DOM וירטואלי. בקיצור מאוד - הם מחשבים את השינויים שצריכים לקרות לממשק המשתמש בחוט _background_ ומיישמים את אותם שינויים בקבוצות. העובדה שהם עושים זאת על חוט רקע היא בעלת היתרונות והחסרונות. מהצד החיובי הוא כמובן שלא נוגעים בחוט ממשק המשתמש (מה שמוביל לממשק משתמש מגיב מאוד), אך בצד השלילי זה מגביל את יכולתם לתקשר _fast_ עם מערכת ההפעלה המקורית הבסיסית. משמעות הדבר היא שאם יש לך רכיב שמבצע הרבה שיחות למערכת ההפעלה המקורית, האפליקציה תהיה איטית מאוד, ממש איטית. הדבר הטוב הוא שזה לא נחוץ לרוב המקרים.

הדבר הרע הוא שאם אתה צריך להשתמש ברכיבים מקוריים מותאמים אישית או ממשקי API מקוריים, עליך לדעת ObjC עבור iOS ו- Java for Android כדי לגשת למרכיבים ו APIs אלה. זה יכול להוות פורץ עסקה עבור מפתחי JS רבים. אינך צריך להכיר את ObjC / Java כדי להשיג זאת ב- NativeScript, קרא בהמשך.

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

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

אני ממליץ לקרוא את המאמר כאן.

ארכיטקטורת NativeScript

מפתחי צוות הליבה של NativeScript נוקטים כאן גישה קלאסית יותר. הם משתמשים בחוט ממשק המשתמש כדי להפעיל את ממשק המשתמש שהוא אותו דגם המשמש ברוב המסגרות הפופולריות - אנדרואיד, חלונות וכו '. זה מאפשר דרך הרבה יותר פשוטה לפתח אפליקציות - תמיד יש לך כמפתח מפתח גישה לממשק המשתמש. עץ היישום שלך. ראוי לציין שאם אתה צריך לבצע משהו בחוט רקע זה אפשרי גם כן. חלק ממרכיבי הליבה היותר דוגמת http, image, מסד הנתונים של sql lite מבצעים למעשה הרבה מהפעולות שלהם על חוט רקע כדי להפחית את העומס על חוט ממשק המשתמש. לגישה זו יש יתרון אדיר בכך שהיא מאפשרת לך לגשת ל- _any_ native API ישירות מ- JavaScript.

אנא קרא מאמר זה שמסביר לעומק את האדריכלות של NativeScript - http: //developer.telerik.com/fea ....

בעיקרון אתה ניגש לכל ממשקי ה- API המקומיים שלא נגעו בהם יש יתרונות רבים במיוחד כאשר אתה צריך לתמוך באפליקציה בטווח הרחוק. אין עטיפות עבור ממשקי ה- API המקומיים וזה הופך את החוויה כולה לפשוטה יותר ופחות מועדת לטעויות. אתה יכול ממש לכתוב דברים כמו - com.android.button.init (). זה גם יתרון של שימוש חוזר בכל הערימה של ספריות ילידי צד שלישי ישירות ללא צורך בשינויים. זה מאפשר צריכה קלה יותר ויצירת תוספים. נכון לעכשיו קיימים יותר מ- 220 הרחבות מהקהילה. היתרון הנוסף בגישה זו הוא שהאנימציות ב- NativeScript שנוצרות באמצעות CSS ו- JavaScript יפעלו בצורה חלקה הרבה יותר מכיוון שהן מבוצעות על חוט ממשק המשתמש.

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

הארכיטקטורה שלעיל מאפשרת ל- NativeScript להציע תמיכה ל -0 יום למהדורות מערכת הפעלה חדשות. נכון לעכשיו ל- NativeScript יש תמיכה במהדורת Android N שעדיין נמצאת בשלב אלפא.

מנועי JS המשמשים להפעלת קוד האפליקציה

ראוי להזכיר ששתי המסגרות ממנפות מנועי JavaScript קיימים כדי לבצע את קוד JavaScript בזמן ריצה. ReactNative משתמש ב- JavaScriptCore ב- iOS ובאנדרואיד. NativeScript משתמש ב- V8 ב- Android וב- JavaScriptCore ב- iOS. רק לאחרונה מיקרוסופט הוסיפה תמיכה ב- Windows Universal ב- ReactNative ומשתמשת במנוע צ'אקרה JS משלהם. אני לא בטוח איך זה יתמזג עם שאר הקוד ReactNative שכן (אני חושד) מרמז על שינויים רבים בכלי העבודה - שגיאות שגיאות שונות, פרופיל, אם נקראו כמה.

שימוש בתקנים

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

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

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

הצהרת ממשק המשתמש

בשתי המסגרות אתה יכול לקבל תחביר הצהרתי לתיאור ממשק המשתמש של האפליקציה. ReactNative בשימוש בסימן שנמצא ב- React לצורך רישום הצהרת ממשק המשתמש בקובץ יחיד. NativeScript שוב משתמש בגישה קלאסית יותר בכך שהוא מאפשר לשניכם לבנות את ממשק המשתמש באמצעות קוד או באמצעות קובץ נפרד ליישום ממשק המשתמש המאפשר לכם להשתמש בתבניות MVC / MVVM הקלאסיות. לא הייתי אומר מי עדיף - זה עניין של טעם אישי. מבחינתי ההפרדה בין ממשק המשתמש לקוד טובה יותר עם MVVM, אבל זה מה שאני רגיל לכתוב אז אני מוטה.

אם אתה יודע ש- CSS ב- NativeScript יהיה לך הרבה יותר קל לעצב את היישומים באמצעות גיליונות סגנונות חיצוניים או סטיילינג מוטבע. ReactNative משתמש בסימן האישי שלהם לסטיילינג המבוסס על הצהרות JSON. שוב דומה ל- CSS, אך שונה.

תמיכת שפה

ReactNative וגם NativeScript משתמשים ב- JavaScript מודרני. שניהם תומכים בבבל על מנת להשתמש ב- JS העדכנית והגדולה ביותר.

ככל ש- NativeScript בוגר יותר, יש כאן גם אפשרויות נוספות. ל- NativeScript אינטגרציה הדוקה (כלים, IDE וכו ') עם TypeScript. זה נותן שילוב נוסף עם Angular 2 ומשפר את הפרודוקטיביות והופך את התמיכה לטווח הארוך של אפליקציות אלה להרבה יותר קלה.

חווית מפתחים, ניפוי באגים

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

מבחינת חוויית המפתחים ו- IDEs מכיוון שכל ערימת האפליקציות היא JavaScript, תוכלו להשתמש בכל IDE שזמין. פייסבוק עובדת על IDE משלהם שעדיין לא משוחרר בזמן כתיבת שורות אלה, NativeScript מקדמת את Visual Studio Code כעורך המומלץ. למיקרוסופט יש יישום הן ל- NativeScript והן ל- ReactNative עבור מאגרי ה- VS Code שלהם.

בדיקה

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

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

ראה כיצד לכתוב בדיקות ב- NativeScript. ב- ReactNative.

ביצועים

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

לשתי המסגרות יש ביצועים יוצאי דופן ב- iOS - הן מבחינת זמן הטעינה (פחות משנייה לשניהם) והן מבחינת FPS (60 fps ברוב המקרים) בזמן ריצה.

באנדרואיד הביצועים עדיין טובים אך בגלל הארכיטקטורה הבסיסית של מערכת ההפעלה, הביצועים הכוללים אינם טובים כמו ב- iOS. זמן הטעינה והתנהגות זמן הריצה אינם מלוטשים כמו ב- iOS. אבל זה תקף גם לאפליקציות המקוריות הטהורות, אז אל תהיה בררן מדי ב- NativeScript ו- ReactNative. ל- ReactNative זמן טעינה מעט מהיר יותר (מהיר יותר) באנדרואיד לעומת NativeScript (1.4s לעומת 2.2s). צוות NativeScript מתמודד עם זה עם הצגת תמונות של ערימת זיכרון, אך תכונה זו עדיין ניסיונית.

אפליקציות אמיתיות

עבור כמה אפליקציות אמיתיות אתה יכול לראות בצע את הקישורים הבאים עבור אפליקציית כיור המטבח של NativeScript:

באנדרואיד -> https: //play.google.com/store/ap ...

ב- iOS -> https: //itunes.apple.com/bg/app / ...

או שתוכלו לבדוק את היישומים מגלריית הראווה של NativeScript.

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

בסגירה

עבורי באופן אישי, קבלת ההחלטות העיקרית מבוססת על הכישורים הקיימים שלך - אם יש לך כישורים זוויתיים, פשוט השתמש ב- NativeScript, אם אתה מפתח React תמצא את ReactNative מוכר יותר וקל לשימוש. אם אתה מיישם תוכנה מסחרית, שקול את התמיכה והשירותים הזמינים ב- NativeScript ואת מערך המיומנויות Angular. אם אתה זקוק ל UI NativeScript מותאם אישית יותר מותאם אישית יתאים לך יותר מכיוון שאתה לא צריך לדעת את ObjC או Java כדי להשתמש בהם. בסופו של יום שתי המסגרות הן מודרניות ומתקיימות בהבטחתן וזה יוביל לאפליקציות מהשורה הראשונה.

קידוד שמח, ואני מקווה שהאמור לעיל עוזר :). אנא אל תהסס לבקש ממני פרטים נוספים. בהחלט יש הרבה דברים שלא מכוסים כאן, אבל אני יכול ללכת רחוק יותר ולהסביר את הכל למעלה בפרטים יותר עמוקים יותר. אתה יכול להגיע אלי בטוויטר - @ValioStoychev.

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


תשובה 2:

ההבדל בין React Native ל- NativeScript

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

קרא גם שאלות ראיון שפת אם

NativeScript

תגיב שפת אם

קהילה מגיבה, מועילה.

קהילה מגיבה, מועילה.

אין שימוש בייצור 'אמיתי'

שימוש מוכח בייצור.

מתחזקת על ידי חברה קטנה.

מתחזקת על ידי חברת ענק.

פחות פופולרי

פופולרי.

יליד ותיק יותר

חדש מ- NativeScript


תשובה 3:

ההבדל בין React Native ל- NativeScript

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

קרא גם שאלות ראיון שפת אם

NativeScript

תגיב שפת אם

קהילה מגיבה, מועילה.

קהילה מגיבה, מועילה.

אין שימוש בייצור 'אמיתי'

שימוש מוכח בייצור.

מתחזקת על ידי חברה קטנה.

מתחזקת על ידי חברת ענק.

פחות פופולרי

פופולרי.

יליד ותיק יותר

חדש מ- NativeScript


תשובה 4:

ההבדל בין React Native ל- NativeScript

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

קרא גם שאלות ראיון שפת אם

NativeScript

תגיב שפת אם

קהילה מגיבה, מועילה.

קהילה מגיבה, מועילה.

אין שימוש בייצור 'אמיתי'

שימוש מוכח בייצור.

מתחזקת על ידי חברה קטנה.

מתחזקת על ידי חברת ענק.

פחות פופולרי

פופולרי.

יליד ותיק יותר

חדש מ- NativeScript


תשובה 5:

ההבדל בין React Native ל- NativeScript

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

קרא גם שאלות ראיון שפת אם

NativeScript

תגיב שפת אם

קהילה מגיבה, מועילה.

קהילה מגיבה, מועילה.

אין שימוש בייצור 'אמיתי'

שימוש מוכח בייצור.

מתחזקת על ידי חברה קטנה.

מתחזקת על ידי חברת ענק.

פחות פופולרי

פופולרי.

יליד ותיק יותר

חדש מ- NativeScript


תשובה 6:

ההבדל בין React Native ל- NativeScript

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

קרא גם שאלות ראיון שפת אם

NativeScript

תגיב שפת אם

קהילה מגיבה, מועילה.

קהילה מגיבה, מועילה.

אין שימוש בייצור 'אמיתי'

שימוש מוכח בייצור.

מתחזקת על ידי חברה קטנה.

מתחזקת על ידי חברת ענק.

פחות פופולרי

פופולרי.

יליד ותיק יותר

חדש מ- NativeScript


תשובה 7:

ההבדל בין React Native ל- NativeScript

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

קרא גם שאלות ראיון שפת אם

NativeScript

תגיב שפת אם

קהילה מגיבה, מועילה.

קהילה מגיבה, מועילה.

אין שימוש בייצור 'אמיתי'

שימוש מוכח בייצור.

מתחזקת על ידי חברה קטנה.

מתחזקת על ידי חברת ענק.

פחות פופולרי

פופולרי.

יליד ותיק יותר

חדש מ- NativeScript


תשובה 8:

ההבדל בין React Native ל- NativeScript

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

קרא גם שאלות ראיון שפת אם

NativeScript

תגיב שפת אם

קהילה מגיבה, מועילה.

קהילה מגיבה, מועילה.

אין שימוש בייצור 'אמיתי'

שימוש מוכח בייצור.

מתחזקת על ידי חברה קטנה.

מתחזקת על ידי חברת ענק.

פחות פופולרי

פופולרי.

יליד ותיק יותר

חדש מ- NativeScript