You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Babel与React在Express应用中的集成?

手把手帮你配置Express + React + JSX环境

别担心,新手搭环境踩坑太正常了!我来一步步帮你把用Express CLI创建的Pug项目改成支持React和JSX的环境,咱们一步步来:

1. 确认/安装必要依赖

首先先确保你装了这些核心依赖,如果还没装,直接跑下面的命令:

npm install react react-dom
npm install --save-dev @babel/core @babel/preset-env @babel/preset-react babel-loader webpack webpack-cli

2. 配置Babel

在项目根目录创建 .babelrc 文件,写入Babel的预设配置,让它能转译React和ES6+代码:

{
  "presets": ["@babel/preset-env", "@babel/preset-react"]
}

3. 配置Webpack

同样在根目录创建 webpack.config.js,用来打包你的React/JSX代码:

const path = require('path');

module.exports = {
  entry: './src/index.jsx', // 你的React入口文件
  output: {
    path: path.resolve(__dirname, 'public/js'), // 打包后的文件放到public/js下
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/, // 匹配js和jsx文件
        exclude: /node_modules/, // 排除node_modules
        use: 'babel-loader' // 用babel-loader处理
      }
    ]
  },
  resolve: {
    extensions: ['.js', '.jsx'] // 让webpack能识别jsx后缀的文件
  }
};

4. 调整项目结构

在项目根目录创建 src 文件夹,然后在里面创建你的React组件,比如:

  • src/index.jsx(入口文件):
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
  • src/App.jsx(示例组件):
import React from 'react';

function App() {
  return (
    <div className="app">
      <h1>Hello React + Express!</h1>
      <p>这是用JSX写的可复用组件</p>
    </div>
  );
}

export default App;

5. 修改Pug模板,引入React打包文件

打开 views/index.pug,添加一个React挂载的根元素,并引入打包后的js文件:

extends layout

block content
  h1= title
  p Welcome to #{title}
  <!-- 给React挂载的根元素 -->
  div#root
  <!-- 引入打包后的React代码 -->
  script(src='/js/bundle.js')

6. 添加打包脚本

打开 package.json,在 scripts 里添加打包命令:

"scripts": {
  "start": "node ./bin/www",
  "build": "webpack --mode production", // 生产环境打包
  "dev:build": "webpack --mode development --watch" // 开发环境监听文件变化自动打包
}

7. 测试运行

  1. 先执行打包命令:
npm run build
  1. 然后启动Express服务:
npm start
  1. 打开浏览器访问 http://localhost:3000,就能看到React组件渲染的内容啦!

可能踩的坑

  • 如果遇到Babel版本兼容问题,确保所有@babel开头的依赖版本一致
  • 别忘了在webpack配置里添加resolve.extensions,否则webpack找不到jsx文件
  • 打包后的文件路径要和Pug里引入的路径对应,public是Express的静态资源目录,所以/js/bundle.js对应public/js/bundle.js

内容的提问来源于stack exchange,提问作者Orion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:52:08