关于本站
“最难不过坚持”
本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作
有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339
2655
39
分类目录
最新评论
- https://jueru.net/
-
- :weixiao:
-
- :shuijiao: :weiqu: :zhenbang: :leng:
-
- :yiwen: :yiwen: :yiwen: :yiwen:
-
- 这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
-
文章标签更多
打开边栏(ESC)
关闭边栏(ESC)
vue尚品汇-轮播图,mockjs模拟数据
mockjs官网:http://mockjs.com/
一,mockjs模拟数据
1,mockjs安装(加上-D,开发环境需要,生产环境不需要)
npm i mockjs -D
2,在src文件夹下建立mock文件夹
3,准备模拟的数据
把mock数据需要的图片放置于public文件夹中!
scr/mock 文件夹下的 banner.json
[ { "id": "1", "imgUrl": "/images/banner1.jpg" }, { "id": "2", "imgUrl": "/images/banner2.jpg" }, { "id": "3", "imgUrl": "/images/banner3.jpg" }, { "id": "4", "imgUrl": "/images/banner4.jpg" } ]4,mockServe.js文件
// 先引入mockjs模块 import Mock from 'mockjs' // 将JSON数据引入进来 [JSON数据格式根本没有对外暴露,但是可以引入] // webpack默认对外暴露的:图片、JSON数据格式 import banner from './banner.json' import floor from './floor.json' /* Mock数据 - 第一个参数:请求地址 - 第二个参数:请求数据 */ Mock.mock('/mock/banner', {code:200,data:banner}) // 模拟首页大的轮播图的数据 Mock.mock('/mock/floor', {code:200, data:floor}) //
5,回到入口文件(根目录src下的main.js),引入mockserve.js
import '@/mock/mockServe'
二,使用axios进行二次封装
1,在src的文件下的api文件夹下创建mockAjax.js文件 进行二次封装,封装以后需暴露
//对axios进行二次封装,将刚才下载好的axios导入进来 import axios from "axios"; import nprogress from "nprogress"; import 'nprogress/nprogress.css' //1.利用axios对象的方法create,去创建一个axios实例 //2.requests就是axios,只不过稍微配置一下 const requests = axios.create({ //配置对象 //基础路径,发请求的时候,路径当中会出现api,不用你手写 baseURL:'/mock', //请求时间超过5秒 timeout:5000 }); //请求拦截器:在发请求之前,请求拦截器可以检测到,可以在请求发出去之前做一些事情 requests.interceptors.request.use((config)=>{ // 开启进度条 nprogress.start() //config是个配置对象,对象里面有一个属性很重要,headers请求头 return config; }); //响应拦截器:包含两个函数(一个是成功返回的函数,一个是失败的返回的函数) requests.interceptors.response.use((res)=>{ // 关闭进度条 nprogress.done() //成功的回调函数:服务器响应数据回来以后,响应拦截器可以检测到,可以做一些事情。 return res.data; },(error)=>{ return promise.reject(new Error('faile')) }); //对外暴露requests(axios的二次封装) export default requests;
2,在src文件夹下的api文件夹下创建index.js文件用于书写获取mock数据的方法
//导入刚才写好的axios二次封装的requests import requests from "./ajax"; import mockRequests from "./mockAjax" //三级联动接口 ///api/product/getBaseCategoryList get 无参数 //发请求:axios发请求返回结果promise对象 export const reqCategoryList = ()=>{ //由于前面配置了基础路径,所以不用加/api return requests({url:'/product/getBaseCategoryList',method:'get'}) } // 获取轮播图,mockjs模拟数据 export const reqBannerList = ()=>{ // return mockRequests.get('/banner'); return mockRequests({url:'/banner',method:'get'}) }三,请求数据
1,在ListContainer组件中,派发actions:通过Vuex发起ajax请求,将数据存储在仓库中
import {mapState} from 'vuex' export default { name:'ListContainer', mounted(){ // 派发actions:通过Vuex发起ajax请求,将数据存储在仓库中 this.$store.dispatch('getBannerList') }, computed:{ ...mapState({ bannerList:(state)=>{ return state.home.bannerList } }) }, }2,在vuex仓库store/home/index.js书写获取数据的三连环
import {reqCategoryList,reqBannerList} from '@/api' const state = { categoryList:[], bannerList:[] } const mutations = { CATEGORYLIST(state,categoryList){ state.categoryList = categoryList }, GETBANNERLIST(state,bannerList){ state.bannerList = bannerList } } const actions = { // 产品分类 async categoryList({commit}){ let result = await reqCategoryList() if(result.code == 200){ commit('CATEGORYLIST',result.data) } }, // 轮播图 async getBannerList({commit}){ let result = await reqBannerList() if(result.code == 200){ commit('GETBANNERLIST',result.data) } } } const getters = {} export default { state, mutations, actions, getters }
四,轮播图实现
1,安装swiper
nmp i swiper@5
2,引入swiper
//引入Swiper import Swiper from 'swiper' //引入Swiper样式-多个地方用到swiper,swiper.css可以放到main.js中引入 import 'swiper/css/swiper.css'3,初始化swiper实例
watch: { // 在new swiper实例之前, 页面中结构必须已经存在 bannerList(newValue, oldValue) { this.$nextTick(() => { // 当执行这个回调的时候: 保证服务器的数据一定回来了(这时候v-for已经执行完毕了) var mySwiper = new Swiper(document.querySelector(".swiper-container"), { loop: true, // 循环模式选项 // 如果需要分页器 pagination: { el: '.swiper-pagination', clickable: true }, // 如果需要前进后退按钮 navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, }) }) } }
赏
相关推荐
接口返回request failed with status code 500错误
接口返回request failed with status code 500错误
登录界面,验证账号密码成功,但是返回500错误
可能原因:linux服务器,用tp5搭建的后台及接口,会生成一部分缓存文件,但是linux默认没有权限创建数据,所以,只要在缓存文件夹runtime添加写的权限即可
解决errors and 0 warnings potentially fixable with the `--fix` option.问题
解决errors and 0 warnings potentially fixable with the `--fix` option.问题
项目正常运行,就是有这个提示
找到.eslintrc.js注释掉// 'eslint:recommended'
评论加载中...
后一篇: vue尚品汇-楼层Floor组件