jhipster前后端分離

僅適用于jhipster5.1.0

分離前端和API服務(wù)器

介紹

JHipster是一個(gè)“全椥堤#”開(kāi)發(fā)工具,其目標(biāo)是使您可以有效地使用前端代碼(Angular / React)和后端代碼(Spring Boot)。

但是,通常需要將前端代碼和后端代碼分開(kāi),這通常是因?yàn)樗鼈兪怯刹煌膱F(tuán)隊(duì)開(kāi)發(fā)的加酵,并且具有不同的生命周期拳喻。

Pleae指出,這不是JHipster的默認(rèn)工作方式:這并不復(fù)雜猪腕,并且效果很好冗澈,但這是一個(gè)高級(jí)主題。如果您剛剛開(kāi)始使用JHipster陋葡,我們建議您首先使用我們的標(biāo)準(zhǔn)工作方式亚亲。

僅生成前端或后端應(yīng)用程序

您可以選擇僅生成JHipster后端或JHipster前端應(yīng)用程序。在生成時(shí)腐缤,這僅是選擇標(biāo)志的問(wèn)題捌归,這些標(biāo)志在我們的應(yīng)用程序生成文檔中進(jìn)行了描述:

  • jhipster --skip-client 只會(huì)生成一個(gè)后端應(yīng)用程序(這通常是JHipster微服務(wù))
  • jhipster --skip-server 只會(huì)生成一個(gè)前端應(yīng)用程序

目錄布局

JHipster使用標(biāo)準(zhǔn)的Maven目錄布局。在后端上工作時(shí)岭粤,您只需閱讀Maven標(biāo)準(zhǔn)目錄布局文檔惜索。

在前端工作時(shí),您需要知道兩個(gè)目錄:

  • src/main/webapp 是開(kāi)發(fā)客戶端應(yīng)用程序的地方
  • target/www 是您的客戶端應(yīng)用程序?qū)⒈淮虬奈恢?/li>

如果您有分別在前端和后端工作的團(tuán)隊(duì)剃浇,則有兩種解決方案:

  • 兩個(gè)團(tuán)隊(duì)可以從事同一個(gè)項(xiàng)目巾兆。由于目錄是分開(kāi)的,因此團(tuán)隊(duì)之間不會(huì)有太多沖突虎囚。為了使事情變得更加清潔角塑,兩個(gè)團(tuán)隊(duì)可以在不同的分支機(jī)構(gòu)工作。
  • 前端代碼可以存儲(chǔ)在特定的Git項(xiàng)目中淘讥,然后作為Git子模塊導(dǎo)入到主后端項(xiàng)目中圃伶。這將需要移動(dòng)客戶端構(gòu)建腳本,但這是一個(gè)簡(jiǎn)單的重構(gòu)蒲列。

HTTP請(qǐng)求路由和緩存

一旦前端和后端分離留攒,問(wèn)題將是如何處理HTTP請(qǐng)求:

  • 所有API調(diào)用都將使用/api前綴。如果您使用的是Angular嫉嘀,則配置中還會(huì)SERVER_API_URL定義一個(gè)特定的常量,該常量webpack.common.js可以豐富此前綴魄揉。例如剪侮,您可以"http://api.jhipster.tech:8081/"用作后端API服務(wù)器(如果執(zhí)行此操作,請(qǐng)閱讀下面有關(guān)CORS的文檔)洛退。
  • 調(diào)用/服務(wù)靜態(tài)資產(chǎn)(從前端)瓣俯,不應(yīng)由瀏覽器緩存。
  • 對(duì)/app(包含客戶端應(yīng)用程序)和/content(包含靜態(tài)內(nèi)容兵怯,如圖像和CSS)的調(diào)用應(yīng)在生產(chǎn)中進(jìn)行緩存彩匕,因?yàn)檫@些資產(chǎn)是經(jīng)過(guò)哈希處理的。

使用BrowserSync

