### React
まず、reactで実装したコードをbuildする
$ npm run build
すると、build/static/js にjsファイル一群ができるので、その中からmain.*.jsをコピーする
axumのルートディレクトリにstaticフォルダを作成して、./static/js/script.js にbuildされたjsのスクリプトを貼り付ける。
### axum側
dependencyに tower-httpを追加
tower-http = { version = “0.6.2”, features = [“fs”] }
templatesのhtmlからjsファイルを読み込めるように、ルーティングで読み込めるようにする
use tower_http::services::{ServeDir, ServeFile};
#[tokio::main]
async fn main() {
let serve_dir = ServeDir::new("static").not_found_service(ServeFile::new("static"));
let app = Router::new()
.route("/", get(handler_index))
.nest_service("/static", serve_dir.clone())
.fallback_service(serve_dir.clone());
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000")
.await
.unwrap();
axum::serve(listener, app).await.unwrap();
}
templates/index.html
<body> <h1>Hello world</h1> <div id="root">wait...</div> <script src="./js/script.js"></script> </body> </html>

なるほど、いけますね。あとは作り込みのみ!