Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: AngularJS + php, a reload(pobieranie danych z bazy)
Forum PHP.pl > Forum > XML, AJAX
szubi95
Hey wszystkim! smile.gif

Od niedawna rozpoczęłam moją przygodę z AngularJS i za jakiś czas planuję zrobić aplikację w postaci e-dziennika, zastępstw, czy też planu lekcji. Obecnie napotkałem na problem, który na dłuższą metę jest dość uciążliwy, a mianowicie - prędkość pobierania danych, a raczej nieustanne pobieranie. Może przedstawię kod:

[JAVASCRIPT] pobierz, plaintext
  1. smallApp.controller('Form', function($scope, $http, dane) {
  2.  
  3. $scope.items = [];
  4. $scope.data = [];
  5.  
  6. $scope.insert = function() {
  7. $http({
  8. method: 'POST',
  9. url: 'file.php',
  10. data: {
  11. imie: $scope.imie,
  12. haslo: $scope.haslo,
  13. email: $scope.email
  14. },
  15. headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
  16. })
  17. .success(function(data) {
  18. if (data.data_array) {
  19. $scope.items = data.data_array;
  20. console.log($scope.items);
  21.  
  22. dane.get()
  23. .success(function(data) {
  24. $scope.data = data.data_array;
  25. });
  26.  
  27. } else {
  28. console.log("Wystapił błąd!");
  29. }
  30. });
  31. };
  32.  
  33. dane.get()
  34. .success(function(data) {
  35. $scope.data = data.data_array;
  36. });
  37.  
  38. });
  39.  
  40. smallApp.factory('dane', function($http){
  41.  
  42. return {
  43. get: function() {
  44. return $http.get('download.php');
  45. }
  46. }
  47. });
[JAVASCRIPT] pobierz, plaintext


Mógłbym użyć cache z wartością true podczas pobierania(zawsze szybciej pobiera..), ale wtedy dane będą pobierane z bufora, a mi zależy na tym, że po dodaniu jakiegoś rekordu do bazy, a kolejno przejściu do podstrony gdzie wyświetlam całą zawartość aktualizacja nastąpi bardzo szybko, bez ponownego "przeładowania". Czytałem trochę o obietnicach oraz $cachFactory, ale nie do końca wiem jak to ugryźć i czy w ogóle o to chodzi. Czy mógłbym prosić o jakieś naprowadzenie, wskazówki?

Z tego co się dowiedziałem to można to zrobić za pomocą web sockets, ale czy nie da się prościej? ^^

PS: Czy uważacie, że warto się uczyć angularjs? Czy ten framework ma według was więcej zalet, czy wad? Co byście polecili do operacji czysto DOM'owych, małych animacji, czy też zmian podstron bez przeładowania(czysty ajax?).

Pozdrawiam szubi
tzm
Daruj sobie chłopie... Jak dla Ciebie jest problemem kilka kilo/mega danych to zmień łącze. Na aplikacji pisanej w angularze gdzieś widziałem zdjęte limity zapytań do pół giga/zapytanie. A sam angular... Spoko. Ale dużo praktyki trzeba żeby coś sensownego z tego wyszło
szubi95
Hmm bez urazy, ale to co napisałeś mija się z tematem. Co ma łącze do tego skoro ja mówię o localhoście to raz, a dwa widziałem aplikacje na angularze, które raz ładują się bardzo szybko i nie ma tam problemów, aby coś dodać po czym przejść na inną podstronę, której zadaniem jest pobranie wszystkich rekordów, a tam zostaje tak jakby tylko zaktualizowany wyłącznie ten jeden rekord, a przynajmniej pobieranie(może za pomocą web sockets właśnie) jest tak zrobione, że tak to właśnie wygląda. Co do tekstu:

Cytat
A sam angular... Spoko. Ale dużo praktyki trzeba żeby coś sensownego z tego wyszło


to trochę mija się z celem. Prosiłem o jakieś argumenty lub kontrargumenty, a nie tekst, który każdy nawet w wieku 10 lat ktoś mógłby napisać...

