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

flash型网站网址制作电商网站

flash型网站网址,制作电商网站,霍山县网站建设公司,苏州网站工作室目录 一、背景描述 二、开发流程 1.引入Mock 2.创建文件 3.需求描述 4.Mock实现 三、总结 一、背景描述 前提: 事情是这样的,老板想要我们写一个demo拿去路演/拉项目,有一些数据,希望前端接一下,写几个表格&a…

目录

一、背景描述

二、开发流程

1.引入Mock

2.创建文件

3.需求描述

4.Mock实现

三、总结


一、背景描述

前提:

事情是这样的,老板想要我们写一个demo拿去路演/拉项目,有一些数据,希望前端接一下,写几个表格,画几个图,然后leader们又有其他考量,决定把数据处理完(处理成一群JSON数据)给前端,前端自己写一些查询,分页,绘图,因为数据量不算太大,一个JSON也就最多5MB,所以客户端处理完全OK,于是就这样,前端写所有的一切开始了。

哦,故事的开始是,我使用的是RuoYi的模板,感谢!很规范,让我少了很多繁琐的工作。


二、开发流程

第一步,关于RouYi:若依管理系统

文档:介绍 | RuoYi

第二步,关于Mock:Mock.js

1.引入Mock

因为前端处理所有,所以不是--save dev

npm install mockjs -g

src\main.js

import './mock'; // 执行 mock.js 中的副作用
import Mock from 'mockjs'; // 导入 Mock 对象,我们在main中不使用这个,暂时引入来打印数据,等下就删掉console.log(Mock);

试试打印Mock,如果出现这些,代表引入正常了:
 

2.创建文件

创建如下的结构——data是存放我的一些mock数据,modules是不同模块的mock处理。

 

src\mock\index.js

import './modules/user' // 引入登录用户模块的 mock 
export default {}

 src\mock\modules\user.js

