将Nuxt.js、Vue.js和Laravel项目高效整合部署需要综合考虑前后端分离、API通信、部署环境和性能优化等因素。以下是一个详细的整合部署方案:
在整合之前,确保项目结构清晰,前后端分离: - 前端: - Nuxt.js 作为服务端渲染(SSR)框架,用于构建动态页面。 - Vue.js 用于构建单页面应用(SPA)或组件。 - 后端: - Laravel 提供 RESTful API 或 GraphQL API,处理业务逻辑和数据存储。
推荐的项目结构:
project/
├── frontend/ # Nuxt.js + Vue.js 项目
│ ├── nuxt.config.js
│ ├── pages/
│ ├── components/
│ ├── store/
│ └── ...
├── backend/ # Laravel 项目
│ ├── app/
│ ├── routes/
│ ├── database/
│ └── ...
├── docker/ # Docker 配置文件(可选)
└── ...
@nuxtjs/axios
模块调用 Laravel API。javascript
// nuxt.config.js
export default {
modules: ['@nuxtjs/axios'],
axios: {
baseURL: process.env.API_BASE_URL || 'http://localhost:8000/api', // Laravel API 地址
},
};
.env
文件管理环境变量。process.env
访问环境变量。env()
函数访问环境变量。php
// Laravel CORS 配置(安装 barryvdh/laravel-cors 包)
return [
'paths' => ['api/*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['http://localhost:3000'], // Nuxt.js 地址
'allowed_headers' => ['*'],
];
配置示例(Nginx):
server {
listen 80;
server_name yourdomain.com;
# Nuxt.js 前端
location / {
proxy_pass http://localhost:3000; # Nuxt.js 服务地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# Laravel API
location /api {
proxy_pass http://localhost:8000; # Laravel 服务地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
示例 docker-compose.yml
:
version: '3'
services:
frontend:
image: node:16
working_dir: /app
volumes:
- ./frontend:/app
ports:
- "3000:3000"
command: npm run dev
backend:
image: php:8.1-fpm
working_dir: /app
volumes:
- ./backend:/app
ports:
- "8000:8000"
command: php artisan serve --host=0.0.0.0 --port=8000
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
nuxt/image
模块优化图片加载。nuxt.config.js
中的 build
选项,启用代码分割和压缩。示例 GitHub Actions 配置:
name: Deploy Nuxt.js + Laravel
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy Nuxt.js
run: |
cd frontend
npm install
npm run build
npm run start
- name: Deploy Laravel
run: |
cd backend
composer install
php artisan migrate --force
php artisan serve --host=0.0.0.0 --port=8000
通过以上方案,您可以高效整合并部署 Nuxt.js、Vue.js 和 Laravel 项目,确保系统稳定性和性能。