将对页面的操作装起来,向window上暴露一个page对象,通过page对象来完成对页面的操作,但是事件怎吗封装
const page = (function () {const users = $('.users');const chatList = $('.chat-list');/*** 页面切换*/function switchPage() {$('.login').hide();$('.chat').show();}/*** 添加用户* @param {*} name*/function addUser(name) {$('<li>').attr('user', name).text(name).appendTo(users);totalPeo(1);addLog(`<span class="user">${name}</span> 进入聊天室`);chatList.scrollTop(chatList.prop('scrollHeight'), 0);}/*** 用户进入聊天室的信息提醒*/function addLog(log) {$('<li>').addClass('log').html(log).appendTo(chatList);}/*** 上线人数* @param {*} num*/function totalPeo(num) {const number = +$('.user-list .title span').text();$('.user-list .title span').text(number + num);}/**显示用户发送消息内容 */function addMsg(from, msg, to) {$('<li>').html(`<span class="user">${from}</span><span class="gray">对</span><span class="user">${to ? to : '所有人'}</span><span class="gray">说:</span><span>${msg}</span>`).appendTo(chatList);// 这句代码不理解chatList.scrollTop(chatList.prop('scrollHeight'), 0);}/*** 删除用户*/function removeUser(name) {const li = users.find(`li[user="${name}"]`);if (!li) return;li.remove();totalPeo(-1);addLog(`<span class="user">${name}</span> 退出了聊天室`);}/*** 清空输入框*/function clearInput() {$('.sendmsg input').text('');}/*** 初始化聊天室*/function initChatRoom() {users.html(`<li class="all">所有人</li>`);$('.user-list .title span').text(0);chatList.html(`<li class="log">欢迎来到聊天室</li>`);}/*** 信息接收者* @returns*/function getTargetUser() {const user = $('.sendmsg .user').text();return user === '所有人' ? null : user;}/*** 切换信息接收者*/users.click((e) => {console.log(e.target.tagName);if (e.target.tagName == 'LI') {$('.sendmsg .user').text($(e.target).text().trim());}});return {// 用户昵称me: null,sendText: null,switchPage,addUser,addMsg,totalPeo,clearInput,removeUser,initChatRoom,getTargetUser,// 需要websocekt使用的方法onLogin: null,onSendMsg: null,};})();// 事件监听(function () {/*** 输入昵称*/$('.login .form input').keydown((e) => {if (e.key === 'Enter') {page.me = $(e.target).val();page.onLogin && page.onLogin(page.me);}});$('.sendmsg input').keydown((e) => {if (e.key === 'Enter') {page.onSendMsg && page.onSendMsg(page.me, $(e.target).val(), page.getTargetUser());page.clearInput();}});})();
