2012-10-27 13 views
27

angularjs wykorzystuje dwukierunkową danych po stronie klienta wiążące (from AngularJS Developers guide): Two-Way Data Bindingangularjs boczne klient wiążące dane i po stronie serwera templating

ktoś rozważyć użycie kombinacji serwera silnika strona szablonów z angularjs dwukierunkowy klienckich wiązanie danych bocznych. Coś takiego: Mixed data binding

Zastanawiam się nad użyciem AngularJS tylko dla części (komponentów) strony? Czy to byłby dobry pomysł?

Chciałbym usłyszeć jeśli już doświadczenia z podobnym podejściem i jakie były wady i zalety ...

+0

Używałem AngularJS w szablonach Jade, które działały dobrze.Upewnij się tylko, że oba silniki szablonów nie mają części składni, ponieważ skończysz w ucieczce od piekła. W końcu poszedłem z Knockoutem, ale obydwa działają dobrze z Jade, ponieważ Jade nie używa nawiasów klamrowych (gdyby to -> uciekało przed piekłem). – Prinzhorn

+0

Dobra uwaga! Od AngularJS wersji 1.0, łatwo można interpolacji znaczników interpolacji [można zmienić] (http://stackoverflow.com/questions/12923521/angular-js-custom-delimiter). To może pomóc w takiej sytuacji. – PrimosK

+0

Tak długo nie nurkowałem w AngularJS, ale dobrze o tym wiedzieć. Knockout na drugiej nie ma nic takiego, tylko atrybuty (chyba że korzystasz z zewnętrznego silnika szablonów). – Prinzhorn

Odpowiedz

10

kątowa jest kompletnym UI renderowania ramy klienta. Możesz wprowadzić do niego dane, a to wyrenderuje odpowiedni html. Na swoim własnym Angular jest rozwiązaniem szablonowym całkowicie odłączonym od dowolnego serwera.

To, co próbujesz zrobić, to ponowne połączenie aplikacji Angular z serwerem. To będzie więcej pracy, będzie niewiele korzyści, a utracisz możliwość przełączania technologii serwerowych, ale zachowasz swoją kanciastą aplikację nietkniętą.

Zasadniczo nie chcesz tego robić z tego samego powodu, dla którego nie chcesz, aby Twój serwer renderował JavaScript ... jest to mniej oczywiste ze względu na wszystkie lata, które renderowaliśmy cały nasz HTML na serwerze.

Końcowy wynik jest ważny. To, że interfejs działa poprawnie, a aplikacja jest łatwa w utrzymaniu. Jeśli uważasz, że twoje rozwiązanie jest łatwiejsze w utrzymaniu, powinieneś to zrobić. Trudno mi sobie wyobrazić, że łatwiej jest go utrzymać niż prosty HTML i JavaScript z serwerem, który nie obsługuje JSON.

+12

Myślę, że jest co najmniej jedna korzyść: możesz renderować stronę z danymi początkowymi, przydatną w SEO. Zastanawiam się również nad tym, ale w rzeczywistości wygląda na to, że nie ma silnika szablonów po stronie klienta, który obsługuje ten scenariusz. – tanathos

+2

Może być przydatny w SEO ... na razie. Jednak wyszukiwarki nieustannie ewoluują, starając się uzyskać najlepsze wyniki dla użytkowników. Najlepszym rozwiązaniem na dłuższą metę jest stworzenie witryny, która dostarcza treści użytkownikom w najlepszy możliwy sposób, a Google/Yahoo/Bing zadba o ich koniec. –

+10

W profesjonalnych witrynach (takich jak e-commerce) często istnieje wymóg, aby strona działała bez javascript (mimo że baza użytkowników obecnie nie ma wyłączonego javascript). Zło konieczne do wstępnego załadowania strony danymi. Innym jest powolne ładowanie strony, które powoduje migotanie witryny z pokazywaniem szablonu do kompilacji. Więc to są inne powody niż SEO, dlaczego serwerowe ładowanie wstępne musi być na miejscu AFAIK. – Spoike

3

Miałem taki sam dylemat jak ty, pochodzę z tła używania SMARTY jako silnika szablonowego po stronie serwera i niedawno zaczęliśmy używać AngularJS.

Myślę, że połączenie obu rozwiązań byłoby właściwe w istocie całkowitej separacji. tzn. nie mieszaj części strony z obiema technologiami, ale korzystaj z obu technologii osobno.

Na przykład, jeśli masz stronę aukcji, na której użytkownicy w ogóle nie będą z nią współpracować, możesz użyć szablonu po stronie serwera idealnie.

Ale jeśli strona wymaga dużej ilości manipulacji i interakcji użytkownika w tym przypadku, należy użyć Angular.

Jeśli korzystasz z SPA (aplikacja na jedną stronę), nie używaj w ogóle szablonu po stronie serwera.

0

W aplikacji Cordova, którą ostatnio stworzyliśmy, użyliśmy pewnego rodzaju miksu. Napraw zawartość, taką jak formularze, listy, nagłówki i menu, które zrobiliśmy w sposób kanciasty, niektóre części, takie jak treść z pliku RTE lub często zmieniające się szablony, które dodaliśmy do dyrektywy ngBindHtml. Pomysł polega na elastyczności na stronach z treścią aplikacji, jeśli klient chce zmienić układ lub chce umieścić w nim obecnie nieznaną zawartość. Ale proponuję: jeśli możesz łatwo utrzymać aplikację (bez długiego procesu wdrażania/zatwierdzania), powinieneś zrobić to w sposób kątowy (ale bez myślenia o SEO;).

Powiązane problemy