通过官方脚手架,搭建模块化、工程化、自动化开发环境
脚手架是个工具,帮程序员自动搭建项目环境(创建了一些文件夹和文件,并写了最基础的代码)。
全局安装脚手架 npm i @vue/cli -g
查看脚手架版本 vue -V
在磁盘下cmd运行 vue create 项目目录名
选择 yes
选择 default默认2.0版本
cd 项目目录名
运行项目 npm run serve
src/assets文件夹:存放静态资源(css/图片/字体文件/视频等),这些静态资源会做webpack打包处理
src/components文件夹: 所有的子组件
src/view文件夹:所有的大组件(一个大组件代表一个页面)
src/App.vue:main.js所引入的App.vue是模板(main.js里的Vue对象的模板)
src/main.js:唯一的html文件所对应的vue实例对象(根实例)
index.html:唯一的HTML文件。
单页面应用(SPA):就是整个项目只有一个html文件,首次加载时把所有的html.css.js全部加载下来。通过dom的删除和创建来完成页面的切换
模拟服务器后端的数据,前端一般用来自己生成后端测试数据,json-server就是个存储json数据的server
ps:json-server支持跨域请求
初始化项目
npm init -y
安装
npm i json-server -D
在项目根目录创建db.json并写合法json数据
启动配置
在package.json文件的scripts中添加
"server":"json-server db.json"
运行服务器
npm run server
{
"vip":[{
"username": "李茂军",
"userpass": "123666",
"id": 2
},
{
"username": "李茂军02",
"userpass": "123666",
"id": 3
},
{
"username": "李茂军03",
"userpass": "123666",
"id": 4
}]
}
json-server的各种请求
get方法获取所有的书籍数据
localhost:3000/books
get方法获取指定id的数据
localhost:3000/books/878911
get方法获取指定字段值的数据
localhost:3000/users?name=李四&age=15
post方法可以添加数据
localhost:3000/users
delete方法可以删除数据
localhost:3000/users/1
删除users 里 的 id为1 的数据
patch方法可以更新数据(更新mock数据中users下id为3的数据中的count为12)
axios(
url:"localhost:3000/users/3 "
method:"patch"
data:{ count:12}).then(res=>{})
get方法获取数据分页
localhost:3000/books?_page=1&_limit=2
_page 表示页码,第几页
_limit 表示每页的条数
向服务器发送ajax请求,拿取数据
axios
一个基于promise的第三方库,可以用在前端和后端(node.js)中
下载方式:npm install --save axios
格式
Promise axios({
url:""
method:""
params:{}地址栏携带的数据(get方式)
data:{}非地址栏携带数据(post方式)).then(res=>{})
axios的完整格式
axios({配置}).then(成功回调).catch(失败回调)
简写格式
axios.get("url",{params:{}}).then().catch()
axios.post("url",{ }).then().catch()
axios.delete("url").then().catch()
axios.patch("url",{ }).then().catch()
data是字符串的情况
axios(
{
method:'post',
url:'regSave.php',
data:'username=jzmdd&userpass=123'
})
data是URLSearchParams对象
let params = new URLSearchParams();
params.append('username', 张三疯);
params.append('userpass', '123');axios(
{
method:'post',
url:'regSave.php',
data:params
})
data是json对象(常用)
axios({
url:"/vips",
method:"post",
data:{
name:this.name,
pass:this.pass,
sex:this.sex
}
})
注意:
使用post方式,在和后端联调时,如果后端接不到数据(后端会有数据格式的要求),需要看network中的
Content-type和数据的格式;
1)如果data是字符串或者是URLSearchParams
则content-type:application/x-www-form-urlencoded
数据格式:form data
2)如果data是json对象
则content-type:application/json
数据格式:request payload
格式:
axios.all([请求1,请求2])执行所有的请求
axios.spred()执行所有的响应的回调函数
axios.all([axios.get('api/books'),axios.get('api/readers')]).then(
axios.spread(function(books,readers){
books.data
readers.data
});
);
所有axios请求的基础地址:
axios.defaults.baseURL = 'https://localhost:3000';
在src下新建一个目录,新建js文件
引入import axios from "axios";
配置 axios.defaults.baseURL = 'http://localhost:3000';
完成全局配置
请求拦截器是在请求到达后端之前,可以对配置进行修改,如url,或者在请求头携带token
axios.interceptors.request.use((config)=>{
// config.baseURL='http://localhost:3000';// 显示loading;
// isLoading = true;// console.log("请求拦截器",config);
return config;
},(err)=>{
console.log("请求拦截器出错",err);
})
给返回的数据增加公共信息
axios.interceptors.response.use((res)=>{
// console.log("响应拦截器",res);
// 隐藏loading;
// isLoading = false;return res;
},(err)=>{
console.log("响应拦截器出错",err);
})
Ajax、jQuery ajax、axios和fetch的区别?
1、Ajax: ajax:最早出现的前后端交互技术,是原生js,核心使用XMLHttpRequest对象
2、Jquery Ajax: jquery Ajax是原生ajax的封装
3、Fetch: fetch是ES6新增的原生API,Fetch是基于promise设计的。fetch不是ajax的进一步封装,而是原生js。Fetch函数就是原生js,没有使用XMLHttpRequest对象。
4、axios: axios是原生ajax的封装,基于promise对象的。Axios也可以在请求和响应阶段进行拦截。它不但可以在客户端使用,也可以在nodejs端使用。