Od pewnego czasu śledzę numer Modular Design Pattern i uważam, że jest on niezwykle użyteczny, ponieważ pomaga w utrzymaniu kodu & rozdzielanie bloków na moduły.Używanie modularnego wzorca projektowego w JavaScript z ustawieniami DOM
Regularne korzystanie z konstrukcji modułowej z jQuery
doprowadziła do większości moich aplikacji/kod zgodnie z poniższą strukturą:
(function() {
var chat = {
websocket: new WebSocket("ws://echo.websocket.org/"),
that: this,
init: function() {
this.scrollToBottom();
this.bindEvents();
this.webSocketHandlers();
},
bindEvents: function() {
this.toggleChat();
this.filterPeople();
this.compose();
},
elements: {
indicator: $(".indicator"),
statusText: $(".status-text"),
chatHeadNames: $(".people li .name"),
filterInput: $("#filter-input"),
msgInput: $("#msg-input"),
sendBtn: $(".send")
},
...
...
...
filterPeople: function() {
var that = this;
this.elements.chatHeadNames.each(function() {
$(this).attr('data-search-term', $(this).text().toLowerCase());
});
},
...
...
};
chat.init();
})();
Co chciałbym wiedzieć, czy przedstawieniu wszystkie moje elementy poprzez jQuery
jako część pojedyncza zmienna to dobra praktyka ?
Jedna część mnie mówi, że rzeczywiście jest dobrym sposobem na odnoszenie się do wszystkich selektorów naraz i buforowanie ich w zmiennych, tak aby wielokrotne użycie tego samego elementu można było wykonać z buforowanymi zmiennymi (zamiast wielu wybranych DOM).
Inna część mnie mówi, że to może być anty-wzór, a poszczególne elementy powinny być wybrane i buforowane lokalnie, gdy jest to wymagane.
Użyłem podobnych struktur i mam mieszane odpowiedzi na temat kodu, ale nic solidnego. Każda pomoc będzie doceniona. Dzięki!
użycie elementu do wyboru nazwy i statusu lub innych rzeczy nie jest dobrym pomysłem co się stanie, jeśli ktoś zmieni nazwę z elementem inspekcji? lub jutro twój kolega z drużyny, zmieniając temat, wszystko będzie zepsute! –
Przechowuj dane w pamięci lub obiekcie i do przechowywania użyj localstorage –
Właściwości elementu są analizowane podczas ładowania strony, a zdarzenia są powiązane bezpośrednio z węzłem, więc jeśli ktoś zmieni nazwę za pomocą elementu inspect, nie spowoduje to problemu. A "localstorage" to zły pomysł. – nashcheez