フロントエンドとリアエンドの分離 。 では、フロントエンドとバックエンドの分離とは何でしょうか?今日は具体的な定義については説明しませんが、ご興味がございましたら、次の記事をご覧ください: フロントエンドとバックエンドの分離とは正確には何ですか? , フロントエンドとバックエンドの分離の実践についての反省
基本的な概念と考え方を理解した後、行動を開始する必要があります。しかし、始める前に、現在のプロジェクトがフロントエンドとバックエンドの分離に適しているかどうかを考える必要があります。フロントエンドとバックエンドの分離に適しているのはどのようなプロジェクトですか?
プロジェクトが適切でない場合、フロントエンドとバックエンドの分離は間違いなく作業負荷を増加させるためです。たとえば、それが単なるバックエンド管理システムの開発であり、インターフェースへのアクセスと組み合わせている場合、プロジェクトの訪問数が多くない場合は、laravel-admin のようなモデルが完全に機能します。 ここで誤解があるかもしれません。つまり、フロントエンドのコードとバックエンドのコードは別々に開発されるということです。これは、フロントエンドとバックエンドが分離されていることを意味します(これは、内容と少し矛盾しているようです)と上で言われています)。フロントエンドとバックエンドのいわゆる分離は、分離のためだけでなく、その後のメンテナンスや拡張を容易にするためでもあります。本質的に、フロントエンド プロジェクトとバックエンド プロジェクトは 2 つのプロジェクトであり、デプロイする必要があります。独立して。 2 つの異なるプロジェクト、2 つの異なるコード ベース、異なる開発者。フロントエンドとバックエンドのエンジニアは、並行開発を実現するために対話型インターフェイスについて合意する必要があります。開発後は、独立したデプロイメントが必要です。フロントエンドは、http リクエストを通じてバックエンドの RESTful API を呼び出します。フロントエンドはページのスタイルと動的データの解析とレンダリングのみに重点を置く必要があり、バックエンドは特定のビジネス ロジックに重点を置きます (出典: なぜフロントエンドとバックエンドは同じである必要があるのか)フロントエンドとバックエンドを分離することの利点と欠点は何ですか?)。
フロントエンドとバックエンドのローカル開発が完了したと仮定すると、テストのためにそれをオンライン環境に置く必要があります。では、展開と構成のためにサーバーにどのように移動するのでしょうか? 関連チュートリアルの推奨事項: 「
laravel チュートリアル
を使用し、バックエンドは
laravel jwt dingo を使用して API インターフェイスを構築し、
laravel-admin を使用します。バックエンド管理システムとして。
バックエンドを構成する従来の方法によると、バックグラウンド管理システムのみが構成されます。ワンクリックで lnmp
をインストールした後、nginx を構成し、ルートをプロジェクトのパブリック ディレクトリに直接指定します。または単に
Pagoda パネル を使用すれば、数分で完了します。格闘技を話す私たちプログラマにとって、これは
「クリックして停止」 と呼ばれます。バックエンドは、ドメイン名 /admin で直接使用できます。
しかし、vue ができたので、フロントエンドで使用するメイン ドメイン名 shop.test を使用する必要があります。You 先生、Niu 先生、Liu 先生、武道倫理に従わない、You 先生と言います。 「ごめんなさい、使わせていただきます」と言う。 したがって、効果を実現するには 2 つの方法があります:
必要なのはフロントエンド プロジェクトの nginx のルート ディレクトリに移動します。ターゲット フォルダーをポイントするだけです。例:
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; }
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';}
这个就相对简单很多,不需要第二个域名,效率也高的多。
例如,我的后端项目位于/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.不是所有的项目都适合前后端分离,需要框架设计者、开发者自己去判断
以上がlaravel+vueのフロントエンドとバックエンド分離のサーバー側構成の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。