京东投票

本文介绍了京东投票系统的实现,包括数据获取逻辑、首页数据的分页加载和搜索功能。讨论了如何处理大量数据绑定,提出使用文档碎片和虚拟DOM优化,以及异步数据加载(分页)来避免性能问题。同时,详细阐述了登录模型的设计,确保用户安全登录并返回原始页面。
摘要由CSDN通过智能技术生成

京东投票

  1. 打开项目

    • ‘$ yarn install / $ npm install’ : 跑环境(把项目依赖的插件进行安装)

    • ‘$ node admin.js’:启动服务(把自己的计算机作为服务器,创建一个指定端口的服务,来管理后台程序 - 后台程序会根据客户端请求的需求,把对应的数据和业务逻辑实现)

  2. API.TXT :API接口文档

    • 真实项目中,后台开发人员会给前端开发人员提供一个技术文档(接口文档),文档中描述了前端需要调取后台的某些接口实现的某些功能,并且标注了请求的地址、请求方式、传递给服务器的内容、以及服务器返回的结果等信息

    • 这就是前后端分离:前端开发者不需要考虑后台是基于什么技术实现的,我们只需要按照API文档中提供的信息,去发送请求传递内容即可,这样就可以获取我们需要的数据(API文档就是约束前端和后台的规范文档)

面试题

有一万条数据,想让其绑定到页面中,怎么做好一些?
  • 文档碎片:遍历数据,把对应的数据和结构都添加到文档碎片中,在把文档碎片扎入到页面中(优势:减少了DOM的回流 - 基于字符串拼接也可以)
  • 虚拟DOM:类似于REACT框架,基于虚拟DOM以及DIFF算法,也可以优化数据绑定
  • 本质来说,怎么做都不是最好的,我们不应该出现1万条这种大数据量的绑定
    • 从服务器获取1万条消耗很多时间
    • 页面渲染1万条也会消耗很多时间

异步数据加载(分页加载)

  • 需要服务器端做支持
    • 客户端向服务器端发送一个GET请求,传递给服务器:每页展示的条数,当前要展示的页数等信息,例如传递的是?limit=20&page=1(每页展示20条,当前展示第一页)
    • 服务器端接收到请求后,在所有的数据中把第一页的20条数据返回给客户端
    • 当用户下拉加载更多或者点击第二页等页码按钮等的时候,重复第一步,把对应要展示的页码传递给服务器,服务器返回对应页码中的数据

第一步:跑通数据获取的逻辑

axios.defaults.baseURL = '';
let matchRender = (function($){
    //定位页面元素
    let $userList = $('.userList'),
    $wrapper = $userList.find('ul'),
    $tip = $userList.find('.tip')

    let limit = 10,//每页展示的数量
    page = 1,//当前是第几页
    search = '';//搜索的内容

    //query - data获取数据
    let queryData = function queryData(){
        axios.get('/getMatchList',{
            params:{
                limit,
                page,
                search
            }
        }).then(result => {

            
        }).then(bindHTML)
    };

    //数据绑定
    let bindHTML = function bindHTML(re
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值