omawiają one koncepcję użycia wzoru elewacji jako piaskownicy podczas tworzenia aplikacji JavaScript o dużej skali, w celu oddzielenia aplikacji od bazowych bibliotek podstawowych.Abonowanie jQuery
To oddzielenie umożliwiłoby teoretycznie wyłączenie biblioteki bazowej bez konieczności przepisywania modułów aplikacji. Jednak w praktyce wydaje się to trudniejsze do wdrożenia.
Istnieją konkretne implementacje tej proponowanej architektury, takie jak AuraJS. Jednak patrząc na źródło wydaje się, że sandbox nadal ma nieszczelne abstrakcje, zwracając obiekty jQuery z niektórych swoich metod.
Nie interesuje mnie specjalnie AuraJS, ale bardziej ogólna koncepcja próbowania abstrakcji biblioteki jak jQuery bez utraty tak dużej funkcjonalności.
Jako przykład powiedzmy, że moja fasada/piaskownica ma metodę domeny .find(selector)
. Mogę myśleć o 3 opcje co to może powrócić:
jQuery obiekt - To będzie przeciekać jQuery się do modułów spożywających.
Surowy dom element - Utrata funkcjonalności, nikt tak naprawdę nie chce z tym pracować! Bez łańcuchów.
Niestandardowe opakowanie podobne do jQuery - Może być dość skomplikowane, ale wydaje się idealnym rozwiązaniem.
Więc moje pytanie brzmi, jaki sposób abstrakcyjny jak biblioteka jQuery, nie tracąc zbyt wiele funkcji, takich, które mogą być zastąpione w pewnym momencie w przyszłości, przy minimalnym wysiłku?
jQuery jest dość zawiłe wewnętrznie, tworząc abstrakcję taką, że mogłaby zostać zastąpiona przez dowolną (lub nawet jedną) inną bibliotekę wydaje się niezwykle trudna. I o co chodzi? Jeśli uważasz, że możesz chcieć zamienić biblioteki w przyszłości, być może nie powinieneś używać tego, z którego korzystasz w pierwszej kolejności. – RobG
@RobG Zgadzam się, wydaje się to trudne, dlatego właśnie zadaję pytanie. Jednak o wiele mądrzejsi ludzie niż ja przedstawiają te propozycje i podają ich uzasadnione powody (patrz linki do rozmów). –
W architekturze Mikołaja, jeśli zmienisz bibliotekę podstawową, będziesz musiał ponownie napisać rdzeń aplikacji. Gdy znajdziesz się powyżej rdzenia, nie piszesz już kodu, który używa biblioteki. Jeśli używasz jQuery, osoba pisząca moduł nie pisze ** żadnych ** jQuery. – RobG