当整个项目结束
1、图片懒加载
借助了插件vue-lazyload
2、数据未请求到的时候,出现loading或者骨架屏
3、分页(pc端)
加载更多或者是上拉加载下来刷新
pageNum(页码) 1 pageSize 20(当页面渲染的条数)
举例:当前调数据一共38数据,这个时候有几个分页,2个
axios({
url:'',
params:{//带分页的数据一定有pageNum(页码) 1 pageSize 20(当页面渲染的条数)这两个参数
pageNum:1,
pageSize:20
}
})
.then(res=>{
//得到响应数据是20条
})
.catch(err=>{})
//点下一页再次调取接口 pageNum++(2)
//后端只剩18条,全部返回给你
4、路由懒加载
两种使用方式
1、const hotSong = ()=>import('../components/view/hotSong.vue')
2、const Search = ()=> Promise.resolve(import('@/components/view/search'))
mode:'history'
一个带#号,一个不带#(这种回答方式,过于low)
npm run build
//本地搭建一个以express为基础的node服务器
//引入express依赖
const express = require('express')
//创建一个app
const app = express()
//静态资源加载
app.use(express.static('./static'))
//get方法 node路由
app.get('/oh',(req,res)=>{
res.send('这么神奇吗')
})
app.get('/play',(req,res)=>{
res.send('刷新,优先走服务器路由,再走这个前端路由')
})
//打印信息
console.log('就问你神奇不,服务器启动了是3000端口')
//端口号
app.listen('3002')
//在www文件夹下面创建一个static文件
//把前端打包好成的dist文件夹里面的内容放置到static文件文件夹中
// 直接访问服务器地址即可前端项目
// http://localhost:3002
官网:https://www.iviewui.com/
小程序官网: https://youzan.github.io/vant-weapp/#/intro
vue移动端官网: https://youzan.github.io/vant/#/zh-CN/
vantUI基于vue的移动端开发工具
轻量、可靠的移动端 Vue 组件库
特性
60+ 高质量组件
90% 单元测试覆盖率
完善的中英文文档和示例
支持按需引入
支持主题定制
支持国际化
支持 TS
支持 SSR
安装方式: npm install vant
官网地址:https://uniapp.dcloud.io/
官网: http://mint-ui.github.io/#!/zh-cn
//拦截器是全局的
//main.js中实现的
//工作中token要求你携带在请求头中,请求头还会有哪些内容,加密信息(md5),各个端的信息(用来区分,ios、安卓、小程序、pc、移动端),密钥
//创建一个请求拦截器
axios.interceptors.request.use((config)=>{
console.log(config,'我是请求拦截')
//config.params.token = 123568
//把token存储到header中
// config.headers.token = 3567912566
return config
})
//创建一个响应拦截
axios.interceptors.response.use(response=>{
console.log(response,'拦截器的响应')
//在响应拦截中我们会全局拦截错误
//还有token失效的判断
if(response.status==-100){
router.push('/login')
return
}else{
return response.data
}
//config.js文件
//这个文件是axios的配置文件
import axios from 'axios'
//引入路由文件
import router from 'vue-router'
//设置http把axios所有属性和方法赋值
let http = axios.create()
//创建请求拦截器
http.interceptors.request.use(config=>{
//往请求头中添加token
//工作中这个token从哪里取,登录之后获取token,存到存储中,在这再获取一下
// config.headers.token = 1234567
return config
})
//创建响应拦截器
http.interceptors.response.use(response=>{
//全局拦截错误
//token失效跳转到登录
if(response.status==-100){
router.push('/login')
}
return response
})
export default http
//api.js
//这里面是共通的接口
//引入axios配置文件
import http from './config'
let baseUrl = 'http://localhost:3000'
//设置一个接口对象
let getData={}
//banner接口
getData.getBanner = (data)=>{
console.log(data,'你是谁111')
return http.get(baseUrl+'/banner',data)
}
//推荐歌单接口
getData.getSong = (data)=>{
console.log(data,'你是谁2222')
return http.get(baseUrl + '/personalized',data)
}
//暴露出这个接口对象
export default getData
//组件内
import url from '../common/api'
//banner
url.getBanner()
.then(res=>{
console.log(res,'等到banner数据')
})
.catch(err=>{
})
//推荐歌单
url.getSong({
params:{
limit:6
}
})
.then(res=>{
console.log(res,'我是接口数据')
})
.catch(err=>{
})
//路由出口区 利用keep-alive进行缓存,路由中在调用滚动行为
<!-- 用来缓存页面 -->
<keep-alive>
<!-- 控制一级路由的出口 -->
<router-view></router-view>
</keep-alive>
//滚动行为(路由)
scrollBehavior(to,from,savePosition){
if(savePosition){
return savePosition
}else{
return{
x:0,
y:0
}
}
},
activated() {
console.log("!!!!!!!!!我是activated!!!!!");
//把路由携带的id进行缓存与我下一次的id进行对比
//如果一样,啥也不干如果不一样,把之前的数据this.list 清空,再调取接口
if (localStorage.getItem("id") !== this.$route.query.id) {
//把id进行存储
localStorage.setItem("id", this.$route.query.id);
this.list = [];
//调取接口
//获取歌单详情
this.getList();
}
},
区别:
hash模式:
1.采用的是window.onhashchange事件实现。
2.可以实现前进 后退 刷新。
3.比如这个URL:http://www.zhenbang.com/#/index, hash 为#/index。
它的特点在于:hash 虽然出现URL中,但不会被包含在HTT求中,
对后端完全没有影响,因此改变hash不会重新加载页面
history模式:
1.采用的是利用了HTML5 History Interface 中新pushState() 和replaceState() 方法。
2.可以前进、后退,但是刷新有可能会出现404的报错
3.前端的url必须和实际向后端发起请求的url 一致http://www.haha.com/niu/id 。
如果后端缺少对/niu/id 的路由处理,将返回404错误。
不过这种模式要玩好,还需要后台配置支持。因为我 用是个单页客户端应用,
如果后台没有正确的配置,当用户在浏览器直接访问 http://oursite.com/user/id,这就不好看
所以呢,你要在服务端增加一个覆盖所有情况的候选 如果 URL 匹配不到任何静态资源,
则应该返回同一个 index.html 页面,这个页面就 app 依赖的页面。
1、token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。