最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue-cli項(xiàng)目代理proxyTable配置exclude的方法

 更新時(shí)間:2018年09月20日 08:42:36   作者:zhaolandelong  
今天小編就為大家分享一篇vue-cli項(xiàng)目代理proxyTable配置exclude的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

問(wèn)題描述

如果是前后端分離的項(xiàng)目,本地開發(fā)環(huán)境需要訪問(wèn)mock,或者在調(diào)試時(shí)直接訪問(wèn)線上的接口,這時(shí)候就會(huì)有接口跨域的問(wèn)題(mock不存在跨域問(wèn)題,但是用這個(gè)方法配置起來(lái)方便,姑且算是一個(gè)問(wèn)題)。以vue-cli生成的項(xiàng)目為例,需要配置 config/index.js 中的 proxyTable 屬性,大概如下:

 proxyTable: {
 '/pc/my/list/': {
 target: 'http://10.132.20.14:8083/mockjsdata/66',
 pathRewrite: {
  '^/pc/my/list/': '/pc/my/list/'
 }
 }
 },

配置規(guī)則在網(wǎng)上搜proxyTable就能搜到,這里不做贅述。今天要說(shuō)的是另一個(gè)問(wèn)題,請(qǐng)見下面的代碼:

 proxyTable: {
 '/m/userinfo/': {
 target: 'http://10.132.20.14:8083',
 pathRewrite: {
  '^/m/userinfo/': '/mockjsdata/66/m/userinfo/'
 }
 },
 '/m/my/ajax/list/': {
 target: 'http://10.132.20.14:8083',
 pathRewrite: {
  '^/m/my/ajax/list/': '/mockjsdata/66/m/my/ajax/list/'
 }
 },
 '/m/tkpreinterview':{
 target: 'http://10.132.20.14:8083',
 pathRewrite: {
  '^/m/tkpreinterview': '/mockjsdata/66/m/tkpreinterview'
 }
 },
 '/m/preinterview':{
 target: 'http://10.132.20.14:8083',
 pathRewrite: {
  '^/m/preinterview': '/mockjsdata/66/m/preinterview'
 }
 },
 '/m/interview':{
 target: 'http://10.132.20.14:8083',
 pathRewrite: {
  '^/m/interview': '/mockjsdata/66/m/interview'
 }
 },
 '/m/checkLogin':{
 target: 'http://10.132.20.14:8083',
 pathRewrite: {
  '^/m/checkLogin': '/mockjsdata/66/m/checkLogin'
 }
 },
 '/m/my/ajax/vdetail/':{
 target: 'http://10.132.20.14:8083',
 pathRewrite: {
  '^/m/my/ajax/vdetail/': '/mockjsdata/66/m/my/ajax/vdetail/'
 }
 }
 },

明明一句(見下)就能解決的問(wèn)題,為什么要寫成這個(gè)樣子?難道就是因?yàn)槭褂谜邲](méi)有學(xué)好?

 proxyTable:{
 '/m':{
 target: 'http://10.132.20.14:8083/mockjsdata/66'
 }
 },

事情當(dāng)然沒(méi)這么簡(jiǎn)單。原因是,后端在設(shè)計(jì)接口時(shí),沒(méi)有把a(bǔ)pi和模板分開,都在一個(gè)命名空間下(比如,首頁(yè)的地址是 /m/index)。這時(shí)候,如果按照上面那樣配置,連模板接口也會(huì)被代理掉,所以只能一個(gè)一個(gè)的寫,實(shí)在是前端在給后端背鍋??!那么有沒(méi)有更優(yōu)雅的辦法呢?比如exclude之類的?

我們發(fā)現(xiàn),實(shí)現(xiàn)代理功能的插件是http-proxy-middleware,在文檔中我們發(fā)現(xiàn)了這一段:

proxy('**', {...}) matches any path, all requests will be proxied.
proxy('**/*.html', {...}) matches any path which ends with .html
proxy('/*.html', {...}) matches paths directly under path-absolute
proxy('/api/**/*.html', {...}) matches requests ending with .html in the path of /api
proxy(['/api/**', '/ajax/**'], {...}) combine multiple patterns
proxy(['/api/**', '!**/bad.json'], {...}) exclusion

注意最后一條,此插件是支持exclude的。以我們上面的例子來(lái)說(shuō),只要key的值寫成類似 ['/m/**' , '!/m/index'] 這樣的就行了。可是!你見過(guò)object的key是個(gè)array的嗎?好吧,不啰嗦,直接看源碼。

說(shuō)明一下,我們的項(xiàng)目,之前用的vue-cli版本是2.8.2,我自己實(shí)驗(yàn)的版本是2.9.1,這兩個(gè)版本是不一樣的,咱一個(gè)一個(gè)說(shuō)。

