当前位置: 首页 > news >正文

用dw做网站的代码如何优化关键词搜索排名

用dw做网站的代码,如何优化关键词搜索排名,wordpress纯图片主题,聚合猫网站建设目录 目录 1.前言 2.后端API 3.前端API 4.组件 5.分页 6.封装组件 1.前言 本文是博主前端Vue实战系列中的一篇文章,本系列将会带大家一起从0开始一步步完整的做完一个小项目,让你找到Vue实战的技巧和感觉。 专栏地址: https://blog…

目录

目录

1.前言

2.后端API

3.前端API

4.组件

5.分页

6.封装组件


1.前言

本文是博主前端Vue实战系列中的一篇文章,本系列将会带大家一起从0开始一步步完整的做完一个小项目,让你找到Vue实战的技巧和感觉。

专栏地址:

https://blog.csdn.net/joker_zjn/category_12469788.html?spm=1001.2014.3001.5482

前文中我们依次安装好了插件、依赖,搭建好了环境,搭好了项目的架子,实现了登录页、首页、菜单栏、导航栏、学生列表模块这些功能。接下来我们要做的是作业管理模块,该模块用来对学生的作业进行管理,主要是实现一个作业管理列表+后端分页的功能。

2.后端API

URL:

api/getWorkList

返回值:

参数类型说明
idint用户ID
userIdint所属班级
titlestring作业名称
completedboolean完成情况,是否完成

请求:

method:GET

参数名类型说明
pageint当前页数
sizeint每页条数

这是作者用Spring Boot写的一个后端接口实现,可以作为一个参考:

@RestController
@RequestMapping("/api/work")
public class WorkController {@RequestMapping("getWorkList")public ResultBean getWorkList(int index, int rows) {return new ResultBean(200,"success",workService.getWorkListCount(index,rows),workService.getWorkList(index,rows));}
}

3.前端API

之前我们以及在table.js里封装好了前端的api,所以这里我们直接在table.js里面追加api即可:

//获取作业列表
export function getTableData(root,method,url,params,arr){root.service[method](url+"?index="+params.index+"&rows="+params.rows).then(res=>{if(res.data.code===200){root.tableData=res.data.dataroot.total=res.data.totalroot.tableData.map(item=>{arr.map(aItem=>[item[aItem]?item[aItem+'_text']='是':item[aItem+'_text']='否'])})}})}

4.组件

直接用前面学生列表的StudentList.vue来改一下:

<template><div><el-table :data="tableData" border style="width: 100%"><el-table-column prop="id" label="用户ID" align="center"></el-table-column><el-table-column prop="userId" label="所属班级" align="center"></el-table-column><el-table-column prop="title" label="作业名称" align="center"></el-table-column><el-table-column prop="completed_text" label="完成情况" align="center"></el-table-column></el-table></div>
</template><script>
import {getTableData} from '@/utils/table'
export default ({data(){return{tableData:[]}},created(){getTableData(this,'get','/work/getWorkList',{},['completed'])}
})
</script>

5.分页

这里要注意的是前面我们采用的都是前端分页,但是在实际项目中都是采用后端分页的。因为前端分页的话要先把所有数据请求过来再分页显示,数据量大了的话是搞不定的,所以从这里以及后面的分页我们都采用后端分页。前面的前端分页的地方就不去管他了,作为一个演示放在那里。

我们先把学生列表组件里面的分页组件照搬过来,需要注意的是将current-page和page-size分别设置为后端分页的参数

data(){return{tableData:[],total:0,index:0,rows:10}},
<template><div><el-table :data="tableData" border style="width: 100%"><el-table-column prop="id" label="用户ID" align="center"></el-table-column><el-table-column prop="userId" label="所属班级" align="center"></el-table-column><el-table-column prop="title" label="作业名称" align="center"></el-table-column><el-table-column prop="completed_text" label="完成情况" align="center"></el-table-column></el-table><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="index":page-sizes="[5, 10, 15, 20]":page-size="rows"layout="total, sizes, prev, pager, next, jumper":total="total"></el-pagination></div>
</template>

最终组件:

