Używam require.js do robienia leniwego ładowania aplikacji JavaScript. Chciałbym przełączyć się na stos meteorów, ale teraz wygląda na to, że Meteor wysyła całą aplikację (wszystkie szablony) do początkowego obciążenia. Czy ktoś miał sukces z require.js i meteorytem lub jakąkolwiek inną implementacją?Leniwe szablony ładowania w Meteoru
Odpowiedz
Zadajesz różne pytania, ale na pewno są ze sobą powiązane. Pierwsza dotyczy ładowania dodatkowego kodu javascript do twojej aplikacji meteor. Oczywiście możesz użyć rzeczy takich jak requirejs
. To powinno działać dobrze, zakładając, że twój leniwy kod znajduje się w katalogu twojego projektu meteor. Jednak moim doświadczeniem jest to, że requirejs
szaleje, gdy zawartość public
jest często aktualizowana, więc na przykład w środowisku programistycznym. Może to kwestia dostosowania biblioteki, ale wolałbym raczej polecić użycie lekkiego homebrewed paczki. Spójrz na here, jeśli potrzebujesz inspiracji.
Drugie pytanie dotyczy definicji leniwego szablonu. Każdy szablon składa się z dwóch części. Pierwszy to kod html
, napisany w składni handlebars
, drugi to cały kod javascript, który piszemy, aby zdefiniować zachowanie twojego szablonu (np. Pomocników, programów obsługi zdarzeń). Druga część jest łatwa, o ile zakładamy, że już wiemy, jak załadować leniwy kod (zobacz powyższy akapit), a szablon, nazwijmy go myLazyTemplate
, jest już zdefiniowany, więc w zasadzie Template.myLazyTemplate
nie jest undefined
. Jak więc osiągnąć ten drugi?
Aby dynamicznie zdefiniować nowy szablon będzie trzeba zadzwonić Template.__define__(name, raw_func)
na kliencie. Zatem ostatnie pytanie brzmi: "co to jest raw_func
?". Jest to skompilowany wersję swojej kod HTML który normalnie jest tworzony automatycznie na serwerze, a następnie zesłany przewód do klienta, gdy aplikacja zostanie załadowany (patrz here aby zobaczyć, jak to się robi w meteor). Ale chcemy robić to dynamicznie, prawda?
Ideą jest ręczne skompilowanie kodu szablonu za pomocą procedury Handlebars.to_json_ast
. Możesz go podać swoim kodem szablonu html, a wynik to pewna tablica javascript, którą można wysłać do klienta w dowolnym momencie dzięki metodzie, o której już rozmawialiśmy. Ostatnią rzeczą, którą musisz zrobić, to zadzwonić pod numer Handlebars.json_ast_to_func
na kliencie, używając danych wysłanych z serwera jako jedynego argumentu. Dane wyjściowe wyprodukowane przez Handlebars.json_ast_to_func
to raw_func
, którego można użyć do utworzenia szablonu myLazyTemplate
.
Jestem świadomy, że to tylko zgrubny pomysł, a nie całe rozwiązanie twojego problemu. Mam nadzieję, że to pomoże ci samemu znaleźć ostateczne rozwiązanie.
- 1. Leniwe zależności ładowania z symfony DI
- 2. Leniwe właściwości ładowania za pomocą Async
- 3. Oddzwoń do wszystkich szablonów w blasku meteoru
- 4. Wielojęzyczny w Meteoru
- 5. Trasowanie w Meteoru
- 6. CSS Leniwe ładowanie w Chrome
- 7. Leniwe ładowanie obrazów w ListView
- 8. zachowanie cursor.observe ({added}) w Meteoru
- 9. Wyłącz oglądanie plików w Meteoru
- 10. Szablony ładowania Jinja2 z oddzielnej lokalizacji niż katalog roboczy
- 11. Leniwe logowanie w C++
- 12. Ustawienia boczne klienta meteoru
- 13. Leniwe ładowanie zestawów/katalogów
- 14. Czy szablony dzieci Meteoru mogą korzystać z pomocniczych szablonów dla rodziców?
- 15. Leniwe ładowanie z modelem domeny usługi WCF?
- 16. Zrozumienie leniwe oceny w R
- 17. Leniwe dopasowywanie wzorca w Data.List
- 18. Leniwe ładowanie w pliku node.js
- 19. Leniwe zrozumienie listy w eliksiru?
- 20. Szablony do wąsowania: szablony zagnieżdżone
- 21. Średnia liczba zapytań o agregację w Meteoru
- 22. Dostęp do modułu plików node.js w Meteoru
- 23. Wyszukiwanie użytkownika meteoru na serwerze
- 24. Implikacje wydajności renderowania po stronie klienta i włókien w Meteoru
- 25. Co to jest leniwe ładowanie w trybie hibernacji?
- 26. Wyjaśnij leniwe zdanie oceny
- 27. leniwe inicjowanie za darmo
- 28. String.format z leniwe oceny
- 29. Leniwe tworzenie pojedynczego magazynu
- 30. Szablony wyrażeń w Eigen
Dzięki za bardzo szczegółową odpowiedź, był to tylko poziom opisu, którego szukałem. – James
Ta odpowiedź jest prawdopodobnie nieaktualna. Zobacz [jak leniwe szablony obciążeń na żądanie w Meteor] (https://stackoverflow.com/a/28334315/1269037), a pakiety dostępne dla tego od lutego 2015. –