欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

axios 和vue

程序员文章站 2022-03-13 12:51:42
...

axios

  • Promise
  1. //回调地狱
  2. ajax.get('url',function (data){
  3. ajax.get('url?id=data.id',function (){
  4. ......
  5. })
  6. })
  7. //Promise
  8. new Promise((resolve,reject)=>{
  9. console.log('this is aaaaa');//
  10. // resolve 和reject 只执行一个,谁在前执行谁
  11. resolve('###############');// 传到then
  12. reject('@@@@@@@@@@@@@@@@@');// 如果有错误跳转到catch执行
  13. }).then(res=>{
  14. console.log('this is bbbb');
  15. console.log(res); //获取resolve传过来的参数
  16. console.log('11111111');//本线程 可以继续执行
  17. return new Promise((resolve,reject) =>{
  18. console.log('+++++++++++++')
  19. setTimeout(()=>{
  20. resolve('hello')
  21. },2000)
  22. } )
  23. }).then(res=>{
  24. console.log('this is ***********');// 2s后执行
  25. console.log(res);// 2s后执行
  26. }).catch(err=>{
  27. console.log('this is cccc');
  28. console.log(err);// 打印reject传值
  29. });
  30. // Promise.all 多个请求一起返回参数
  31. Promise.all([
  32. new Promise((resolve, reject)=>{
  33. setTimeout(()=>{
  34. resolve('这是第一个请求');
  35. }, 1000)
  36. }),
  37. new Promise((resolve, reject)=>{
  38. setTimeout(()=>{
  39. resolve('这是第二个请求');
  40. }, 1000)
  41. })
  42. ]).then(res=>{
  43. console.log(res);//['这是第一个请求', '这是第二个请求']
  44. });
  • axios入门
  1. //引入axios
  2. <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js"></script>
  3. axios({
  4. url:'https://api.shop.eduwork.cn/api/index',
  5. method:'get',
  6. params:{
  7. name:'username',
  8. }
  9. }).then(res=>{
  10. console.log(res);
  11. }).catch(err=>{
  12. console.log(err);
  13. })

axios 和vue

  • webpack 方式
  1. //1、安装webpack及webpack-cli
  2. npm install webpack webpack-cli webpack-dev-server -D
  3. //2、安装html 插件
  4. npm i html-webpack-plugin -D
  5. //引入插件:
  6. const HtmlWebpackPlugin = require('html-webpack-plugin');
  7. //使用插件:
  8. new HtmlWebpackPlugin({
  9. // 复制 './src/index.html'文件, 并自动引入打包输出的所有资源(JS/CSS)
  10. template: "./src/index.html",
  11. // 默认是index.html名称,通过filename设置输出文件名称
  12. // filename: "demo.html"
  13. })
  14. //3、 创建目录src 并创建文件index.html 和index.js
  15. //根目录创建webpack.config.js
  16. const HtmlWebpackPlugin = require('html-webpack-plugin');
  17. module.exports={
  18. entry: './src/index.js',
  19. plugins: [
  20. new HtmlWebpackPlugin({
  21. template: "./src/index.html"
  22. })
  23. ],
  24. mode:'development'
  25. }
  26. //打包
  27. webpack
  28. //开启服务器配置
  29. webpack serve
  30. // 4、在index.js做开发
  31. import axios from "axios";//引入axios
  32. axios({
  33. url:'https://api.shop.eduwork.cn/api/index',
  34. method:'get',
  35. params: {
  36. page:2,
  37. sales:1
  38. }
  39. }).then(res=>{
  40. console.log(res);
  41. }).catch(err=>{
  42. console.log(err);
  43. });
  44. //post方式
  45. axios({
  46. method:'post',
  47. url:'http://localhost/axios/api.php',
  48. headers: {
  49. 'content-type': 'application/x-www-form-urlencoded'
  50. },
  51. data:{
  52. name:'username',
  53. age:'30',
  54. sex:'aaa'
  55. }
  56. }).then(res=>{
  57. console.log(res);
  58. });
  59. //get请求
  60. axios.get('https://api.shop.eduwork.cn/api/index',{params:{
  61. page:2,
  62. sales:1
  63. }});
  64. //更多请求方式
  65. axios.request(config)
  66. axios.get(url[, config])
  67. axios.delete(url[, config])
  68. axios.head(url[, config])
  69. axios.post(url[, data[, config]])
  70. axios.put(url[, data[, config]])
  71. axios.patch(url[, data[, config]])
  72. //axios.all() 和 promise.all() 方法是一个道理
  73. axios.all([
  74. axios.get('https://api.shop.eduwork.cn/api/index',{params:{
  75. page:2,
  76. // sales:1
  77. }}),
  78. axios.get('https://api.shop.eduwork.cn/api/goods',{params:{
  79. page:2,
  80. // sales:1
  81. }})
  82. ]).then(res=>{
  83. console.log(res);//['这是第一个请求', '这是第二个请求']
  84. });

