Я уже довольно долгое время рассматриваю Модульный шаблон дизайна и нахожу его чрезвычайно полезным, так как он помогает в улучшении обслуживания кода и разделение блоков на модули.
Регулярное использование структуры модуля с помощью jQuery
привело к большей части моих приложений/кода, следующих ниже:
(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();
})();
То, что я хотел бы знать, заключается в том, ссылается ли ссылка на все мои элементы на jQuery
как на одну переменную chat.elements
на хорошую практику?
Одна часть меня говорит, что это действительно хороший способ сразу ссылаться на все ваши селекторы и кэшировать их в переменных, чтобы можно было использовать многократное использование одного и того же элемента с кэшированными переменными (а не с несколькими выборами DOM).
Другая часть меня говорит, что это может быть анти-шаблон, и определенные элементы должны быть выбраны и кэшированы локально, когда это необходимо.
Я использовал подобные структуры повсюду и получил смешанные ответы о коде, но ничего сплошного. Любая помощь будет оценена по достоинству. Спасибо!