Vue与Node.js整合开发实战经验分享
发表时间: 2024-12-17 19:00
在现代Web开发中,前后端分离已成为主流架构模式。Vue.js作为前端框架,Node.js作为后端运行环境,两者的结合为全栈开发提供了完美的解决方案。本文将分享实际项目中的经验和最佳实践。
project/├── client/ # 前端项目│ ├── src/│ ├── components/│ └── views/├── server/ # 后端项目│ ├── controllers/│ ├── models/│ └── routes/└── docker/ # 容器配置
// 封装axios请求import axios from 'axios'const request = axios.create({ baseURL: '/api', timeout: 5000})request.interceptors.request.use(config => { // 添加token const token = localStorage.getItem('token') if (token) { config.headers.Authorization = `Bearer ${token}` } return config})request.interceptors.response.use( response => response.data, error => { // 统一错误处理 if (error.response.status === 401) { router.push('/login') } return Promise.reject(error) })
// Express中间件处理跨域app.use(cors({ origin: process.env.CLIENT_URL, credentials: true}))// 路由中间件const authMiddleware = async (req, res, next) => { try { const token = req.headers.authorization?.split(' ')[1] if (!token) { throw new Error('未授权') } const decoded = jwt.verify(token, process.env.JWT_SECRET) req.user = decoded next() } catch (error) { res.status(401).json({ message: '认证失败' }) }}
# 前端DockerfileFROM node:16WORKDIR /appCOPY package*.json ./RUN npm installCOPY . .RUN npm run build
// Pinia store设计export const useUserStore = defineStore('user', { state: () => ({ userInfo: null, token: null }), actions: { async login(credentials) { const { data } = await api.login(credentials) this.userInfo = data.user this.token = data.token } }})
// 全局错误处理app.config.errorHandler = (err, vm, info) => { console.error(err) ElMessage.error(err.message)}
Vue.js与Node.js的结合为全栈开发提供了强大的解决方案。关键点包括:
通过这些实践,可以构建出高质量的全栈应用。建议开发者在实际项目中根据具体需求灵活运用这些经验。
希望这篇文章能帮助开发者在Vue.js和Node.js全栈开发道路上少走弯路,构建出更好的应用。