dev模式下媒区,JHipster使用BrowserSync來(lái)熱重載前端應(yīng)用程序驼仪。BrowserSync具有一個(gè)代理(這是其文檔)掸犬,該代理會(huì)將請(qǐng)求從路由/api到后端服務(wù)器(默認(rèn)為http://127.0.0.1:8080)。

這僅在dev模式下有效绪爸,但這是從前端訪問(wèn)不同API服務(wù)器的非常有效的方法湾碎。

使用CORS

CORS(跨域請(qǐng)求共享)允許訪問(wèn)具有相同前端的不同后端服務(wù)器,而無(wú)需配置代理奠货。

這是一個(gè)易于使用的解決方案介褥,但是在生產(chǎn)中可能不太安全。

JHipster提供了開(kāi)箱即用的CORS配置:

使用NGinx

分離前端代碼和后端代碼的另一種解決方案是使用代理服務(wù)器喉前。這在生產(chǎn)中很常見(jiàn),有些團(tuán)隊(duì)也在開(kāi)發(fā)中使用了該技術(shù)王财。

此配置將根據(jù)您的特定用例進(jìn)行更改卵迂,因此生成器無(wú)法自動(dòng)進(jìn)行此配置,這在下面的可用配置下绒净。

創(chuàng)建一個(gè)src/main/docker/nginx.ymlDocker Compose文件:

version: '2'
services:
  nginx:
    image: nginx:1.13-alpine
    volumes:
    - ./../../../target/www:/usr/share/nginx/html
    - ./nginx/site.conf:/etc/nginx/conf.d/default.conf
    ports:
    - "8000:80"

該Docker映像將配置NGinx服務(wù)器见咒,該服務(wù)器從讀取靜態(tài)資產(chǎn)target/www:這是默認(rèn)情況下生成JHipster前端應(yīng)用程序的位置。在生產(chǎn)中挂疆,您可能為此有一個(gè)特定的文件夾改览。

它還讀取./nginx/site.conf文件:這是NGinx特定的配置文件。這是一個(gè)示例site.conf

server {
    listen 80;
    index index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;

    location / {
        root /usr/share/nginx/html;
    }
    location /api {
        proxy_pass http://api.jhipster.tech:8081/api;
    }
    location /management {
        proxy_pass http://api.jhipster.tech:8081/management;
    }
    location /v2 {
       proxy_pass http://api.jhipster.tech:8081/v2;
    }
    location /swagger-ui {
        proxy_pass http://api.jhipster.tech:8081/swagger-ui;
    }
    location /swagger-resources {
        proxy_pass http://api.jhipster.tech:8081/swagger-resources;
    }
}

此配置意味著:

  • NGinx將在端口上運(yùn)行 80
  • 它將讀取文件夾中的靜態(tài)資產(chǎn)/usr/share/nginx/html缤言,并且
  • 它將作為從代理/apihttp://api.jhipster.tech:8081/api

根據(jù)您的特定需求宝当,此配置將需要進(jìn)行一些調(diào)整,但對(duì)于大多數(shù)應(yīng)用程序來(lái)說(shuō)胆萧,這應(yīng)該是一個(gè)足夠好的起點(diǎn)庆揩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市跌穗,隨后出現(xiàn)的幾起案子订晌,更是在濱河造成了極大的恐慌,老刑警劉巖蚌吸,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锈拨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡羹唠,警方通過(guò)查閱死者的電腦和手機(jī)奕枢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)娄昆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人验辞,你說(shuō)我怎么就攤上這事稿黄。” “怎么了跌造?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵杆怕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我壳贪,道長(zhǎng)陵珍,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任违施,我火速辦了婚禮互纯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘磕蒲。我一直安慰自己留潦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布辣往。 她就那樣靜靜地躺著兔院,像睡著了一般。 火紅的嫁衣襯著肌膚如雪站削。 梳的紋絲不亂的頭發(fā)上坊萝,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音许起,去河邊找鬼十偶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播五芝,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼狮崩!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起伦乔,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎董习,沒(méi)想到半個(gè)月后烈和,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皿淋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年招刹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恬试。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疯暑,死狀恐怖训柴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妇拯,我是刑警寧澤幻馁,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站越锈,受9級(jí)特大地震影響仗嗦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜甘凭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一稀拐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丹弱,春花似錦德撬、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至泛鸟,卻和暖如春蝠咆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背北滥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工刚操, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人再芋。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓菊霜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親济赎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鉴逞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容