vue antd admin怎么切換到basic分支_vue菜鳥從業記:前端如何與后端哥們進行接口聯調...

最近我的朋友王小閏進入一家新的公司,正好公司項目采用的是前后端分離架構,技術棧是王小閏非常熟悉的vue全家桶,后端用的是Java語言。在前后端開發人員碰面之后,協商確定好了前端需要的數據接口(扯那么多,其實也就是關于json數據的字段的定義),然后前后端程序猿就嗨皮地并線開發去了。前后端聯調前夕我的朋友王小閏他們這家公司做本地旅游項目的,安排到他手上的活兒是該旅游項目的webapp工程。項目動工伊始,一切都得從頭來做。在公司沒日沒夜的開發了一天之后,王小閏在沒有借助vue-cli官方提供的腳手架工具下,徒手從零開始,搭建了一套基于公司特定要求的vue項目的工程架構目錄。(關于如何從零開始搭建vue項目的腳手架工程,后面我會單獨寫一個系列)。前端項目環境搭建好之后,就正式進入了項目首頁的業務編碼工作。王小閏又沒日沒夜的敲了一天代碼之后,首頁header區域、輪播圖以及導航圖標的頁面布局和邏輯開發都實現了,此時他想調用后端數據測試下流程,但是后端程序猿還沒有將該數據的接口開發出來,沒辦法,我的朋友王小閏此時只能在本地模擬點假數據,逼格高點的說法叫mock數據。搗鼓半天,首頁的mock數據終于弄好了,如下圖所示:0e8220347d0155d058730c9fcc2e8ebe.png但是現在有一個問題讓王小閏很困惑,他的axios寫的url路徑是與后端程序猿商量好的絕對路徑(域名+請求路徑+請求參數),因為這是以后真正的請求路徑,所以我朋友王小閏又不想先寫本地相對路徑,后期再來修改,萬一后端程序猿開發的慢了,鬼知道到時候有多少接口需要修改,所以他就迷茫不知所措了。其實,仔細看看,這就是前后端分離中的mock數據和接口聯調的問題。要想弄懂其中緣由,下面讓我們分幾點來聊聊。什么是前后端接口聯調之前開發寫代碼的時候,所有的ajax數據都不是后端返回的真實數據,而是我們自己通過接口mock模擬的假數據,當前端的代碼編寫完畢,后端的接口也已經寫好之后,我們就需要把mock數據干掉,嘗試使用后端提供的數據,進行前后端的一個調試,這個過程我們就把它稱之為前后端的接口聯調。為什么要聯調本地的mock數據是王小閏自己寫的,肯定符合前端需求,但是后端接口首先需要測試通不通,還需要測試數據格式對不對,還有后端有沒有填寫足夠的數據,比如寫列表頁,前端想分頁,如果后端就寫了兩條測試數據,你咋整?所以,王小閏需要根據后端對接口的調整,不斷地來回切換url,這樣豈不是還在受后端的影響,還談什么毛線的前后端分離,名存實亡嘛!如何實現前后端接口聯調首先,我們已經知道,目前的前后端分離的架構應用分為兩種情況:1.前后端完全分離,前后端分別擁有自己的域名和服務器。2.前后端開發分離,但是部署時是一個域名和一臺服務器。雖然架構可以采用前后端分離,但是部署有可能就不一樣了,這和項目的大小,公司的情況等等都有關系了,一個百八十人用的小系統,還得兩臺服務器兩個域名,你不覺著浪費嗎?兩種不同的部署情況直接導致了前期在設計聯調方案的時候就不同了。如果你們公司的項目在部署時是兩臺服務器對應兩個域名,恭喜你,這是最nice的方案,也是聯調最舒服的方式。但是,我朋友王小閏呆的這家公司是一家剛起步的小公司,肯定是怎么節省成本怎么來,問過后端,才知道他們公司是屬于第二種情況,也就是開發時前后端分離,部署時是一個域名和一臺服務器。知道這個之后,他就明白接下來該怎么操作了。王小閏之前在項目根目錄static文件夾下新建了一個mock文件夾,里面寫了一些json文件,當我們做聯調的時候,這些mock數據就沒用了,我們要把mock數據切換成后端提供給我們的真實的數據。當我的朋友王小閏把static文件夾下的mock數據刪除之后,在運行項目,發現報錯了,瀏覽器告訴他,你訪問的mock下面的index.json文件找不到404。我們平時本地前端開發環境dev地址大多是 localhost:8080,而后臺服務器的訪問地址就有很多種情況了,比如 后端程序猿本地IP(127.0.0.1:8889),或者外網域名,當前端與后臺進行數據交互時,自然就出現跨域問題(后臺服務沒做處理情況下)。axios不支持jsonp, 所以我們就要使用http-proxy-middleware中間件做代理。現在通過在前端修改 vue-cli 的配置可解決:vue-cli中的 config/index.js 下配置 dev選項的 {proxyTable}:
proxyTable: {    '/api': {        target: '127.0.0.1:8889',  // 真實請求的地址        changeOrigin: true,  // 是否跨域        pathRewrite: {            '^/api': '/static/mock'        }    }}
如果你想在公司的vue項目中實現前后端聯調,不需要再使用類似于fiddler charles的抓包代理工具了,你只需要使用proxyTable這個配置項,把你需要請求的后端的服務器地址寫在target值里就OK了。解決完跨域問題后,接下來王小閏該想想怎么在一臺服務器一個域名下進行聯調的問題了。比較常見的做法是前端在本地修改,本地查看,測試好了以后上傳到服務器,看看線上環境可不可以,OK的話一切都好;不行就本地接著改,然后在上傳。聯調完之后,如何將前端打包的項目文件發給后端,這里也需要注意兩點:1. css、js和圖片等靜態文件這時候的靜態文件在開發階段不需要任何考慮,按照你喜歡的相對路徑或者相對于項目的根路徑的形式寫就行了,因為早晚還得交給后端。但是,需要注意:如果你采用 相對項目根路徑的書寫方式來寫你的靜態文件路徑 時,一定要先和后端商量好,將來項目部署的時候他會把你的前端整個項目放在哪里?如果不是根目錄下,你就掛了。比如:你的reset.css的路徑是 /exports/styles/common/reset.css ,后端把你前端項目放在了根目錄下的 frontEnd 文件夾下, reset.css 文件就報404了。如果后端采用的java,你需要特別注意的是, tomcat的根目錄 并不是 webapps 文件,而后端項目默認是部署在 webapps/ROOT 文件下的,所以你如果使用了相對項目根路徑的書寫方式來寫你的靜態文件路徑時,對不起又是404了。2. ajax后端數據因為現在唯一的一臺服務器還是在后端程序猿那里,所以此時你還是可以寫絕對路徑(域名+請求路徑),利用hosts文件來改變域名映射實現聯調。土哥有話說看這篇文章的童鞋,不管你是在大公司還是在小公司,都需要知道,并不是說你將dist文件打包發給后端就完事了,就不需要了解leader后面操作的點擊部署、合并分支的事兒了。基礎命令、拉取分支、構建編譯包、copy生產包到服務器、備份資料、啟動腳本、灰度發布、等等流程其實都是很有必要了解的。要不然最開始沒有這些基礎設施、基礎組件,誰來搭建+運行呢,畢竟還是需要第一批吃螃蟹的人.即使大公司,也有小團隊的,有的小團隊不一定遵循大公司那一套自動化部署教程,也有自己玩自己的輪子+工具。就算是大公司, 如果基礎架構組的工具做好了,但是沒有總監以上的大佬面向公司推廣, 這些基礎設施不一定能面向公司內部使用。基礎設施、基礎組件能夠面向公司內部大量使用,離不開公司高層領導的支撐、當然也有基礎設施團隊的辛苦開發、還需要有使用基礎組件的機遇和業務場景。總結:就像我之前文章里講過的,當你處在前后端分離的大浪潮下,做前端的要將眼光放在整個項目上,統籌全局,不要偏安一隅,待在前端的小角落里獨自玩耍。一句話,格局要放大,步子要邁開,然后才是低頭前行。- END -本號沒有留言功能動動手指轉發、在看是對我最大的鼓勵9bf63670886fb1c5b051335f42995538.png

記得把公號加星標,會第一時間收到通知。

原創不易,如果覺得有點用,希望可以隨手轉發或者”在看“,拜謝各位老鐵。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397019.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397019.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397019.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ASP.NET AntiXSS的作用

XSS跨站腳本攻擊是指用戶輸入HTML編碼對網站進行跨站攻擊。通過使用FCKeditor、FreeTextBox、Rich TextBox、Cute Editor、TinyMCE等等Html編輯器,用戶可以輸入一些危險字符,注入到網站中,形式XSS。(一般的解決辦法是使用BBCode的…

p1358

這是一道二維樹狀數組模板題。 需要注意的可能只有這些xy有可能為零。那每次輸入之后全部,相當于全部向右下角移了一位。 那就直接給代碼了呦。 using namespace std; int c[1050][1050],n,m; int i,f; int a1,b1,a2,b2,tx,ty,tk; int ans; int lowbit(int x) {retu…

java中對象的生存期_深入理解Java虛擬機-判斷對象是否存活算法與對象引用

我們知道Java中的對象一般存放在堆中,但是總不能讓這些對象一直占著內存空間,這些對象最終都會被回收并釋放內存,那么我們如何判斷對象已經成為垃圾呢?這篇文章會提出兩種算法解決這個問題。另外,本文還要談一談對象引…

大數據高效復制的處理案例分析總結

一個老客戶提出這樣的需求,希望將SQLServer中的某個表的數據快速復制到SQLite數據庫里面以便進行定期的備份處理,數據表的記錄大概有50多萬條記錄,表有100個字段左右,除了希望能夠快速做好外,效率是第一位的&#xff0…

@autowired注解注入為null_Intellij IDEA中Mybatis Mapper自動注入警告的6種解決方案

相信使用Mybaits的小伙伴們一定會經常編寫類似如下的代碼:可以看到 userMapper 下有個紅色警告。雖然代碼本身并沒有問題,能正常運行,但有個警告總歸有點惡心。本文分析原因,并列出解決該警告的幾種方案。原因眾所周知&#xff0c…

五 Python之socket網絡編程

<1>socket概念 socket通常也稱作"套接字"&#xff0c;用于描述IP地址和端口&#xff0c;是一個通信鏈的句柄&#xff0c;應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求。ocket本質上就是在2臺網絡互通的電腦之間&#xff0c;架設一個通道…

致敬2016,擁抱2017

2016年5月10號加入現在的團隊&#xff0c;到今天2016年12月31號&#xff0c;已經過去了接近8個月。這整個期間&#xff0c;我們團隊都只有我一個前端工程師&#xff0c;我從剛開始的忐忑不安、壓力極大&#xff0c;到現在基本上手&#xff0c;我們團隊做的項目雖然不大&#xf…

你如何在java中獲取線程堆_如何在Windows上獲取未在控制臺中運行的Java進程的線程和堆轉儲...

問題我有一個Java應用程序&#xff0c;我從控制臺運行&#xff0c;然后控制臺執行另一個Java進程。我想獲得該子進程的線程/堆轉儲。在Unix上&#xff0c;我可以做akill -3 但是在Windows AFAIK上獲取線程轉儲的唯一方法是在控制臺中使用Ctrl-Break。但這只會讓我轉移父進程&am…

html ie亂碼_Java 0基礎入門(初識Html)

在學習Java之前&#xff0c;我們需要了解一定的前端知識。畢竟頁面才是用戶真正看到的&#xff0c;而且也是體現Java后端邏輯結果的地方。學習HTML后&#xff0c;能夠制作界面美觀大方的靜態網站(更復雜的功能需要JavaScript腳本一起來實現)。HTML制作的網頁。所需要的Html開發…

常用自動化框架簡單的分析與介紹

目前常用的可用于APP自動化測試的框架有以下幾個&#xff1a; 1、Monkey是Android SDK自帶的測試工具&#xff0c;在測試過程中會向系統發送偽隨機的用戶事件流&#xff0c;如按鍵輸入、觸摸屏輸入、手勢輸入等)&#xff0c;實現對正在開發的應用程序進行壓力測試&#xff0c;也…

linux一步一腳印---more、less、head、tail

一、more 文件內容或輸出查看命令more 是我們最常用的工具之一&#xff0c;最常用的就是顯示輸出的內容&#xff0c;然后根據窗口的大小進行分頁顯示&#xff0c;然后還能提示文件的百分比&#xff1b; [rootlocalhost ~]# more /etc/profile 1、more 的語法、參數和命令&#…

單片機檢測stc沒反應_我為什么不用STC單片機

寫在2019.10.27這屬于自己打自己臉&#xff0c;不過&#xff0c;我突然想試試 STC15W108.理由可能有點操蛋&#xff0c;因為STM8S沒有 DFN8這樣 3x3的封裝&#xff0c;而PIC的仿真器太貴。我最后感興趣的一個STC型號是 STC15F的8腳系列&#xff0c;那是在2010年&#xff0c;然而…

commons-pool

commons-pool組件是使用對象池時都要用到的。他的作用主要是管理對象池&#xff0c; 當我們要用這個組件時&#xff08;比如redis要用到時&#xff09;&#xff0c;只需要實現它的部分接口&#xff0c;比如PooledObjectFactory接口&#xff0c;實現它的創建對象&#xff0c;銷毀…

JAVA中CyclLink怎么用_Java多線程基本使用一

1 多線程--初步【1進程比如&#xff1a;QQ、迅雷、360、飛秋...2線程的概念3線程的意義&#xff1a;4.Java程序的運行原理代碼是運行在線程中的&#xff0c;如果一個進程沒有線程&#xff0c;那么進程就結束了&#xff0c;也就是說一個進程至少要有一個線程當開啟一個Java…

指針分析

int *a; int b 4; a &b; //a:b的地址 //*a 取b地址的值&#xff0c;為4 //&a為指針變量的地址 //*(&a)為指針變量儲存的地址 即為a int **b &a; //b為指針變量a的地址 //*b為指針變量a所儲存的地址 //改變*b(指針變量所儲存的地址)即改變了*b的值轉載于:http…

live server插件怎么用_分享幾個我日常使用的VS Code插件

在這篇文章中&#xff0c;我想介紹一下自己日常使用中最喜歡的Visual Studio Code擴展。大多數時候&#xff0c;我用VS Code編寫的是JavaScript應用程序(標準JavaScript、React、Angular、NodeJS……各式各樣)。Bracket Pair Colorizer 2這個擴展很不錯&#xff0c;可以幫助我搞…

Xtrabackup數據全備份與快速搭建從服務器

Percona Xtrabackup可以說是一個完美的數據備份工具。特別是當數據庫的容量達到了一定數量級的時候且存在單表達到幾十G的數據量&#xff0c; 很難容忍一些邏輯備份的漫長時間。如單個數據庫約200G&#xff0c;單表最大為120G&#xff0c;mysqldump邏輯備份的時間長達20多小時。…

簡單的java方法_Java簡單實用方法一

整理以前的筆記&#xff0c;在學習Java時候,經常會用到一些方法。雖然簡單但是經常使用。因此做成筆記&#xff0c;方便以后查閱這篇博文先說明構造和使用這些方法。1&#xff0c;判斷String類型數據是否為空String類型的數據為空&#xff0c;主要為等于null或”“那么只要判斷…

Android應用程序開發

第一章 Android應用初體驗 1.1應用基礎 activity是Android SDK中Activity類的一個具體實例&#xff0c;負責管理用戶與信息屏的交互。 應用的功能是通過編寫一個個Activity子類來實現的。 布局定義了一系列用戶界面對象以及它們顯示在屏幕上的位置。組成布局的定義保存在XML文件…