游乐游手机版
首页/编程语言/文章详情

在Ubuntu系统下使用Node.js实现前后端分离的详细步骤

时间:2026-06-13 06:43
在Ubuntu系统上,安装Node js和npm,创建后端Express与前端React项目,开发API接口和页面组件,配置CORS解决跨域,最后用PM2守护后端服务、Nginx托管前端静态文件,实现完整的前后端分离部署。

在Ubuntu系统上搭建Node.js前后端分离项目并不复杂,它更像一套标准的搭建流程。只要明确了前后端各自的职责,按照步骤配置环境、编写代码并启动服务,即可顺利完成。接下来详细拆解具体操作步骤。

Ubuntu Node.js如何实现前后端分离

1. 安装Node.js及npm组件

首先需要搭建基础环境。在终端中执行以下命令即可完成Node.js和npm的安装。

sudo apt update
sudo apt install nodejs npm

安装后建议验证版本,确保环境配置正确再进入下一步。

2. 规划项目目录结构

前后端分离的核心在于各模块独立管理代码。因此需要分别为前端和后端创建独立的项目目录。名称可自由设定,但应保持逻辑清晰,例如使用backendfrontend

构建后端项目目录

mkdir backend
cd backend
npm init -y
npm install express body-parser cors

此处选用Express框架作为后端服务基础,它是一个轻量灵活且高效的Node.js Web框架,非常适合快速构建API接口。

构建前端项目目录

mkdir frontend
cd frontend
npm init -y
npm install react react-dom axios

前端采用React框架,并搭配axios库处理HTTP请求。当然,也可根据实际需求替换为Vue或Angular,整体架构类似。

3. 实现后端API接口

后端项目的核心职责是提供API接口。以下示例创建了一个简单的GET接口,返回JSON数据。若熟悉Express,代码逻辑一目了然。

// backend/index.js
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');

const app = express();
const port = 3000;

app.use(cors());
app.use(bodyParser.json());

app.get('/api/data', (req, res) => {
  res.json({ message: 'Hello from backend!' });
});

app.listen(port, () => {
  console.log(`Server running on https://localhost:${port}`);
});

关键在于前端发送请求后,后端需正确解析并返回数据。后续可根据业务需要添加更多路由及数据库操作。

4. 开发前端展示层

前端部分使用React编写一个简单页面,通过axios从后端获取数据并渲染展示。这是典型的数据获取与渲染流程。

// frontend/src/App.js
import React from 'react';
import axios from 'axios';

function App() {
  const [message, setMessage] = React.useState('');

  React.useEffect(() => {
    axios.get('https://localhost:3000/api/data')
      .then(response => {
        setMessage(response.data.message);
      })
      .catch(error => {
        console.error('There was an error!', error);
      });
  }, []);

  return (
    

{message}

); } export default App;

注意请求地址需匹配后端服务地址(https://localhost:3000/api/data)。端口或路径不一致会导致请求失败,这是前后端联调时常见问题。

5. 启动并运行项目

完成开发与配置后,即可启动项目。需要分别启动后端和前端服务,建议先启动后端。

启动后端服务

cd backend
node index.js

启动前端服务

cd frontend
npm start

后端默认监听3000端口,前端开发服务器通常使用3001端口(若3000被占用则自动切换)。两者都启动后,访问前端地址即可看到后端返回的消息。

6. 跨域配置(可选)

若前后端部署在不同域名或端口,浏览器同源策略会阻止跨域请求。此时需在后端配置CORS中间件,放行前端地址的请求。

// backend/index.js
const cors = require('cors');
app.use(cors({
  origin: 'https://localhost:3001', // 前端应用的地址
}));

开发阶段可放宽限制,生产环境则需严格指定允许跨域的来源。

7. 项目部署上线

开发结束后,需将项目部署到服务器以供外部访问。前后端可部署在同一台或不同服务器,常见方案是使用Nginx托管前端静态资源,后端则通过PM2进程管理器守护Node.js服务。

部署后端

将后端代码上传至服务器,使用PM2启动并保持进程持续运行。

npm install -g pm2
pm2 start index.js --name backend

部署前端

前端需执行构建命令生成静态文件(通常位于build目录),上传至服务器后,使用Nginx配置站点根目录指向该文件夹。

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        root /path/to/frontend/build;
        index index.html;
        try_files $uri /index.html;
    }
}

try_files指令至关重要,它确保单页应用路由正确运行——用户刷新或直接访问子路径时,Nginx始终返回index.html,由前端路由处理。

从环境搭建、代码开发到最终部署,完成以上流程即掌握了一套完整的Node.js前后端分离方案。后续还可集成数据库、用户认证、API版本管理等,进一步完善项目。

来源:https://www.yisu.com/ask/17292735.html
上一篇Ubuntu系统下JS动态加载的完整实现方法与步骤详解 下一篇Ubuntu中如何使用Node.js进行日志管理
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
利用Debian系统提升JSP并发性能的实用技巧与策略
编程语言 · 2026-06-13

利用Debian系统提升JSP并发性能的实用技巧与策略

从JDK Tomcat配置、线程池调优、JVM参数优化、数据库连接池与缓存、操作系统内核参数调整以及应用代码优化六个维度,系统提升Debian上JSP应用的并发处理能力,具体参数需结合实际硬件与负载微调。

多种在Debian系统上优化JSP响应时间的方法与技巧
编程语言 · 2026-06-13

多种在Debian系统上优化JSP响应时间的方法与技巧

在Debian系统上优化JSP响应时间需综合多种策略,包括硬件升级(增加内存、使用SSD、多核CPU)、Tomcat配置调优(NIO NIO2连接器、HTTP 2、线程池)、JVM参数调整(堆内存、G1GC)、预编译与缓存JSP、数据库优化(SQL索引、HikariCP连接池)、引入Redis缓存、使用CDN及GZIP压缩、调整TCP内核参数,并通过Prom

如何在Debian上调试JSP代码
编程语言 · 2026-06-13

如何在Debian上调试JSP代码

在Debian系统上调试JSP时,需搭建JDK与Tomcat环境,配置JDWP调试端口,通过IDE远程调试并设置断点,同时辅以Tomcat日志、System out或日志框架输出信息,以及浏览器开发者工具检查前端问题。

Debian系统iptables与其他防火墙协同配置方法
编程语言 · 2026-06-13

Debian系统iptables与其他防火墙协同配置方法

在Debian系统中,iptables需与硬件防火墙、云ACL等协同。通过规划规则集、配置默认DROP策略、按接口分治、测试验证、开启日志、持久化保存及定期维护,确保各防火墙职责清晰,实现安全与可用性平衡。

Ubuntu系统的dhclient如何与其他DHCP客户端共存配置完整指南
编程语言 · 2026-06-13

Ubuntu系统的dhclient如何与其他DHCP客户端共存配置完整指南

在Ubuntu系统中,多个DHCP客户端可通过分配不同网络接口、使用不同子网,或采用dhcpcd、ifupdown等方式实现共存。需注意各接口IP地址范围必须避免重叠;dhclient释放与重获IP存在空窗期,而dhcpcd和ifupdown对多接口支持更稳定,且可无间断获取IP。