先說(shuō)2.9.1版本生成的,此版本沒(méi)有了 build/dev-server.js 以及類似的文件,直接用了 webpack-dev-server。在看過(guò)源碼后,我發(fā)現(xiàn),webpack-dev-server的proxy接收參數(shù)其實(shí)是個(gè)數(shù)組,并且里面有一個(gè)context值,就是來(lái)傳遞http-proxy-middleware第一個(gè)參數(shù)的。所以,我們不用傻傻的按照vue-cli給的不敢動(dòng),只要改成下面的就行了

 proxyTable: [{
 context: ['/m/**','!/m/index'],
 target: 'http://10.132.20.14:8083/mockjsdata/66'
 }],

OK,這個(gè)版本是比較簡(jiǎn)單的,下面說(shuō)一下2.8.2版本的

這個(gè)版本有個(gè) build/dev-server.js 文件,大概在 50 行左右,有類似下面的代碼

// proxy api requests
Object.keys(proxyTable).forEach(function (context) {
 var options = proxyTable[context]
 if (typeof options === 'string') {
 options = { target: options }
 }
 app.use(proxyMiddleware(options.filter || context, options))
})

可以看到,這里的context只考慮到了string的情況,沒(méi)辦法,我們自己來(lái)動(dòng)手改一下吧,加個(gè)方法

// proxy api requests
Object.keys(proxyTable).forEach(function (context) {
 var options = proxyTable[context]
 if (typeof options === 'string') {
 options = { target: options }
 }
 app.use(proxyMiddleware(options.filter || context.split(','), options))//context -> context.split(',')
})

這樣你傳進(jìn)來(lái)的key都會(huì)變成數(shù)組。然后在proxyTable的配置里只要寫成如下即可

 proxyTable:{
 'm/**,!/m/index':{
 target: 'http://10.132.20.14:8083/mockjsdata/66'
 }
 },

可以了,現(xiàn)在兩個(gè)版本都搞定了,強(qiáng)迫癥的心好累,我去歇會(huì)。。?;仡^再優(yōu)化吧

以上這篇vue-cli項(xiàng)目代理proxyTable配置exclude的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue3 定義使用全局變量的示例詳解

    vue3 定義使用全局變量的示例詳解

    全局變量(函數(shù)等)可以在任意組件內(nèi)訪問(wèn),可以當(dāng)組件間的傳值使用,這篇文章給大家介紹vue3 定義使用全局變量的示例詳解,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 如何正確理解vue中的key詳解

    如何正確理解vue中的key詳解

    這篇文章主要給大家介紹了關(guān)于如何正確理解vue中key的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Element-UI使用el-row高度設(shè)置方式

    Element-UI使用el-row高度設(shè)置方式

    這篇文章主要介紹了Element-UI使用el-row高度設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue 路由懶加載中給 Webpack Chunks 命名的方法

    vue 路由懶加載中給 Webpack Chunks 命名的方法

    這篇文章主要介紹了在 vue 路由懶加載中給 Webpack Chunks 命名的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • VueRouter導(dǎo)航守衛(wèi)用法詳解

    VueRouter導(dǎo)航守衛(wèi)用法詳解

    這篇文章主要介紹了VueRouter導(dǎo)航守衛(wèi)的詳細(xì)用法以及分類介紹,有興趣的朋友學(xué)習(xí)參考下吧。
    2017-12-12
  • vue+elementUI的select下拉框回顯為數(shù)字問(wèn)題

    vue+elementUI的select下拉框回顯為數(shù)字問(wèn)題

    這篇文章主要介紹了vue+elementUI的select下拉框回顯為數(shù)字問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 圖文詳解vue框架安裝步驟

    圖文詳解vue框架安裝步驟

    我們?cè)诒酒獌?nèi)容里給大家整理了關(guān)于vue框架安裝的步驟以及需要注意的地方,有需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • Vue.js學(xué)習(xí)示例分享

    Vue.js學(xué)習(xí)示例分享

    本篇和大家分享的是學(xué)習(xí)Vuejs的總結(jié)和調(diào)用webapi的一個(gè)小示例;具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • Nuxt的路由配置和參數(shù)傳遞方式

    Nuxt的路由配置和參數(shù)傳遞方式

    這篇文章主要介紹了Nuxt的路由配置和參數(shù)傳遞方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Vue關(guān)于Element UI中的文本域換行問(wèn)題

    Vue關(guān)于Element UI中的文本域換行問(wèn)題

    這篇文章主要介紹了Vue關(guān)于Element UI中的文本域換行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評(píng)論

温宿县| 大同市| 伊川县| 花莲县| 永川市| 洛南县| 南投县| 屯昌县| 璧山县| 汶上县| 清徐县| 都江堰市| 千阳县| 宕昌县| 都安| 房产| 政和县| 光泽县| 贵阳市| 吴忠市| 莫力| 西乌珠穆沁旗| 威信县| 永安市| 乐山市| 岐山县| 龙井市| 嘉义县| 湖口县| 北流市| 岑溪市| 定州市| 喀喇沁旗| 如东县| 霍山县| 修文县| 西盟| 丹阳市| 磐石市| 抚顺县| 高邑县|