[前端笔记036]vue2之ajax配置

前言

  • 本笔记参考视频,尚硅谷:BV1Zy4y1K7SH p96 - p104

vue脚手架配置代理服务器:

  • 方法一:在vue.config.js中添加如下配置:
devServer:{
    proxy:"http://localhost:5000"
}
  • 优点:配置简单,请求资源时直接发给前端即可
  • 缺点:不能配置多个代理,不能灵活的控制请求是否走代理
  • 工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器 (优先匹配前端资源)
  • 方法二:
devServer: {
    proxy: {
      	'/api1': { // 匹配所有以 '/api1'开头的请求路径
        	target: 'http://localhost:5000',// 代理目标的基础路径
        	changeOrigin: true,
        	ws: true, //套接字,可以不写,默认true
        	pathRewrite: {'^/api1': ''}  //路径重写
      	},
      	'/api2': { // 匹配所有以 '/api2'开头的请求路径
        	target: 'http://localhost:5001',// 代理目标的基础路径
        	changeOrigin: true,
        	pathRewrite: {'^/api2': ''}
      	}
    }
}

// changeOrigin设置为true时,服务器收到的请求头中的host为:localhost:5000
// changeOrigin设置为false时,服务器收到的请求头中的host为:localhost:8080
  • 优点:可以配置多个代理,且可以灵活的控制请求是否走代理
  • 缺点:配置略微繁琐,请求资源时必须加前缀

vue-resource

  • npm i vue-resource
  • 使用import引入,use使用插件
  • 使用方式同axios,将axios改为this.$http即可
  • vue项目常用的两个Ajax库:
    1. axios:通用的Ajax请求库,官方推荐,效率高
    2. vue-resource:vue插件库,vue 1.x使用广泛,官方已不维护

插槽

  • 作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用传递方向为,父组件 > 子组件
  • 三种插槽:默认插槽、具名插槽、作用域插槽
  • 默认插槽:
父组件中:
        <Category>
           	<div>html结构1</div>
        </Category>
子组件中:
        <template>
            <div>
               	<slot>插槽默认内容...</slot>
            </div>
        </template>
  • 具名插槽:
父组件中:
        <Category>
            <template slot="center">
             	 <div>html结构1</div>
            </template>

            <template v-slot:footer>
               	<div>html结构2</div>
            </template>
        </Category>
子组件中:
        <template>
            <div>
               	<slot name="center">插槽默认内容...</slot>
                <slot name="footer">插槽默认内容...</slot>
            </div>
        </template>
  • 作用域插槽,理解:数据在组件的自身,但根据数据生成的结构需要组件的使用者来决定。(games数据在Category组件中,但使用数据所遍历出来的结构由App组件决定)
父组件中:
		<Category>
			<template scope="scopeData">
				<!-- 生成的是ul列表 -->
				<ul>
					<li v-for="g in scopeData.games" :key="g">{{g}}</li>
				</ul>
			</template>
		</Category>
		//写法二
		<Category>
			<template slot-scope="scopeData">
				<!-- 生成的是h4标题 -->
				<h4 v-for="g in scopeData.games" :key="g">{{g}}</h4>
			</template>
		</Category>
子组件中:
        <template>
            <div>
                <slot :games="games"></slot>
            </div>
        </template>
		
        <script>
            export default {
                name:'Category',
                props:['title'],
                //数据在子组件自身
                data() {
                    return {
                        games:['红色警戒','穿越火线','劲舞团','超级玛丽']
                    }
                },
            }
        </script>

你可能感兴趣的:(前端,ajax,javascript,vue.js)