繁体   English   中英

Spring Boot + React

[英]Spring Boot + React

介绍

我正在尝试实现非常简单的CRUD应用程序,它将是一个只有几个Rest Controller的单页应用程序。

问题

我在实现过程中遇到的问题是,即使我用React JS编写的脚本是使用webpack成功构建的,并注入到静态页面“ index.html”中,也不显示内容。

内容正确显示的情况:

  • 与webpack-dev-server分开运行,
  • 自行在任何浏览器中打开index.html页面

如果不是:

  • 当我尝试从IDE作为带有控制器映射的Spring Boot Application运行它时,我一直只得到空白页。

项目照片

项目结构

这是我的HomeController,负责映射到“ /”下的静态页面

@Controller
public class HomeController {

@RequestMapping(value = "/", method = RequestMethod.GET)
public String welcome() {
    return "index";
 }
}

这是我的index.html页面:

<!DOCTYPE html>
<html lang="en">

<head>
   <meta charset="utf-8"/>
   <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
   <meta name="viewport" content="width=device-width, initial-scale=1"/>
   <meta name="description" content=""/>
   <meta name="author" content=""/>
   <title>React</title>
   <!-- Bootstrap Core CSS -->
   <link
       href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.6/
       cerulean/bootstrap.min.css" rel="stylesheet"/>
<!-- Custom Fonts -->
   <link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" 
       type="text/css"/>
   <link href="http://fonts.googleapis.com/css?
        family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" 
        rel="stylesheet" type="text/css"/>
</head>

<body>
   <div id="react"></div>
   <script src="../static/built/bundle.js"></script>
</body>

</html>

可能最后有用的最后一件事是app.js

import React from "react";
import ReactDOM from "react-dom";
import { Router, Route, IndexRoute, hashHistory } from "react-router";

import Archives from "./pages/Archives";
import Featured from "./pages/Featured";
import Layout from "./pages/Layout";
import Settings from "./pages/Settings";

const app = document.getElementById('react');

ReactDOM.render(
  <Router history={hashHistory}>
    <Route path="/" component={Layout}>
      <IndexRoute component={Featured}/>
      <Route path="archives(/:article)" name="archives" component={Archives}/>
      <Route path="settings" name="settings" component={Settings}/>
    </Route>
  </Router>,
app);

反射

首先,我想这可能是在路由器和控制器中使用相同URL的问题,但更改它们后仍无法解决问题。 所以我没有任何想法。

使用Spring Boot提供的默认值时, bundle.jsbundle.js的路径中包含/static/

index.html将脚本标签更新为:

<script src="/built/bundle.js"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM