Node.js简介及vue项目与Node.js通信方法

目录

  • [一. 基础介绍](#一. 基础介绍)
  • [二. 应用场景](#二. 应用场景)
  • [三. Vue 与 Node.js 的通信方法](#三. Vue 与 Node.js 的通信方法)
    • [1. 通过 HTTP 请求通信(主流)](#1. 通过 HTTP 请求通信(主流))
    • [2. 通过 WebSocket 实现实时通信](#2. 通过 WebSocket 实现实时通信)
    • [3. 通过 GraphQL 进行通信](#3. 通过 GraphQL 进行通信)

一. 基础介绍

定义:

  • Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建高性能、可扩展的网络应用程序。

特点:

  • 非阻塞 I/O 模型:Node.js 的事件循环机制使其能够高效地处理大量并发连接,适合开发高并发的网络应用程序。
  • 异步编程:Node.js 基于事件驱动和非阻塞 I/O 的异步编程模型,能够高效地处理 I/O 密集型任务,如文件操作、网络请求等。
  • 丰富的生态系统:拥有庞大的 npm(Node Package Manager)生态系统,提供了众多的第三方模块,方便开发者快速构建各种功能的应用程序。

二. 应用场景

  • Web 后端开发:Node.js 可以用来构建 Web 服务器,处理 HTTP 请求和响应,与前端框架(如 Vue)配合,实现前端和后端的分离开发。
  • 实时应用:利用 WebSocket 和 Socket.io 等模块,Node.js 能够快速开发实时通信应用,如在线聊天、实时协作编辑、实时通知等。
  • 爬虫应用:Node.js 提供了丰富的 HTTP 请求库(如 axios、request 等),可以轻松实现网络爬虫,抓取网页数据。
  • 脚本任务:可以编写各种脚本任务,如自动化构建脚本、自动化测试脚本等,提高开发效率。
  • 物联网:Node.js 的实时性和并发处理能力使其在物联网领域也有广泛应用,可以用来处理大量设备的连接和数据传输。

三. Vue 与 Node.js 的通信方法

1. 通过 HTTP 请求通信(主流)

基本原理 :Vue 前端通过 HTTP 请求(如 GET、POST、PUT、DELETE 等)与 Node.js 后端进行数据交互。
常用库:

Axios:Vue 常用的 HTTP 请求库,支持浏览器和 Node.js 环境,提供链式调用和 Promise 支持,方便处理异步请求。
实现步骤:

在 Vue 前端组件中,使用 Axios 发送 HTTP 请求:

javascript 复制代码
// 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:

javascript 复制代码
// 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');
});

2. 通过 WebSocket 实现实时通信

基本原理 :WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,Vue 前端和 Node.js 后端可以通过 WebSocket 实现实时双向通信。
常用库

socket.io:提供了一个简单易用的 WebSocket 实现,支持自动重连、断线重传等功能。
实现步骤

在 Vue 前端引入 socket.io-client:

javascript 复制代码
// 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

javascript 复制代码
// 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');
});

3. 通过 GraphQL 进行通信

基本原理 :GraphQL 是一种用于 API 的查询语言,允许客户端精确地请求所需的数据,减少数据传输的冗余。
常用库

apollo-client 和 apollo-server:分别用于 Vue 前端和 Node.js 后端实现 GraphQL 的客户端和服务端。
实现步骤

在 Vue 前端使用 apollo-client:

javascript 复制代码
// 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:

javascript 复制代码
// 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');
});
相关推荐
passerby606134 分钟前
完成前端时间处理的另一块版图
前端·github·web components
掘了41 分钟前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅44 分钟前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅1 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅2 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment2 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅2 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊2 小时前
jwt介绍
前端
爱敲代码的小鱼2 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
吹牛不交税2 小时前
admin.net-v2 框架使用笔记-netcore8.0/10.0版
vue.js·.netcore