定义:
特点:
基本原理:Vue 前端通过 HTTP 请求(如 GET、POST、PUT、DELETE 等)与 Node.js 后端进行数据交互。
常用库:
Axios:Vue 常用的 HTTP 请求库,支持浏览器和 Node.js 环境,提供链式调用和 Promise 支持,方便处理异步请求。
实现步骤:
在 Vue 前端组件中,使用 Axios 发送 HTTP 请求:
// Vue 组件
async function fetchData() {
try {
const response = await axios.get('http://localhost:3000/api/data');
console.log(response.data);
} catch (error) {
console.error(error);
}
}
在 Node.js 后端使用 Express.js 创建 API:
// Node.js 后端
const express = require('express');
const app = express();
app.get('/api/data', (req, res) => {
res.json({ message: 'Hello from Node.js!' });
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
基本原理:WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,Vue 前端和 Node.js 后端可以通过 WebSocket 实现实时双向通信。
常用库:
socket.io:提供了一个简单易用的 WebSocket 实现,支持自动重连、断线重传等功能。
实现步骤:
在 Vue 前端引入 socket.io-client:
// Vue 组件
import io from 'socket.io-client';
const socket = io('http://localhost:3000');
socket.on('connect', () => {
console.log('Connected to server');
});
socket.on('message', (data) => {
console.log('Received message:', data);
});
socket.emit('message', 'Hello from client');
在 Node.js 后端使用 socket.io:
// Node.js 后端
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require('socket.io');
const io = new Server(server);
io.on('connect', (socket) => {
console.log('Client connected');
socket.on('message', (data) => {
console.log('Received message:', data);
io.emit('message', 'Hello from server');
});
});
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
基本原理:GraphQL 是一种用于 API 的查询语言,允许客户端精确地请求所需的数据,减少数据传输的冗余。
常用库:
apollo-client 和 apollo-server:分别用于 Vue 前端和 Node.js 后端实现 GraphQL 的客户端和服务端。
实现步骤:
在 Vue 前端使用 apollo-client:
// Vue 组件
import { ApolloClient, InMemoryCache, gql } from '@apollo/client';
const client = new ApolloClient({
uri: 'http://localhost:4000/graphql',
cache: new InMemoryCache()
});
client.query({
query: gql`
query GetBooks {
books {
id
title
author
}
}
`
}).then((response) => {
console.log(response.data);
});
在 Node.js 后端使用 apollo-server 和 express:
// Node.js 后端
const { ApolloServer, gql } = require('apollo-server-express');
const express = require('express');
const typeDefs = gql`
type Book {
id: ID!
title: String
author: String
}
type Query {
books: [Book]
}
`;
const resolvers = {
Query: {
books: () => [
{ id: '1', title: 'The Great Gatsby', author: 'F. Scott Fitzgerald' },
{ id: '2', title: 'To Kill a Mockingbird', author: 'Harper Lee' }
]
}
};
const server = new ApolloServer({ typeDefs, resolvers });
const app = express();
server.applyMiddleware({ app, path: '/graphql' });
app.listen(4000, () => {
console.log('Server is running on port 4000');
});