我一直在關注Modular Design Pattern很長一段時間,並且發現它非常有用,因爲它有助於良好維護代碼塊&將塊分離爲模塊。在Javascript中使用模塊化設計模式並使用DOM選擇
與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選擇)。
我的另一部分告訴我這可能是一個反模式和特定的元素應該選擇和本地緩存在需要的時候。
我在整個過程中都使用過類似的結構,並且對代碼有不同的反應,但沒有什麼可靠的。任何幫助,將不勝感激。謝謝!
使用元素來選擇名稱和狀態或其他東西不是好主意 如果有人用檢查元素更改名稱會怎麼樣? 或明天你的隊友改變主題一切都會被打破! –
將數據保留在arry或object中並用於存儲使用localstorage –
元素屬性在頁面加載時得到解析,並且事件直接綁定到節點,所以如果有人用inspect元素更改名稱,它不會導致問題。而'localstorage'對此是一個壞主意。 – nashcheez