【学习分享】WeUI框架实战笔记:构建高效新闻列表页

176 阅读4分钟

大家好,我是睡个好jo,在最近的学习中,我收获到了如何运用WeUI框架的精髓来高效构建一个既美观又实用的新闻列表页,这不仅仅丰富了我的技术储备,更拓宽了我对Web开发的深度理解。我把最近学习的一些内容在这里分享给大家

引入WeUI

首先,从CDN引入WeUI的CSS文件,利用其简洁的样式快速美化页面。在<head>部分加入以下代码:

<link href="https://cdn.bootcdn.net/ajax/libs/weui/2.6.12/style/weui.min.css" rel="stylesheet">

此行代码通过CDN内容分发网络,确保样式文件从离用户最近的服务器加载,加快HTTP传输速度。

构建Tab导航

WeUI提供的.weui-navbar类轻松实现导航栏。只需在<navbar>部分添加如下代码:

<div class="weui-navbar">
    <a href="#" class="weui-navbar__item weui-bar__item_on">推荐</a>
    <a href="#" class="weui-navbar__item">热点</a>
    <a href="#" class="weui-navbar__item">娱乐</a>
</div>

为实现Tab切换效果,需监听导航栏上的点击事件。这里使用事件委托方式减少事件监听器的数量,提高效率:

document.querySelector('.weui-navbar').addEventListener('click', function(event) {
    // 确理逻辑
});

实现搜索栏

WeUI的搜索栏组件(weui-search-bar)易于集成且具备良好的交互体验。在页面中添加如下代码:

<div class="weui-search-bar" id="search_bar">
    <!-- 搜索栏HTML结构 -->
    <form action="" class="weui-search-bar__form">
            <div class="weui-search-bar__box">
                <i class="weui-icon-search"></i>
                <input type="search" class="weui-search-bar__input" placeholder="搜索" id="search_input">    
                <a href="#" class="weui-icon-clear"></a>
            </div>
            <label id="search_label" class="weui-search-bar__label" for="search_input">
                <i class="weui-icon-search"></i>
                <span>搜索</span>   <!-- 搜索文字 -->   
            </label> 
        </form>
        <a href="" class="weui-search-bar__cancel-btn">取消</a>
</div>

确保搜索框具有无障碍访问性,通过为隐藏的输入框添加关联的label for属性,并且确保视觉上隐藏的输入框仍可被辅助设备识别:

<input type="search" class="weui-search-bar__input" 
id="search_input" tabindex="-1" aria-hidden="true">
<label for="search_input" class="weui-search-bar__label" aria-hidden="true">搜索</label>

优化交互逻辑

  • 为Tab切换添加事件处理逻辑,确保点击时切换高亮显示状态。
  • 对搜索栏的点击监听和聚焦状态进行处理,通过类名.weui-search-bar_focusing控制视觉反馈。
        const tabs = document.querySelectorAll('.weui-navbar__item');
        const navbar = document.querySelector('.weui-navbar'); 
        const searchInput = document.querySelector('#search_input') 
        const seachBar = document.querySelector('.weui-search-bar')     
        // 监听搜索框的点击事件  
        document.querySelector('.weui-search-bar__label')
        .addEventListener('click',function(){
            seachBar.classList.add('weui-search-bar_focusing')
        })  
        searchInput.addEventListener('focus',function(){

        })
        // [jcode](https://code.juejin.cn/pen/7374625482542678016)监听navbar的点击事件
        navbar.addEventListener('click',function(event){
            if(event.target.nodeName == "A"){   
                event.preventDefault();  // 阻止a标签的默认行为
                if(event.target.classList.contains('weui-bar__item_on')){
                    return
                } 
                document.querySelector('.weui-bar__item_on')
                .classList.remove('weui-bar__item_on');   // 移除当前类
                event.target.classList.add('weui-bar__item_on');    // 添加当前类   
            }
        })

源码分享

使用WeUI框架的优点

在上述搭建新闻列表页的过程中,使用WeUI框架和遵循的策略展现出了多方面的优点,具体分析如下:

1. 快速原型开发与一致性

  • WeUI组件库的引入极大简化了前端开发流程,提供了一系列预设风格统一的UI组件,如导航栏(.weui-navbar)、搜索栏(.weui-search-bar)和列表组件,使得开发者无需从零开始编写基础样式,大大加快了页面原型设计与实现的速度。
  • 样式一致性:WeUI遵循微信官方设计规范,保证了在微信生态内应用的一致视觉体验,有助于提升品牌识别度和用户体验。

2. 响应式设计

  • WeUI框架天然支持移动优先,确保了页面在不同设备上的良好适应性,尤其是移动端,这对于新闻列表页这类需频繁在手机上查阅的内容尤为重要。

3. 无障碍访问性优化

  • 标签与属性的使用:通过labelfor`属性与输入框关联,确保屏幕阅读器可以读取到搜索框的标签信息,提升了网站的无障碍访问性,符合现代Web开发的包容性设计理念。
  • 隐藏元素的合理处理:对于视觉隐藏的input(如搜索框),使用tabindex="-1"aria-hidden="true"确保了辅助技术的正确交互,既隐藏了视觉表现又不妨碍辅助设备的识别。

4. 性能考量

  • CDN引入:通过CDN网络引入WeUI CSS,优化了资源加载速度,减少了延迟,提升了用户体验。
  • CSS压缩与非压缩版本的灵活使用:开发阶段采用未压缩版便于调试,生产环境使用minified版减少传输体积,平衡了开发便利与性能需求。

5. 事件委托与逻辑优化

  • 事件监听策略:在.weui-navbar上使用事件委托处理Tab切换事件,减少事件监听器数量,提高了性能,同时也简化了逻辑处理,避免了直接在元素集合上循环监听。
  • 作用域管理:通过闭包技巧(立即执行函数或ES6的let关键字)有效管理了循环中的作用域,防止了闭包陷阱,确保了逻辑的正确执行。

6. 用户体验

  • 交互细节:如搜索栏的聚焦态(weui-search-bar_focusing)的切换,增强了用户与界面的互动反馈,使得操作更加直观和流畅。

  • 取消按钮:搜索栏中取消按钮的存在,方便用户在不提交搜索时快速退出,提升了操作的灵活性。

综上所述,该新闻列表页的构建方案不仅高效快捷,而且在设计上考虑周全,兼顾了性能、可访问性与用户体验,展示了WeUI框架与现代Web开发实践的优势。