Heim >PHP-Framework >Laravel >Einführung in die serverseitige Konfiguration der Laravel+vue-Front-End- und Back-End-Trennung
Das Unternehmen verfügt über Front-End- und Back-End-Ingenieure. Die Front-End-Ingenieure verwenden Vue für die Entwicklung, und als PHP-Mitarbeiter verwenden wir Laravel für die Entwicklung. Dann entsteht das Problem. Wir können nicht zulassen, dass Front-End-Ingenieure auch Laravel-Mix verwenden und unter dem Laravel-Framework entwickeln.
Das ursprüngliche Modell weist einen hohen Kopplungsgrad auf, was die Wartung und Erweiterung erschwert. Daher ist die Reduzierung der Kopplung zwischen Modulen für die spätere Wartung und Erweiterung sehr hilfreich.
Nachdem wir die grundlegenden Konzepte und Ideen verstanden haben, sollten wir anfangen, Dinge zu tun. Doch bevor es losgeht, muss man sich überlegen, ob das aktuelle Projekt für eine Front-End- und Backend-Trennung geeignet ist? Welche Art von Projekten eignen sich für die Front-End- und Backend-Trennung? Denn wenn das Projekt nicht geeignet ist, erhöht die Trennung von Front-End und Back-End zweifellos den Arbeitsaufwand, wenn es sich beispielsweise nur um die Entwicklung eines reinen Back-End-Managementsystems plus Schnittstellenzugriff und die Anzahl der Projekte handelt Besuche nicht groß sind, ist ein Modell wie laravel-admin voll funktionsfähig. Hier liegt ein Missverständnis vor, das heißt, der Front-End-Code und der Back-End-Code werden getrennt entwickelt, was bedeutet, dass Front-End und Back-End getrennt sind (dies scheint etwas im Widerspruch zu dem zu stehen, was gesagt wird). über). Die sogenannte Trennung von Front-End und Back-End dient nicht nur der Entkopplung, sondern auch der Erleichterung der späteren Wartung und Erweiterung. Im Wesentlichen handelt es sich um:
Das Front-End-Projekt und das Back-End-Projekt sind zwei Projekte müssen unabhängig bereitgestellt werden. Zwei unterschiedliche Projekte, zwei unterschiedliche Codebasen, unterschiedliche Entwickler. Front-End- und Back-End-Ingenieure müssen sich auf interaktive Schnittstellen einigen, um eine parallele Entwicklung zu erreichen. Nach der Entwicklung ist eine unabhängige Bereitstellung erforderlich. Das Front-End ruft die Back-End-Restful-API über HTTP-Anfragen auf. Das Front-End muss sich nur auf den Stil der Seite und das Parsen und Rendern dynamischer Daten konzentrieren, während sich das Back-End auf spezifische Geschäftslogik konzentriert. (Quelle: Warum sollten Front-End und Back-End getrennt werden?) Welche Vor- und Nachteile hat die Front-End- und Backend-Trennung?
Angenommen, unsere lokale Front-End- und Back-End-Entwicklung ist abgeschlossen, müssen wir sie zum Testen in die Online-Umgebung stellen. Wie gehen wir also zur Bereitstellung und Konfiguration zum Server? Empfohlene Tutorials: „
Laravel-Tutorial“
Starten
Das von uns abgeschlossene Projekt sieht beispielsweise so aus:
vue
und das Backend verwendet laravel+jwt +dingo hat die API-Schnittstelle erstellt und laravel-admin
als Back-End-Managementsystem verwendet. lnmp
mit einem Klick installiert haben, konfigurieren Sie nginx so, dass Root direkt auf das öffentliche Verzeichnis des Projekts verweist Verwenden Sie einfach den Pagoda Panel
-Code>, es ist in wenigen Minuten fertig. Für unsere ethischen Programmierer nennt man das „Click to Stop“. Das Backend kann direkt mit dem Domainnamen +/admin genutzt werden. Aber jetzt, da wir Vue haben, müssen wir den Hauptdomänennamen shop.test für die Front-End-Nutzung verwenden. Wir werden sagen: „Lehrer You“, „Lehrer Niu“, „Lehrer Liu, du folgst keiner Kampfethik“, und „Lehrer You“ sagt „Entschuldigung“. , ich werde es verwenden. vue
,后端使用laravel+jwt+dingo
构建了api接口,以及使用了laravel-admin
作为后端管理系统。
按照传统配置后端的方法,只配置后台管理系统,我们一键安装lnmp
后,nginx配置一下,root直接指向项目的public目录,或者干脆用宝塔面板
Versuchen Sie es
server{ listen 80; server_name vue.shop.test;#域名 index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/vue.shop.test/dist;#根目录 ...}
#意思就是只要含有"api"的请求,都转发到接口地址去请求 location /api { add_header 'Access-Control-Allow-Origin' '*'; proxy_pass http://shop.test/api; }Back-End-Projektkonfiguration domänenübergreifend:
location / { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';}
Speichern Sie das Frontend und greifen Sie darauf zu: vue.shop.test, auf das normal zugegriffen werden kann.
这个就相对简单很多,不需要第二个域名,效率也高的多。
例如,我的后端项目位于/www/wwwroot/test_adimin,前端项目是/www/wwwroot/test_vue,我们只需要在nginx配置里再配置监听另外一个端口就可以:
server{ listen 80; server_name shop.test; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/test_adimin/public; ...}server{ listen 8080; server_name shop.test:8080; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/test_vue/dist; location / { try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404 index index.html index.htm; # try_files $uri $uri/ /index.html; } #这里要写,不然会报: #We’re sorry but XXX doesn’t work properly without JavaScript enabled #网上说的把history改为hash就可以,那个不行,不适用于现在的情况。 location /api { add_header 'Access-Control-Allow-Origin' '*'; proxy_pass http://shop.test/api; } ...}
配置成功保存,访问shop.test:8080 速度杠杠的。
1.前后端开发人员各司其职,各自部署,相互不干涉,提高开发效率。
2.能够实现解耦,使得业务更加清晰,减少业务复杂程度。
1.增加开发、部署难度;
2.提高了对接和沟通成本;
3.不是所有的项目都适合前后端分离,需要框架设计者、开发者自己去判断
Das obige ist der detaillierte Inhalt vonEinführung in die serverseitige Konfiguration der Laravel+vue-Front-End- und Back-End-Trennung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!