Jak choćby tu mam przedstawione jego wady(zwłaszcza odnośnie semantyki i mieszania kodu..)

WebKrytyk


Pozdrawiam
tzm
Argumenty za:

1. Systematyka kodu jeśli dobrze czytasz dokumentacje i zaczniesz pisać w takim stylu jaki narzuca po trochu google, oni są mądre chłopy, warto pisać jak oni.
2. Full restful i brak przeładowań strony. Jeśli jest inaczej, robisz to źle. Angular dla mnie to nowoczesna zabawka która całkowicie zmienia rolę php w programowaniu a prawdę mówiąc jak ma się chęci i czas to można bardziej przyszłościowo uczyć się pythona, ruby. Lepiej się finansowo na tym wyjdzie a Angular/Ember doskonale się nadają do całkowitego wydzielenia frontu i operacji na danych. Procesory coraz mocniejsze, to można więcej obliczeń robić po stronie klienta, co rzutuję finalnie na oszczędnościach serwerowych.
3. Można na prawdę wykwintne i wręcz bym ujął zbereźne rzeczy robić z htmlem. Jak to mówią twórcy.. angular to html na sterydach, jest w tym 100% mojego poparcia jako że zajmuję się frontendem na codzień.

Argumenty przeciw:

1. Nie nadaję się na pierwszy komercyjny projekt gdy się uczysz tego frameworka a nie masz dobrych podstaw programowania obiektowego w javascripcie. Zwyczajnie nie jest to proste a kopiowanie metod z dokumentacji przy Twoim, innym stylu pisania może narobić problemów w dalszym rozwoju aplikacji.
2. Jak dojdziesz do tematów interpolacji i wielokrotnej rekurencji to zatęsknisz za jquery czy czystym javascriptem gdzie wszystko jest proste.
3. Angular jest w pewnych momentach gdy się w niego zagłębiasz tak pokręcony że po roku programowania w nim będziesz odmóżdzony.

I nie mów że moje wpisy w tym temacie mijają się z celem bo nie znam tu nikogo kto pisze unijny projekt / cokolwiek rozmiarów tego co ja obecnie w angularze ... wiem co mówię a Ty wspomnisz moje słowa. Szczerze Ci kibicuję jak każdemu kto ciśnie angulara bo go lubię i wyjątkowo nie duża polska społeczność tego frameworka istnieje.

Co do Twojego problemu i poprzedniego posta.. pisałem z telefonu. Święta są, nie chciało mi się.
Patrz.. ja zaciągam z bazy aktualnie ( testowo tyle mam ) 140 postów, w sumie 1500 komentarzy i jakoś bez problemu wszystko chodzi.
Mówisz o localhoście.. spoko, a skąd pobierasz zasoby? Fonty? angular jak nie ma jakiegoś elementu to zwyczajnie dalej nie pójdzie i czeka aż zaciągnie wszystko.
Jeśli nie ciągniesz mega ilości danych - nie robisz społecznościówki gdzie non stop się wszystko zmienia to zasugerowałbym Ci zamiast nawet cache skorzystanie z localstorage. Wtedy nie musisz zaciągać wszystkiego z bazy tylko odpytujesz ajaxem serwer czy są nowe wpisy od daty jakiejś tam i w tym momencie nie masz ciągłego wstrzykiwania danych nowych. Bo jak rozumiem teraz z każdym przejściem strony zaciągasz wszystko tak? I to chcesz wyeliminować? To skoro póki co planujesz zrobić aplikację... to rób to na localstorage jak mówię. Daruj sobie cache bo za różnica czy zaciągniesz N razy wszystko z bazy, czy będziesz miał w cache obiekt jsona który wagowo będzie podobny ? Dajesz do localstorage. Tam możesz megabajty magazynować co do nauki Ci wystarczy a wyeliminujesz problem zaciągania danych do praktycznie 0.

Jeśli coś jest nie jasne, pytaj bez spiny. Wyjaśnię. Szczęśliwego nowego roku gdyby mnie nie było.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.