reactjs

24sharon

New member
reactjs


לקוח שלי טוען שכדאי להשתמש בספרייה reactjs

והיא עדיפה על אנגולר

מישהו מכיר את הספרייה ויכול לומר מה "יש בה" למה היא טובה ולאיזה פרוייקטים היא מתאימה.

תודה
 

arielRuuubi

New member
זה כמו חסידויות

כל חסיד אומר שהרבי שלו יותר טוב
&nbsp
הייתי ממליץ לך ללכת על מה שאת מכירה
 

MoAtlow

New member
בקצרה

React עם עקומת למידה הרבה פחות חדה מאנגולר
קל מאוד לעשות לאנגולר ABUSE ככה שאותה אפליקצה שכתובה גם באנגולר וגם בריאקט תהיה הרבה יותר יעילה בריאקט.
&nbsp
בגדול ההבדל העיקרי, למי שמכיר אנגולר, הוא שמה שקורה באנגולר בdigest loop, קורה בreact באמצעות diffing של virtual dom.
אבל צורת העבודה שונה לגמרי והחשיבה גם שונה לחלוטין.
&nbsp
 

24sharon

New member
אני מכירה אנגולר

אבל לא יודעת האמת איך הדברים עובדים

&nbsp
יש אפשרות שתסביר קצת ובקצרה מה כוונת המשורר ב בdigest loop,
&nbsp
וכן ABUSE
&nbsp
 

Royi Namir

New member
DIGESTLOOP

את משנה שדה INPUT
אני (אנגולר)מעדכן מודל
את הגדרת WATCH כלשהו שעושה משהו
אבל יכול להיות שהוא מעדכן מודל אחר ולכן צריך לבדוק מהתחלה הכל בשביל לראות שהכל "התיישב ונח במקומו ללא עוד שינויים"
&nbsp
לתהליך שפירטתי לעיל קוראים DIGEST LOOP
וזה הדרך של אנגולר לעקוב אחרי שינויים ולעדכן את המודל / VIEW.
&nbsp
 

MoAtlow

New member
קצת יותר מורכב

כידוע באנגולר יש עץ של scopes, שהם סוג של view model.
כל scope כזה מחזיק מערך של watches (לדוגמא חיבור של ng-bind לlabel דוחף למערך הזה watch על הערך שאמור להיות מודפס בlabel)
&nbsp
ברגע שמופעל digest loop (למשל ע"י שינוי של ערך של input), אנגולר עובר על כל הwatches בscope שעליו הופעל הdigest loop (ברוב המקרים זה יהיה הrootScope), ואז ממשיך ועושה digest loop לכל הscopes שהם ילדים שלו.
&nbsp
כתוצאה מתהליך כזה הרבה דברים יכולים להשתנות (כי לכל watch יש callback שעשוי לשנות דברים בscope), אז התהליך הזה קורה שוב ושוב עד שמגיעים למצב שאין watch שדורש קריאה לcallback שלו (כי הערך מהאיטריצה הקודמת ומהנוכחית זהים) - עם מקסימום של עד 10 פעמים חזרה על התהליך הזה. (מי שראה פעם שגיאה כזאת "10 $digest() iterations reached. Aborting!" זה בגלל שחרג מהמקסימום)
&nbsp
מכאן אפשר גם להבין מה הabuse שאפשר לעשות באנגולר - החל משינוי ערכים שיש עליהם watch בלי צורך ממשי, וכלה בהפעלת digest loop ללא צורך, ועוד ועוד.
 

24sharon

New member
עודם הם מדברים

הנה זה הגיע גם אלי...

אם כי האפליקציה עובדת ללא בעיות, אבל עדיין אם יש רעיון לתיקון זה יעזור

בברור הסיבה זו פיסת הקוד הזו.

קוד:
        $rootScope.$on("$stateChangeStart", function (event, toState, toParams, fromState, fromParams) {

            var log_route = $cookies.get("hash_route");
            if(log_route && log_route.length){

                var date = new Date();
                date.setTime(date.getTime()+(-2*24*60*60*1000));
                var expires = "; expires="+date.toGMTString();
                document.cookie = "hash_route" + "=" + undefined + "; " + expires+"; path=/";
                //console.log(log_route);
                var url = $location.absUrl().split('#')[0]  + "#"+ log_route;
                $window.location.href=url;
                // $location.path(log_route);
                //event.preventDefault();
                return null;


            }

        });


 

24sharon

New member
אוקיי הסתדר

$location.url(log_route);
&nbsp
לא ידעתי שהיה קיים.
&nbsp
תודה
 

Royi Namir

New member
כל שינוי STATE , את שמה COOKIE מחדש עם יומיים אחורה?

למה זה משמש(סקרן) ?
 

24sharon

New member
מה פתאום, אוי ואבוי אם זה היה כך

המדובר על טופס לוגין (אפליקצייה של RAILS) ואם רוצים לבצע לוגין המערכת מעבירה לדף הראשי ולא מעבירה את הנתונים של של הHASH, כך שאי אפשר להפנות לדף של אנגולר.
&nbsp
מה שעשיתי זה בדף הלוגין אני שומרת את הHASH בעוגיה, (שזה הכתובת של דף הלוגין)
&nbsp
ובאנגולר אני בודקת רק במידה וקיימת העוגיה שאומרת שנכנסו דרך הלוגין ויש HASH
אז אני מוחקת את העוגיה ומעבירה לדף.
&nbsp
כאן מפורטת הבעיה.
http://stackoverflow.com/questions/23485010/rails-angular-redirection-after-sign-in-up
הפתרון לא כמו זה שמוצע אלא חלקו (השמירה בלוגין אותו הדבר אך הרידיירקט במקום בצד שרת כמו שמוצע הועבר לשינוי הSTATE)
&nbsp
יש מבין?
דעתך?
 
למעלה