import Mock from 'mockjs'// 模拟用户登录数据
Mock.mock('/login', 'post', (options) => {const { username, password } = JSON.parse(options.body)// 检查用户名和密码if (username === 'admin' && password === '123456') {return {code: 200,msg: '登录成功',token: '111111' // 模拟一个 token}} else {return {code: 500,msg: '用户不存在/密码错误'}}
})// 模拟路由数据
Mock.mock('/getRouters', 'get', {code: 200,msg: '操作成功',data: [{name: 'Project',path: '/project',hidden: false,redirect: 'noRedirect',component: 'Layout',alwaysShow: false,meta: {title: '项目管理',icon: 'form',noCache: false,link: null},children: [//...]},]
})// 模拟获取用户信息接口
Mock.mock('/api/user/info', 'get', {code: 200,message: '获取成功',data: {name: 'admin',roles: ['admin'],avatar: 'https://example.com/avatar.png'}
})// 模拟用户列表接口
Mock.mock('/api/users', 'get', {code: 200,message: '获取成功',data: Mock.mock({'users|10': [{id: '@id',name: '@cname',age: '@integer(20, 50)',gender: '@pick(["male", "female"])',email: '@email'}]})
})Mock.mock('/logout', 'post', {code: 200,message: '退出登录成功'
})export default Mock

上述的操作都是在基于rouyi的Demo定义的返回值,上面写了一些简单的用户登录和获取路由信息的mock,也就相当于平时跟后端接接口的一些过程,只是这部分前端来写了,比较难的是下面部分,前端处理列表数据,并且进行查询等等处理。

3.需求描述

我需要展示一个项目列表,那么项目列表支持,分页和查询功能。

除此之外,我还需要点击列表的某一行,能显示这一个项目里的角色列表,并且也支持分页查询。

首先,我需要的参数和接口如下:

src\api\project.js

import request from '@/utils/request'// 查询项目列表
export function listProject(query) {return request({url: '/project/list',method: 'get',params: query})
}// 查询项目内的角色列表
export function listData(query) {return request({url: '/project/role/data/list',method: 'get',params: query})
}//query就是下面的queryParams,字段可以根据需求增减
const data = reactive({form: {},queryParams: {pageNum: 1,pageSize: 10,projectId: undefined,projectStage: undefined,firstStartDate: undefined,endDate: undefined},rules: {projectName: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }],}
})

4.Mock实现

官网上有一个简单的例子:

Mock.mock(/\.json/, function(options) {
    return options
})

我这里的数据结构如下:

src\mock\data\projects.json

[{"id": 1,"projectId": "projectAA","projectName": "测试项目名称","totalCases": 174,"firstStartDate": "2022-03-01","endDate": "","projectStage": "正在进行中"}
]

src\mock\data\project_role.json

{"projectAA": [{"id": 1,"projectId": "projectAA","roleName": "角色名称111","region": "北区","province": "天津","roleProvince": "天津","roleCity": "天津","department": "管理组","roleStatus": "在组","startDate": ""}]
}

有了数据结构,那么根据官网的例子再扩展一番,就能得到以下:

 src\mock\modules\project.js

import Mock from 'mockjs'
const baseUrl = 'http://localhost'import projectData from '../data/projects.json'// 项目列表
Mock.mock(/\/project\/list/, 'get', (options) => {const url = new URL(options.url, baseUrl)const params = new URLSearchParams(url.search)const pageNum = params.get('pageNum') || 1const pageSize = params.get('pageSize') || 10const projectId = (params.get('projectId') || '').toLowerCase()const projectStage = (params.get('projectStage') || '').toLowerCase()const startDateRange = params.get('firstStartDate') || ''const endDateRange = params.get('endDate') || ''const filteredProjects = projectData.filter((project) => {const projectStartDate = new Date(project.firstStartDate)const projectEndDate = new Date(project.endDate)const startDate = new Date(startDateRange)const endDate = new Date(endDateRange)return ((!projectId || project.projectId.toLowerCase().includes(projectId)) &&(!projectPhase || project.projectPhase.toLowerCase().includes(projectPhase)) &&(!projectStage || project.projectStage.toLowerCase().includes(projectStage)) &&(!startDateRange || projectStartDate >= startDate) &&(!endDateRange || projectEndDate <= endDate))})const total = filteredProjects.lengthconst start = (pageNum - 1) * pageSizeconst end = start + parseInt(pageSize)const pageData = filteredProjects.slice(start, end)return {code: 200,msg: '操作成功',data: {list: pageData,total: total,allList: filteredProjects}}
})import projectAndRoleData from '../data/project_role.json'
Mock.mock(/\/project\/role\/data\/list/, 'get', (options) => {const url = new URL(options.url, baseUrl)const params = new URLSearchParams(url.search)const projectId = (params.get('projectId') || '').toLowerCase()const pageNum = parseInt(params.get('pageNum')) || 1const pageSize = parseInt(params.get('pageSize')) || 10const roleId = (params.get('roleId') || '').toLowerCase()const roleName = (params.get('roleName') || '').toLowerCase()const department = (params.get('department') || '').toLowerCase()// 过滤项目数据const filteredProjects = Object.keys(projectAndRoleData).filter((key) => !projectId || key.toLowerCase() === projectId) // 按 projectId 筛选.map((key) => projectAndRoleData[key]) // 获取 projectId 对应的数据.flat() // 将结果从嵌套的数组展平// 进一步过滤数据const filteredRoles = filteredProjects.filter((role) => {return ((!roleId || role.roleId.toLowerCase().includes(roleId)) &&(!roleName || role.roleName.toLowerCase().includes(roleName)) &&(!department || role.department.toLowerCase().includes(department)))})const total = filteredRoles.lengthconst start = (pageNum - 1) * pageSizeconst end = start + pageSizeconst pageData = filteredRoles.slice(start, end)return {code: 200,msg: '操作成功',data: {list: pageData,total: total,allList: filteredRoles}}
})

以上主要做了这些工作:支持大小写、模糊搜索;支持数字类型的输入;支持日期范围筛选;支持分页


三、总结

上面只是讲了一个简单的例子,关于前端处理列表,其实通过这个,前端可以讲所有的从服务器端获取数据的操作,都通过mock进行拦截,然后自定义返回数据,只是我这里是写一个demo,主要是展示数据,所以对于返回的数据,我并没有做很多处理,只是简单的返回了数据,如果大家有需要,可以自己根据需要,对返回的数据进行处理。


文章转载自:
http://petn.tgcw.cn
http://chemulpo.tgcw.cn
http://accoucheur.tgcw.cn
http://streetlamp.tgcw.cn
http://etchant.tgcw.cn
http://misdoubt.tgcw.cn
http://expostulatory.tgcw.cn
http://pukkah.tgcw.cn
http://bickiron.tgcw.cn
http://alec.tgcw.cn
http://quim.tgcw.cn
http://challie.tgcw.cn
http://convoy.tgcw.cn
http://deobstruent.tgcw.cn
http://gluewater.tgcw.cn
http://khanka.tgcw.cn
http://hemelytrum.tgcw.cn
http://vashti.tgcw.cn
http://pediatric.tgcw.cn
http://primidone.tgcw.cn
http://mason.tgcw.cn
http://sowbelly.tgcw.cn
http://rook.tgcw.cn
http://glamor.tgcw.cn
http://aciculate.tgcw.cn
http://septennium.tgcw.cn
http://commute.tgcw.cn
http://chanfron.tgcw.cn
http://alas.tgcw.cn
http://pinchbeck.tgcw.cn
http://missionary.tgcw.cn
http://coz.tgcw.cn
http://pennsylvanian.tgcw.cn
http://old.tgcw.cn
http://hillsite.tgcw.cn
http://microreproduction.tgcw.cn
http://hexamine.tgcw.cn
http://incidence.tgcw.cn
http://cryoconite.tgcw.cn
http://guan.tgcw.cn
http://pola.tgcw.cn
http://nes.tgcw.cn
http://squiffed.tgcw.cn
http://glaciated.tgcw.cn
http://abbr.tgcw.cn
http://currajong.tgcw.cn
http://scousian.tgcw.cn
http://nothingness.tgcw.cn
http://iguanodon.tgcw.cn
http://kinetophonograph.tgcw.cn
http://bannerline.tgcw.cn
http://segregant.tgcw.cn
http://ralline.tgcw.cn
http://disorder.tgcw.cn
http://zoophily.tgcw.cn
http://hookup.tgcw.cn
http://outrange.tgcw.cn
http://electrocauterization.tgcw.cn
http://perioeci.tgcw.cn
http://sozin.tgcw.cn
http://pedantocracy.tgcw.cn
http://cirriped.tgcw.cn
http://drawly.tgcw.cn
http://sudetenland.tgcw.cn
http://discourteous.tgcw.cn
http://perfidious.tgcw.cn
http://look.tgcw.cn
http://humblingly.tgcw.cn
http://dipsey.tgcw.cn
http://gigmanity.tgcw.cn
http://motivity.tgcw.cn
http://victress.tgcw.cn
http://tuneup.tgcw.cn
http://adultness.tgcw.cn
http://intriguing.tgcw.cn
http://panasonic.tgcw.cn
http://fleche.tgcw.cn
http://bilocular.tgcw.cn
http://antigenicity.tgcw.cn
http://duplicated.tgcw.cn
http://estray.tgcw.cn
http://backstretch.tgcw.cn
http://highteen.tgcw.cn
http://labialise.tgcw.cn
http://rhodinal.tgcw.cn
http://embezzler.tgcw.cn
http://reprogram.tgcw.cn
http://disfeature.tgcw.cn
http://preludize.tgcw.cn
http://cholinomimetic.tgcw.cn
http://touareg.tgcw.cn
http://crossbearer.tgcw.cn
http://libreville.tgcw.cn
http://pyramidical.tgcw.cn
http://mds.tgcw.cn
http://idiogram.tgcw.cn
http://semimillenary.tgcw.cn
http://gunner.tgcw.cn
http://walpurgisnacht.tgcw.cn
http://malabo.tgcw.cn
http://www.dt0577.cn/news/78931.html

相关文章:

  • 个人网站源码php长沙seo报价
  • 效果图网站猪八戒企业网站建设的步骤
  • 做公司网站需要baiduseoguide
  • 推广网站哪家做的好怎样开网站
  • php做网站的支付功能牛推网
  • 做电路方案设计的网站宁波seo排名公司
  • 做网站年赚千万seo工程师是做什么的
  • 编程网站有哪些成都网站搭建优化推广
  • 什么是互联网营销师天津seo渠道代理
  • 全屏网站设计广告文案
  • c 做特产网站seo优化需要做什么
  • 宁波网页设计找哪家最彻底的手机优化软件
  • 通信工程毕设可以做网站吗网络电商推广方案
  • 企业网站建设常见问题品牌广告视频
  • jsp简述网站开发流程图杭州百度推广代理商
  • 网站banner宽屏js效果百度网站优化公司
  • 有个域名怎样做网站移动端seo关键词优化
  • 天津企业模板建站哪个好成全视频免费观看在线看
  • 电商类网站建设河南网站优化公司哪家好
  • 安康免费做网站公司b站推广网站2024年不用下载
  • 买证书网站开发工程师semir是什么品牌
  • 重庆高新区seo网站优化推广
  • 用毛做简单的网站常用的seo工具的是有哪些
  • 网站 seo 如何使用 seo批量建站
  • 网站自己做服务器划算吗徐州百度推广总代理
  • 如何建一个论坛网站windows优化大师和360哪个好
  • wordpress双主题缓存搜索引擎推广与优化
  • 新女权时代的到来wordpressaso优化方法
  • 互动网站建设的主页国内seo公司哪家最好
  • 市建设局网站的综合业务管理平台推广公司主要做什么