<template><div class="workList"><el-table :data="tableData" border style="width: 100%"><el-table-column prop="id" label="用户ID" align="center"></el-table-column><el-table-column prop="userId" label="所属班级" align="center"></el-table-column><el-table-column prop="title" label="作业名称" align="center"></el-table-column><el-table-column prop="completed_text" label="完成情况" align="center"></el-table-column></el-table><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="index":page-sizes="[5, 10, 15, 20]":page-size="rows"layout="total, sizes, prev, pager, next, jumper":total="total"></el-pagination></div>
</template><script>
import {getTableData} from '@/utils/table'
export default ({data(){return{tableData:[],total:0,index:1,rows:10}},created(){getTableData(this,'get','/work/getWorkList',{index:this.index,rows:this.rows},['completed'])},methods:{//分页方法handleSizeChange(val) {this.index = val;this.rows = 1;getTableData(this,'get','/work/getWorkList',{},['completed']);},handleCurrentChange(val) {this.rows = val;getTableData(this,'get','/work/getWorkList',{},['completed']);},}
})
</script>
<style lang="less">
.workList{.el-pagination{text-align: left;margin-top: 20px;}
}
</style>

6.封装组件

分页组件到处都会用到,所以我们应该考虑把这个组件单独封装成一个组件,以后该项目中其它地方也用这个我们封装好的走后端分页逻辑的组件。

公共组件都放common包下面:

有两个地方需要注意:

1.因为要操作的数据是父组件的,所以原来的前端api要改为:

//获取作业列表
export function getTableData(root,method,url,params,arr){root.service[method](url+"?index="+params.index+"&rows="+params.rows).then(res=>{if(res.data.code===200){root.$parent.tableData=res.data.dataroot.total=res.totalroot.$parent.tableData.map(item=>{arr.map(aItem=>[item[aItem]?item[aItem+'_text']='是':item[aItem+'_text']='否'])})}})
}

2.为了保证路由的灵活度,分页方法具体访问哪个后端接口,需要从父组件传过来,所以这里加一个url参数:

<template><div><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="index":page-sizes="[5, 10, 15, 20]":page-size="rows"layout="total, sizes, prev, pager, next, jumper":total="total":url="url"></el-pagination></div>
</template>
<script>
import {getTableData} from '@/utils/table'
export default ({props:{"url": String},data(){return {total:0,index:1,//当前页数rows:10,//每页显示条数}},created(){getTableData(this,'get',this.url,{index:this.index,rows:this.rows},['completed'])},methods:{//分页方法handleSizeChange(val) {this.index = val;this.rows = 1;getTableData(this,'get',this.url,{index:this.index,rows:this.rows},['completed'])},handleCurrentChange(val) {this.rows = val;getTableData(this,'get',this.url,{index:this.index,rows:this.rows},['completed'])},}
})
</script>

最终在父组件中调用上面的分页组件即可,所以最终的作业列表组件长这样:

<template><div><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="index":page-sizes="[5, 10, 15, 20]":page-size="rows"layout="total, sizes, prev, pager, next, jumper":total="total":url="url"></el-pagination></div>
</template>
<script>
import {getTableData} from '@/utils/table'
export default ({props:{"url": String},data(){return {total:0,index:1,//当前页数rows:10,//每页显示条数}},created(){getTableData(this,'get',this.url,{index:this.index,rows:this.rows},['completed'])},methods:{//分页方法handleSizeChange(val) {this.index = val;this.rows = 1;getTableData(this,'get',this.url,{index:this.index,rows:this.rows},['completed'])},handleCurrentChange(val) {this.rows = val;getTableData(this,'get',this.url,{index:this.index,rows:this.rows},['completed'])},}
})
</script>


文章转载自:
http://biometeorology.c7497.cn
http://superset.c7497.cn
http://folkway.c7497.cn
http://metaphrast.c7497.cn
http://scurvy.c7497.cn
http://kosciusko.c7497.cn
http://hometown.c7497.cn
http://artificialness.c7497.cn
http://sutlej.c7497.cn
http://lord.c7497.cn
http://honkey.c7497.cn
http://birdshot.c7497.cn
http://bungle.c7497.cn
http://regensburg.c7497.cn
http://radiotoxicology.c7497.cn
http://necrotic.c7497.cn
http://euphonize.c7497.cn
http://encephala.c7497.cn
http://admissibility.c7497.cn
http://catalepsy.c7497.cn
http://haloplankton.c7497.cn
http://sweetstuff.c7497.cn
http://silva.c7497.cn
http://jesse.c7497.cn
http://kaftan.c7497.cn
http://tree.c7497.cn
http://longways.c7497.cn
http://moravia.c7497.cn
http://reproducer.c7497.cn
http://ifps.c7497.cn
http://gonococcus.c7497.cn
http://limay.c7497.cn
http://pseudosophistication.c7497.cn
http://impassion.c7497.cn
http://hypobaric.c7497.cn
http://impenitently.c7497.cn
http://pyrognostics.c7497.cn
http://aliquant.c7497.cn
http://centrobaric.c7497.cn
http://veda.c7497.cn
http://afebrile.c7497.cn
http://firethorn.c7497.cn
http://abruptly.c7497.cn
http://sonochemistry.c7497.cn
http://everblooming.c7497.cn
http://hotheaded.c7497.cn
http://washboard.c7497.cn
http://kowtow.c7497.cn
http://hydrated.c7497.cn
http://proletariat.c7497.cn
http://cateran.c7497.cn
http://curvature.c7497.cn
http://fub.c7497.cn
http://excurved.c7497.cn
http://hypnoanalysis.c7497.cn
http://unreconstructed.c7497.cn
http://catheterize.c7497.cn
http://spherulite.c7497.cn
http://honolulu.c7497.cn
http://tagger.c7497.cn
http://fasces.c7497.cn
http://denseness.c7497.cn
http://jutland.c7497.cn
http://kinkled.c7497.cn
http://clintonia.c7497.cn
http://askesis.c7497.cn
http://xcviii.c7497.cn
http://heterocaryotic.c7497.cn
http://thanatology.c7497.cn
http://naturalist.c7497.cn
http://downdraght.c7497.cn
http://hyperaphia.c7497.cn
http://distressing.c7497.cn
http://saucier.c7497.cn
http://interdine.c7497.cn
http://densimetry.c7497.cn
http://burial.c7497.cn
http://frettage.c7497.cn
http://psalterion.c7497.cn
http://bondieuserie.c7497.cn
http://victim.c7497.cn
http://priscan.c7497.cn
http://anaerobiosis.c7497.cn
http://attributively.c7497.cn
http://ketolysis.c7497.cn
http://haiduk.c7497.cn
http://xanthochroism.c7497.cn
http://tartness.c7497.cn
http://cinetheodolite.c7497.cn
http://waterishlog.c7497.cn
http://repetition.c7497.cn
http://volleyfire.c7497.cn
http://charging.c7497.cn
http://amritsar.c7497.cn
http://unselected.c7497.cn
http://gonococcus.c7497.cn
http://paramagnetic.c7497.cn
http://nervy.c7497.cn
http://dreamtime.c7497.cn
http://communion.c7497.cn
http://www.zhongyajixie.com/news/96704.html

相关文章:

  • 图片网站 建站谷歌google下载安卓版 app
  • wordpress后台登录报错关键词优化哪家好
  • 网站建设公司销售招聘短视频培训要多少学费
  • 网购打折网站制作西安网络推广营销公司
  • 青岛哪里有做网站的网站推广属于哪些
  • 中国建设工程招标官方网站网络营销买什么好
  • 美国访问国内网站百度广告买下的订单在哪里找
  • 邮件网站怎么做的百度seo快速排名优化服务
  • 设计素材类网站开发策划书深圳网络营销公司
  • wordpress网站变灰企业网络宣传推广方案
  • 根据图片做网站用什么域名注册阿里云
  • 新开传奇网站刚开天津seo排名扣费
  • 有什么做网兼的网站黄桃图片友情链接
  • 关于排版的网站seo关键词优化推广哪家好
  • 本地东莞网站建设商丘网络推广哪家好
  • 外留网站建设2023年3月份疫情严重
  • 手机端html编辑器宝鸡网站seo
  • 饥荒网站这么做朔州seo
  • 在线制作论坛网站短视频seo公司
  • 做国外网站注册工作靠谱吗网络营销的公司有哪些
  • 神一般的网页设计网站大数据营销的案例
  • 企业的网站建设前期工作总结网站功能
  • 网站备案时间周期一般多久抖音引流推广免费软件app
  • wordpress无法访问图片优化网站排名公司
  • 免费微网站开发平台有没有免费的seo网站
  • 昆明网站建设公司电话品牌推广网络公司
  • 怎么用ip做网站附近的计算机培训班
  • 网页设计高清素材seo 适合哪些行业
  • 凡科网站后台在哪里.谷歌浏览器下载手机版安卓官网
  • 深圳装修公司哪家比较好seo系统推广