原生js开发AJAX数据分页缓存模块特效
Posted 学习web前端
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原生js开发AJAX数据分页缓存模块特效相关的知识,希望对你有一定的参考价值。
效果所用知识点:原生Js实现ajax数据交互、数据分页技术原理剖析,前端数据缓存, H5domAPI应用, 职业化前端的性能优化处理方案, 设计模式与用户体验。
需要更多企业常用学习案例,项目实战,学习方法可以加一下我的前端群589651705,每天都会精选一个特效分享!
数据分页缓存模块源码:
<!DOCTYPE html>
<html>
<head>
<title>index</title>
<meta charset="utf-8">
<meta name="Author" content="潭州学院-海牙">
<script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<style>
* { margin: 0; padding: 0; }
li { list-style: none; }
a { text-decoration: none; corlor: #222222; }
.flex_row { display: flex; flex-direction: row; justify-content: space-around; align-items: center; }
.flex_column { display: flex; flex-direction: column; justify-content: flex-start; align-items: center; }
.wrap { width: 500px; height: 600px; margin: 100px auto; box-shadow: 0 0 5px #434343; }
.wrap .content { width: 100%; height: 540px; }
.wrap .content .items {width:100%; padding: 10px 0; border-bottom: 1px solid #cccccc;opacity:1;transition:1s; }
.wrap .content .items.load{opacity:1;}
.wrap .content .items .img img { width: 18%; height: 18%; margin-right: 5px; box-shadow: 0 0 3px #dddddd; }
.wrap .content .items .img img { display: block; width: 45px; height: 45px; }
.wrap .content .items .bd { width: 76%; }
.wrap .content .items .bd p { vertical-align: sub; display: inline-block; width: 78%; word-break: keep-all; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #222222; }
.wrap .content .items .ft { width: 4%; color: #222222; font-weight: bold; }
.wrap .page { width: 100%; height: 60px; }
.wrap .page ul { width: 100%; height: 100%; }
.wrap .page ul li { width: 40px; height: 40px; box-shadow: 0 0 4px #222222; font-weight: bold; text-align: center; line-height: 40px; cursor: pointer; }
.wrap .page ul li:hover { background-color: rgba(227, 248, 251, 0.49); box-shadow: 0 0 4px rgba(51, 173, 251, 0.89); }
</style>
</head>
<body>
<div class="wrap flex_column">
<div class="content flex_column">
</div>
<div class="page">
<ul class="flex_row">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
</div>
<script src='js/myAjax.js'></script>
<script>
//var box=document.getElementById('box'); //es3就有的 dom节点获取方法
var oContent=document.querySelector('.content'); //h5 API dom节点 ie8
var oPages=document.querySelectorAll('.page ul li'); //获取所有的列表节点
/*
javascript 基于原型的动态解释性脚本语言
改变dom元素以及样式
用户交互事件反馈
数据交互 ajax
封装插件
框架 vue angular node 设计模式 事务代理
vue es5
缓存代理
闭包
没有类的概念
*/
var cache={};
changePage();
setInterval(function(){
cache={};
},1000);
function changePage(){
for(let i=0,len=oPages.length;i<len;i++){ //let es6块级作用域变量声明方式
oPages[i].onclick=function(){ //用户点击li 弹出li的序号 0-5
var page=i+1; //1-6 0-5
if( page in cache){
addDom(cache[page]);
console.log('数据已经有了');
}else{
goTo(page);
console.time('数据还没有,正在加载');
}
console.log(cache);
}
}
}
goTo(1);
function goTo(page){
myAjax({
url:'https://route.showapi.com/181-1',
method:'GET',
data:{
showapi_appid:'30603',
showapi_sign:'98960666afeb4992ae91971d13494090',
num:8,
page:page, //数据获取分页
},
success:function(res){
//console.log(res);//字符串 string 类json 字符串
var result=JSON.parse(res);
var dataList=result.showapi_res_body.newslist;
//获取到我们的数据数组
addDom(dataList);
cache[page]=dataList;
console.timeEnd('数据还没有,正在加载');
}
});
}
function addDom(result){
var dataList=result;
var dataLength=dataList.length; //存储数组长度 8
var str='';
for(var i=0;i<dataLength;i++){
str+=`
<a href="${dataList[i].url}" class="items flex_row">
<div class="img"><img color: #569cd6;">${1+Math.floor(Math.random()*10)}.jpg" alt=""></div>
<div class="bd">
<p class="label">${dataList[i].title}</p>
</div>
<div class="ft">></div>
</a>`
}
oContent.innerHTML=str; //把生成好的节点字符串 添加到content里面
//console.log(result.showapi_res_body.newslist[0].url)
}
//(function(){})(); //IIFE
//函数执行 引入进来的 myAjax函数
</script>
</body>
</html>
<!--
1. 数据交互
请求的参数
请求账号 showapi_appid: 30603
请求密码 showapi_sign:98960666afeb4992ae91971d13494090
请求多少条数据 num :8
是否随机拉取数据:rand:1
从多少页开始请求:pag:1
https://route.showapi.com/181-1?showapi_appid=30603&showapi_sign=98960666afeb4992ae91971d13494090&num=8&rand=1&page=1
2. 解析数据并且动态dom生成
for循环解析数组
querySelector
innerHMTL
前端发起数据请求
后台验证请求(前后端数据通信 建立数据通道 验证请求状态)
后台根据请求的参数 发送数据
数据通过回调函数回馈到前端
xml base64
number 单条数据 数字
string 字符串
function 函数
json json
array 数组
json数据格式
json.属性名称
json['属性名称']
数组 [1,2,3,54,5];
json:{
apple:'苹果',
pk:[1,2,3,4],
fn:function(){
}
}
键值对 key:value
json.apple
res:{
showapi_res_body:{
code:200, //链接完成
msg:'success',
newsList:[
{
url:"http://mp.weixin.qq.com/s/NS1IgclC-bc7eTKUh6r-pA"
},
{},
{},
{}
]
}
}
认清自己的水平
实操结合案例
javascript
第一层:[事件,dom方法,bom方法,变量,数据类型,函数,控制流程,判断,数组]
第二层:[作用域,函数表达式,call,apply,this 对象 面向对象 递归 迭代
原型,原型链,闭包,arguments,工具的高级用法,二次穿参,回调函数,ajax,正则表达式,前端路由];
第三层:[设计原理 ,设计模式 ,算法与数据结构, 框架分析]
碰撞检测模块开发
事件监听模块开发
动态遍历模块开发 迭代器
图片等比例缩放
拖拽模块开发
ajax
XMLHTTPRequest
open设置数据
同步
一个收银台 排队
异步
给一个号牌
有人出收集号牌
分配号牌给多个收银台进行结账
windows
多线程处理
同时处理多个进程
光速在各个进程之间来回切换
真正的前端开发
实现业务逻辑
用户体验
-->
文档源码已上传群文件,有需要的效果版可以加群获取
点击“阅读原文”也可加入群,点赞分享是种美德哦
以上是关于原生js开发AJAX数据分页缓存模块特效的主要内容,如果未能解决你的问题,请参考以下文章