axios 和vue

  • axios的全局配置方案
  1. axios.defaults.baseURL="https://api.shop.eduwork.cn";
  2. axios.defaults.timeout=5000;
  3. axios.defaults.headers.post['content-type']='application/x-www-form-urlencoded';
  4. axios.get('/api/index',{params:{
  5. page:2,
  6. // sales:1
  7. }}).then(res=>{
  8. console.log(res);
  9. }).catch(err=>{
  10. console.log(err);
  11. });
  12. //create创建一个新的实例对象
  13. const inurl=axios.create({
  14. url:'https://api2.shop.eduwork.cn',
  15. timeout:3000,
  16. // method;'post'
  17. });
  18. //即可调用方法,和axios实例同
  19. inurl.get('/api/goods',{params:{
  20. page:2,
  21. // sales:1
  22. }}).then(res=>{
  23. console.log(res);
  24. }).catch(err=>{
  25. console.log(err);
  26. });
  • axios拦截器
  1. //为每个请求都带上的参数,比如token,时间戳等。
  2. ///对返回的状态进行判断,比如token是否过期
  3. // 创建全局拦截器
  4. // request请求
  5. axios.interceptors.request.use(
  6. config=>{
  7. console.log('######');
  8. //每次请求都会调用这个方法
  9. },
  10. err=>{
  11. return Promise.error(error);
  12. }
  13. )
  14. //response 返回
  15. axios.interceptors.response.use(
  16. config=>{
  17. // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据
  18. // 否则的话抛出错误
  19. if (response.status === 200) {
  20. return Promise.resolve(response);
  21. } else {
  22. return Promise.reject(response);
  23. }
  24. },
  25. err=>{
  26. if (error.response.status) {
  27. return Promise.reject(error.response);
  28. }
  29. }
  30. )

vue

  • 认识vue

Vue 的两核心:

响应式的数据绑定:当数据发生改变,视图可以自动更新,可以不用关心 dom 操 作,而专心数据操作

可组合的视图组件:把视图按照功能切分成若干基本单元,组件可以一级一级组合 整个应用形成倒置组件树,可维护,可重用,可测试

  • 开发初体验
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport"
  6. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <title>Vue体验</title>
  9. <!-- 1、通过静态CDN引入Vue-->
  10. <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.2.0-beta.7/vue.global.js"></script>
  11. </head>
  12. <body>
  13. <div id="app">
  14. {{msg}}
  15. <hr />
  16. {{list}}
  17. <hr />
  18. {{one()}}
  19. </div>
  20. <script>
  21. //创建一个Vue
  22. const app= Vue.createApp({
  23. data(){
  24. return{
  25. msg:'this is test',
  26. list:['aaa','bbb']
  27. }
  28. },
  29. methods: {
  30. one(){
  31. console.log('************')
  32. console.log(this.msg) //调用msg
  33. this.two() //调用two方法
  34. return '1111111111'
  35. },
  36. two(){
  37. console.log('@@@@@@@@@@@@@@@@@@');
  38. }
  39. }
  40. }).mount('#app');
  41. app.msg='hello';// 显示就会变成 hello 数据发生改变 显示立即改变
  42. app.one();//也可以在这里调用
  43. </script>
  44. </body>
  45. </html>

axios 和vue

  • vue 脚手架
  1. //默认已经帮我们搭建好了一套利用 Webpack 管理 vue 的项目结构
  2. //命令安装:npm install -g @vue/cli
  3. //检查版本:vue --version
  4. //创建项目:vue create 项目名称
  5. //配置文件详细 vue.config.js
  6. //1、创建项目
  7. vue create demo //创建demo项目
  8. //2、选择vue2或者vue3 选择 Manually select features
  9. //3、空格选中 选择如下三个
  10. Choose Vue version
  11. Babel
  12. CSS Pre-processors
  13. //4、Sass/SCSS (with dart-sass)
  14. //5、In package.json
  15. npm run bulid //项目上线
  16. npm run serve //开启监听端口
  17. { createApp } 相当于 vue.createApp
  18. //vue.config.js
  19. const webpack = require('webpack'); module.exports = { outputDir:'build', configureWebpack:{ plugins:[ new webpack.BannerPlugin({ banner:'学习猿地-wwww.lmonkey.com-成就自己的只需一套精品' }) ] } }