backbone.js z czym to się je?

backbone.js z czym to się je?
0

Witam wszystkich,
ostatnio odkryłem backbone.js i pisze do was, ponieważ nie jestem przekonany czy dobrze rozumiem działanie tej biblioteki.

  1. Czy tutaj chodzi o tworzenie stron całkowicie w js?
  2. Jak bardzo przyspiesza to działanie strony?
  3. Czy w ten sposób można tworzyć "wielkie serwisy" np.: katalog, forum itp?
  4. Czy pisanie w całości w js nie spowoduje ułatwienie włamywania się na strony?

Pozdrawiam

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:11 dni
2

Źle to rozumiesz (osobiście nigdy nie pracowałem z Backbone, ale z czymś "bardziej", czyli Angularem). To jest wzorzec MVVM (Model-View-ViewModel), który zakłada 3 warstwy:

  • model dostarczający dane (w tym przypadku jest to część strony działająca po stronie serwera)
  • nieaktywny widok, który opisuje jak wyświetlać dane w dość obszerny sposób
  • ViewModel, który zajmuje się spinaniem obu tych rzeczy oraz odpowiednim ich przygotowaniem do wyświetlenia

Dzięki takiemu podziałowi pracy designer nie musi tak ściśle współpracować z front-end developerem, gdyż całe wyświetlanie należy tylko do widoku, który jest dodatkowo nieaktywny. Dodatkowo podmiana backendu jest bezbolesna, gdyż jedyne co jest wymagane by zachować kompatybilność to utrzymać stałe REST API. Nie trzeba przepisywać widoków jak często bywa przy przechodzeniu z języka A do języka B (co często implikuje zmianę języka szablonów). Poza tym praktycznie całe FE możesz wtedy trzymać w CDNie i odciążyć serwer, który w takim wypadku będzie mógł obsłużyć większą liczbę użytkowników przy tych samych parametrach pracy.

Co do bezpieczeństwa, to jeśli masz już dobrze zaprojektowane API aplikacji, to nie ma najmniejszego problemu z bezpieczeństwem. Ty nie zrzucasz całej odpowiedzialności na JSa tylko dajesz tam tą część, którą musiał by normalnie wykonać serwer, czyli np. wstępną walidację formularza i wyświetlenie użytkownikowi informacji, że formularz jest niepoprawny nawet bez przeładowania strony. Oczywiście back-end powinien też sprawdzić poprawność danych, bo wprawny napastnik będzie potrafił zmienić dane zapytania zmienić jeszcze przed ich wysłaniem.

Oczywiście, że można w ten sposób tworzyć duże serwisy. Nie wiem z jakiego frameworka (o ile nie autorskiego) korzystają takie aplikacje internetowe (a przynajmniej tak mi się zdaje):

  • GMail
  • Google
  • Google+
  • Twitter
  • Facebook
  • GitHub

Oczywiście przykłady możesz też znaleźć na stronach danych frameworków:

Osobiście pracowałem tylko z Angularem, pozostałych nie znam, ale może kiedyś jak będę miał okazję.


0

Dziękuję za wyjaśnienie. Jedyne czego nie rozumiem to CDN?

Wibowit
content delivery network
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:11 dni
0

Tylko pamiętaj, że takie podejście ma też wady. Jeśli cała treść będzie wyświetlana przy pomocy JS to crawler nie będzie miał możliwości zaindeksowania treści twojej witryny przez co będzie słabo z pozycjonowaniem takiej strony. Dlatego to podejście nadaje się do aplikacji internetowych a nie witryn.


edytowany 1x, ostatnio: hauleth
Zobacz pozostałe 3 komentarze
dzek69
js wykonuje na pewno, bo mi ideksował głupoty, które były przez document.write wstawiane.
hauleth
Nie wiem jak jest z Backbone. Wszystkie arty co znalazłem trochę na ten temat narzekały. Może się już poprawiło, ale potrzebował bym jakieś źródło, bo aktualnie mam serwis, w którym można by to użyć, ale jeśli nie crawluje linków JSowych to dalej na nic mi to.
unikalna_nazwa
no raczej nie może tego robić bo mógłby zrobić coś niechcący - choćby zagłosować w ankiecie, na jakiś post na jakiejś stronie, mógłby odpalić niepotrzebnie coś skomplikowanego (np skompresowanie kilku gigowego folderu z dropboxa do zipa), czy nawet coś usunąć. Ludzie by musieli bardziej uważać na treść robots.txt ;)
dzek69
@unikalna_nazwa: takie rzeczy można też robić na stronach bez JS-u (usuwanie, ściąganie wersji zip folderu) przecież. Ciężko jednak uzyskać jakąś treść ekstra bez zrozumienia przycisków z akcjami JS - po prostu jest nieskończona liczba kombinacji, a nieskończone pętle póki co wykonują się dość długo ;)
hauleth
@unikalna_nazwa, od tego by crawler czegoś nie usunął to jest REST a od tego by nie klikał w ankietach są formularze. Więc twoje to raczej słaby argument. Ale jeśli Google uzupełnia treść ładowaną dynamicznie na stronę to połowa problemu z głowy.
0

Jeszcze raz bardzo dziękuję.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.