前后端分离是一种现代Web开发架构,它将前端和后端的开发解耦,允许开发团队在独立的代码库中并行开发,并通过API进行通信。前端主要负责用户界面和用户交互,而后端处理数据逻辑、数据库交互、业务逻辑等。
安装 Vue CLI:
npm install -g @vue/cli
创建 Vue 项目:
vue create my-vue-app
cd my-vue-app
安装 Axios:
Axios 是一个基于 Promise 的 HTTP 客户端,用于与后端 API 通信。
npm install axios
在 Vue 中使用 Axios:
在 Vue 组件中通过 Axios 请求数据:
<template>
<div>
<h1>Users</h1>
<ul>
<li v-for="user in users" :key="user.id">{{ user.name }}</li>
</ul>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
users: []
};
},
created() {
axios.get('https://jsonplaceholder.typicode.com/users')
.then(response => {
this.users = response.data;
})
.catch(error => {
console.error(error);
});
}
}
</script>
在开发阶段,可以通过 vue.config.js
配置代理服务器来解决跨域问题:
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:5000', // 后端 API 服务器地址
changeOrigin: true,
pathRewrite: { '^/api': '' }
}
}
}
};
创建 React 项目:
npx create-react-app my-react-app
cd my-react-app
安装 Axios:
npm install axios
在 React 中使用 Axios:
在 React 组件中通过 Axios 请求数据:
import React, { useState, useEffect } from 'react';
import axios from 'axios';
function Users() {
const [users, setUsers] = useState([]);
useEffect(() => {
axios.get('https://jsonplaceholder.typicode.com/users')
.then(response => {
setUsers(response.data);
})
.catch(error => {
console.error(error);
});
}, []);
return (
<div>
<h1>Users</h1>
<ul>
{users.map(user => (
<li key={user.id}>{user.name}</li>
))}
</ul>
</div>
);
}
export default Users;
在开发阶段,可以通过 setupProxy.js
配置代理服务器来解决跨域问题:
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(
'/api',
createProxyMiddleware({
target: 'http://localhost:5000', // 后端 API 服务器地址
changeOrigin: true,
pathRewrite: { '^/api': '' }
})
);
};
前端打包:
使用 Vue.js 或 React 的构建工具打包前端代码,生成静态文件:
npm run build
打包后,生成的文件通常放在 dist
(Vue)或 build
(React)目录下。
部署后端:
后端可以部署到云服务器、VPS 或使用 Docker 容器化部署。
前端部署:
可以将前端静态文件部署到 CDN、静态服务器(如 Nginx)、或者与后端同一服务器上的指定目录。
配置服务器:
使用 Nginx 或 Apache 进行反向代理,将 API 请求转发到后端服务器,将静态资源请求指向前端文件所在目录。