#actix-web #index-file #web-services #routes #web-apps #static-file #js

actix-web-nextjs

用于托管静态导出Next.js应用程序的Actix Web服务

3个版本

0.2.7 2024年8月12日
0.2.6 2024年8月9日

#491 in HTTP服务器

Download history 369/week @ 2024-08-02 266/week @ 2024-08-09

每月下载 635次

MIT/Apache

22KB
378

actix-web-nextjs

actix-web-nextjs是一个用于托管静态导出Next.js应用程序的Actix Web服务。这是从actix-web-lab中的SPA功能派生出来的,并增加了对Next.js动态路由的支持。

概述

actix-web-nextjs服务使托管静态导出的Next.js应用程序变得简单。主要特性包括

  • 索引文件回退:自动为未知路由提供指定的索引文件,确保SPA导航的流畅。
  • 静态文件处理:高效地从一个指定的目录提供静态资源。
  • 动态路由支持:将Next.js的动态路由(如/pet/dog/husky)转换为/pet/[petType]/[breed].html

工作原理

服务搜索由Next.js生成的_buildManifest.js文件,并从中构建一个路由树。例如,请求/pet/dog/husky解析为/pet/[petType]/[breed].html。当发起一个新的带有特定路由的请求时,服务会尝试根据动态路由结构查找并提供服务对应的文件。如果找不到文件,则默认提供索引文件。

示例用法

use actix_web::App;
use actix_web_nextjs::spa;

let app = App::new()
    // API routes and other services
    .service(
        spa()
            .index_file("dist/index.html")
            .static_resources_mount("dist")
            .static_resources_location("/")
            .finish()
    );

如何安装

actix-web-nextjs添加到您的依赖项

[dependencies]
actix-web-nextjs = "0.2.7"

actix-web-nextjs公开以下功能标志

  • wildcards:启用对通配符路由的支持(默认启用)。

许可证

根据您的选择,在Apache许可证2.0或MIT许可证下授权。

除非您明确说明,否则您提交的任何贡献,根据Apache-2.0许可证定义,将如上双重授权,没有任何额外的条款或条件。

依赖项

~17–29MB
~516K SLoC