Vue cli项目中的跨域配置 -> 反向代理
以请求猫眼电影数据为例
一、在组件的methods选项中配置请求数据的方法,请求数据
methods:{
getMaoyanData(){
this.$http.get(https://m.maoyan.com/ajax/movieOnInfoList,{
//请求的地址:?前面的部分
params:{
token:,
optimus_uuid: 52CBC1F0D32411EA9168D3A31F729789EDA28E18F66341B7B4C3DE262A1CB272,
optimus_risk_level: 71,
optimus_code: 10
}
}).then(res=>console.lists(res,res))
.catch(error=>Promise.reject(error))
},
},
然后就出现了跨域报错 如何在Vue cli项目中添加跨域配置呢?【webpack配置】
二、 跨域配置 -> 反向代理
vue.config.js中
//1.此文件为webpack配置文件
//2.此文件也是Node.js文件,所以使用的是Common.js规范
module.exports={
//导出一个对象
//配置项
//1.服务器配置
devServer:{
open:true,//自动开启服务
port:9000,//修改服务器端口号
hot:true,//热加载 自动刷新页面
//--------上述是cli项目后续添加的一些配置,可忽略----------
proxy:{
//标识符:配置符
//标识符选择域名后的第一个路径
//target 就是目标源[协议 + 域名 + 端口]
/ajax:{
target:https://m.maoyan.com,
changeOrgin:true//使用我们当前的服务器来代替target
//即http://localhost:9000 代替 https://m.maoyan.com
}
}
}
}
在根目录下创建名为 vue.config.js , webpack配置文件 切记:配置文件修改了,项目必须重启
三、配置完成,即可请求到数据了,接着进行后续的渲染操作
问题:发现图片路径中有个w.h,这是携带的尺寸 ,我们没有进行配置,因此图片无法在页面上显示出来,移动端这个尺寸是 ’128.180’。 只需要将图片路径字符串中的 ‘w.h’ 替换成 ’128.180’ 就可以显示出图片,但是这样作用范围只在这一个页面上 解决方案 : 需要做个过滤器,而且是全局的,这样所有的组件,所有页面都能用到
四、自定义插件
——自定义过滤器 1.创建自定义插件 路径:src/plugins/index.js
//自定义插件
export default{
//install 不能改
install(Vue){
//Vue就是构造函数
Vue.filter(imgFilter,function(val,size){
return val.replace(w.h,size)
})
}
}
2.在入口文件main.js中去引入自定义插件
//引入自定义插件 import myPlugin from ./plugins//index.js可以忽略 Vue.use(myPlugin);//注册 激活插件 与index.js文件创建联系
3.组件模板中引用自定义过滤器
<img :src=" item.img | imgFilter(128.180) " alt="">
五、配置不同端的不同尺寸
3个端(PC端、移动端、ipad端)是对应不同的尺寸, 所以需要将传入的尺寸数据写活
mounted(){
//组件挂载结束,根据判断它是哪一个端,来赋值给它不同的尺寸
const {
userAgent}=window.navigator;
if(userAgent.indexOf(iPhone)!=-1 || userAgent.indexOf(Android)!=-1){
//移动端
this.size=128.180
return
}
if(userAgent.indexOf(iPad)!=-1){
//iPad端
this.size=300.300
return
}
if(userAgent.indexOf(Windows)!=-1 || userAgent.indexOf(Mac)!=-1){
//PC端
this.size=600.600
return
}
}
